diff --git a/draft/library/wsf_js_widget/kernel/grid/wsf_repeater_control.e b/draft/library/wsf_js_widget/kernel/grid/wsf_repeater_control.e index 7aa6e61f..0ab198c9 100644 --- a/draft/library/wsf_js_widget/kernel/grid/wsf_repeater_control.e +++ b/draft/library/wsf_js_widget/kernel/grid/wsf_repeater_control.e @@ -19,13 +19,16 @@ inherit feature {NONE} -- Initialization make_repeater (n: STRING; a_datasource: WSF_DATASOURCE [G]) + local + p: WSF_PAGINATION_CONTROL [G] do make_multi_control (n) datasource := a_datasource datasource.set_on_update_agent (agent update) if attached {WSF_PAGABLE_DATASOURCE [G]} a_datasource as ds then - create pagination_control.make_paging (n + "_paging", ds) - add_control (pagination_control) + create p.make_paging (n + "_paging", ds) + add_control (p) + pagination_control := p end end @@ -53,7 +56,6 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management Result.put (datasource.state, "datasource") end - feature -- Rendering render_item (item: G): STRING diff --git a/draft/library/wsf_js_widget/kernel/navbar/wsf_navbar_control.e b/draft/library/wsf_js_widget/kernel/navbar/wsf_navbar_control.e index e26244b8..e8f35f75 100644 --- a/draft/library/wsf_js_widget/kernel/navbar/wsf_navbar_control.e +++ b/draft/library/wsf_js_widget/kernel/navbar/wsf_navbar_control.e @@ -23,10 +23,12 @@ feature {NONE} -- Initialization --Initialize do make_multi_control (n) + active_set := false add_class ("navbar navbar-inverse navbar-fixed-top") create nav.make_with_tag_name (control_name + "_nav", "ul") create nav_right.make_with_tag_name (control_name + "_nav_right", "ul") nav.add_class ("nav navbar-nav") + nav_right.add_class ("nav navbar-nav navbar-right") end make_navbar_with_brand (n, b: STRING) @@ -62,17 +64,43 @@ feature -- Rendering feature -- Change set_active (tab: INTEGER) + -- Sets the given tab as current active tab require - tab >= 0 and tab < nav.controls.count + nav_right.controls.count + tab >= 1 and tab <= tab_count and not active_set do - if tab < nav.controls.count then + if tab <= nav.controls.count then nav.controls.i_th (tab).add_class ("active") else nav_right.controls.i_th (tab - nav.controls.count).add_class ("active") end + active_set := true end - add_list_element_right (c: WSF_STATELESS_CONTROL) + add_dropdown (l: WSF_STATELESS_CONTROL; d: WSF_STATELESS_CONTROL) + -- Add dropdown menu (in li tag with class dropdown) to navbar + local + li: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL] + do + create li.make_with_tag_name (control_name + "_link" + nav.controls.count.out, "li") + li.add_class ("dropdown") + li.add_control (l) + li.add_control (d) + add_element (li) + end + + add_dropdown_right (l: WSF_STATELESS_CONTROL; d: WSF_STATELESS_CONTROL) + -- Add dropdown menu (in li tag with class dropdown) to right aligned part of navbar + local + li: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL] + do + create li.make_with_tag_name (control_name + "_link" + nav.controls.count.out, "li") + li.add_class ("dropdown") + li.add_control (l) + li.add_control (d) + add_element_right (li) + end + + add_list_element_right (l: WSF_STATELESS_CONTROL) -- Add element in li tag to right aligned part of navbar local name: STRING @@ -81,33 +109,24 @@ feature -- Change name := control_name + "_rightlink"; name := name + nav_right.controls.count.out create li.make_with_tag_name (name, "li") - li.add_control (c) + li.add_control (l) add_element_right (li) end - add_list_element (c: WSF_STATELESS_CONTROL) + add_list_element (l: WSF_STATELESS_CONTROL) -- Add element in li tag to main nav local li: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL] do create li.make_with_tag_name (control_name + "_link" + nav.controls.count.out, "li") - li.add_control (c) + li.add_control (l) add_element (li) end add_element_right (c: WSF_STATELESS_CONTROL) -- Add element to right aligned part of navbar - local - right: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL] do - if attached nav_right as r then - right := r - else - create right.make_with_tag_name (control_name + "_rightnav", "ul") - right.add_class ("nav navbar-nav navbar-right") - nav_right := right - end - right.add_control (c) + nav_right.add_control (c) end add_element (c: WSF_STATELESS_CONTROL) @@ -116,8 +135,19 @@ feature -- Change nav.add_control (c) end +feature -- Access + + tab_count: INTEGER + -- Current sum of the number of items in left and right navbar + do + Result := nav.controls.count + nav_right.controls.count + end + feature -- Properties + active_set: BOOLEAN + -- This flag is set once a tab has been set as active tab + brand: detachable STRING -- Optional brand of the navbar diff --git a/draft/library/wsf_js_widget/kernel/slider/wsf_image_slider_control.e b/draft/library/wsf_js_widget/kernel/slider/wsf_image_slider_control.e index 51607549..9eacd0d4 100644 --- a/draft/library/wsf_js_widget/kernel/slider/wsf_image_slider_control.e +++ b/draft/library/wsf_js_widget/kernel/slider/wsf_image_slider_control.e @@ -64,7 +64,7 @@ feature -- Change local caption_control: detachable WSF_STATELESS_CONTROL do - if attached caption as c then + if attached caption as c and then not c.is_empty then caption_control := create {WSF_BASIC_CONTROL}.make_with_body ("p", "", c) end add_image_with_caption_control (src, alt, caption_control) @@ -72,16 +72,8 @@ feature -- Change add_image_with_caption_control (src, alt: STRING; caption: detachable WSF_STATELESS_CONTROL) -- Add a new image to the slider, with specified url, alternative text and caption element - local - item: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL] do - create item.make_multi_control (control_name + "_item" + slide_wrapper.controls.count.out) - item.add_class ("item") - item.add_control (create {WSF_BASIC_CONTROL}.make_with_body_class ("img", "src=%"" + src + "%" alt=%"" + alt + "%"", "", "")) - if attached caption as c then - item.add_control (c) - end - add_control (item) + add_control (create {WSF_BASIC_CONTROL}.make_with_body_class ("img", "src=%"" + src + "%" alt=%"" + alt + "%"", "", ""), Void) end add_image (src, alt: STRING) @@ -90,17 +82,24 @@ feature -- Change add_image_with_caption (src, alt, "") end - add_control (c: WSF_STATELESS_CONTROL) + add_control (c: WSF_STATELESS_CONTROL; caption: detachable WSF_STATELESS_CONTROL) -- Add a new control to the slider local cl: STRING + item: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL] do + create item.make_multi_control (control_name + "_item" + slide_wrapper.controls.count.out) + item.add_class ("item") + item.add_control (c) + if attached caption as capt then + item.add_control (capt) + end cl := "" if slide_wrapper.controls.count = 0 then cl := "active" - c.add_class (cl) + item.add_class (cl) end - slide_wrapper.add_control (c) + slide_wrapper.add_control (item) list.add_control (create {WSF_BASIC_CONTROL}.make_with_body_class ("li", "data-target=%"#" + control_name + "%" data-slide-to=%"" + list.controls.count.out + "%"", cl, "")); end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_multi_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_multi_control.e index 6c281c0b..003e9878 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_multi_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_multi_control.e @@ -120,19 +120,17 @@ feature -- Rendering across controls as c loop - Result := c.item.render + Result + Result := Result + c.item.render end Result := render_tag (Result, "") end feature -- Change - add_control (c: detachable G) + add_control (c: G) -- Add a control to this multi control do - if attached c as d then - controls.put_front (d) - end + controls.extend (c) end feature -- Properties diff --git a/examples/widgetapp/application.e b/examples/widgetapp/application.e index 89808dc4..46c6b659 100644 --- a/examples/widgetapp/application.e +++ b/examples/widgetapp/application.e @@ -133,7 +133,7 @@ feature -- Execution slider_demo (request: WSF_REQUEST; response: WSF_RESPONSE) local - page: IMAGE_SLIDER_PAGE + page: SLIDER_PAGE do -- To send a response we need to setup, the status code and -- the response headers. diff --git a/examples/widgetapp/base_page.e b/examples/widgetapp/base_page.e index 957b231e..1ef57640 100644 --- a/examples/widgetapp/base_page.e +++ b/examples/widgetapp/base_page.e @@ -24,8 +24,8 @@ feature navbar.add_list_element (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"/%"", "Home")) navbar.add_list_element (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"/grid%"", "Grid")) navbar.add_list_element (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"/repeater%"", "Repeater")) - navbar.add_list_element (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"/slider%"", "Image Slider")) - navbar.add_list_element_right (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"#%"", "About")) + navbar.add_list_element (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"/slider%"", "Slider")) + navbar.add_list_element_right (create {WSF_BASIC_CONTROL}.make_with_body ("a", "href=%"/about%"", "About")) if not attached get_parameter ("ajax") then control.add_control (navbar) end diff --git a/examples/widgetapp/grid_page.e b/examples/widgetapp/grid_page.e index 95895d4a..d21396e1 100644 --- a/examples/widgetapp/grid_page.e +++ b/examples/widgetapp/grid_page.e @@ -10,9 +10,9 @@ class inherit BASE_PAGE - redefine - initialize_controls - end + redefine + initialize_controls + end create make @@ -22,16 +22,16 @@ feature initialize_controls do Precursor - control.add_control (create {WSF_BASIC_CONTROL}.make_with_body("h1","","Grid Demo")) + control.add_control (create {WSF_BASIC_CONTROL}.make_with_body ("h1", "", "Grid Demo")) create datasource.make_news create search_query.make_autocomplete ("query", create {GOOGLE_AUTOCOMPLETION}.make) search_query.add_class ("form-control") search_query.set_change_event (agent change_query) control.add_control (search_query) - control.add_control (create {WSF_BASIC_CONTROL}.make_with_body("h2","","Results")) - create grid.make_grid ("mygrid", <>, datasource) + control.add_control (create {WSF_BASIC_CONTROL}.make_with_body ("h2", "", "Results")) + create grid.make_grid ("mygrid", <>, datasource) control.add_control (grid) + navbar.set_active (2) end change_query diff --git a/examples/widgetapp/image_slider_page.e b/examples/widgetapp/image_slider_page.e index 54f8c3df..cb23c691 100644 --- a/examples/widgetapp/image_slider_page.e +++ b/examples/widgetapp/image_slider_page.e @@ -5,7 +5,7 @@ note revision: "$Revision$" class - IMAGE_SLIDER_PAGE + SLIDER_PAGE inherit @@ -20,14 +20,20 @@ create feature -- Implementation initialize_controls + local + form: WSF_FORM_CONTROL do Precursor create slider.make_slider ("myslider") + create form.make_form_control ("sliderform") + form.add_control (create {WSF_FORM_ELEMENT_CONTROL[STRING]}.make_form_element ("Input", create {WSF_INPUT_CONTROL}.make_input ("sliderformtext", "Test"))) + slider.add_control (form, Void) slider.add_image ("http://www.placesmustseen.com/wp-content/uploads/2013/01/paris-eiffel-tower.jpg", "Eiffel Tower") slider.add_image ("http://24.media.tumblr.com/0fcec9a7dde5b405a46b6fcda1ffad0c/tumblr_mtagkyYVIT1st5lhmo1_1280.jpg", "car") slider.add_image ("http://25.media.tumblr.com/d9e791508eb9a532aa7f258fa4e0fedc/tumblr_mtag5zve3g1st5lhmo1_1280.jpg", "landscape") control.add_control (create {WSF_BASIC_CONTROL}.make_with_body ("h1", "", " Image Slider Demo")) control.add_control (slider) + navbar.set_active (4) end process diff --git a/examples/widgetapp/repeater_page.e b/examples/widgetapp/repeater_page.e index 4c93959c..eba46107 100644 --- a/examples/widgetapp/repeater_page.e +++ b/examples/widgetapp/repeater_page.e @@ -31,6 +31,7 @@ feature control.add_control (create {WSF_BASIC_CONTROL}.make_with_body ("h2", "", "Results")) create repeater.make_repeater ("myrepeater", datasource) control.add_control (repeater) + navbar.set_active (3) end change_query