From cc7d268610306644fe8a60129ed233d1a57dc933 Mon Sep 17 00:00:00 2001 From: Jocelyn Fiat Date: Wed, 26 Mar 2014 10:18:02 +0100 Subject: [PATCH] Code improvement Cosmetic (comments, names, formatting) --- .../autocompletion/wsf_autocompletion.e | 19 +++- .../wsf_simple_autocompletion.e | 37 +++++--- .../kernel/grid/wsf_datasource.e | 14 ++- .../wsf_js_widget/kernel/grid/wsf_entity.e | 15 +++- .../kernel/grid/wsf_grid_column.e | 15 +++- .../kernel/grid/wsf_pagable_datasource.e | 20 +++-- .../kernel/grid/wsf_pagination_control.e | 19 +++- .../kernel/grid/wsf_repeater_control.e | 35 +++++--- .../kernel/input/wsf_autocomplete_control.e | 24 +++-- .../kernel/input/wsf_checkbox_control.e | 33 ++++--- .../kernel/input/wsf_file_control.e | 22 ++++- .../kernel/input/wsf_input_control.e | 46 +++++++--- .../kernel/navbar/wsf_navbar_control.e | 46 ++++++---- .../kernel/progressbar/wsf_progress_control.e | 20 ++++- .../kernel/slider/wsf_slider_control.e | 35 +++++--- .../kernel/validator/wsf_email_validator.e | 18 +++- .../kernel/validator/wsf_filesize_validator.e | 19 ++-- .../kernel/validator/wsf_max_validator.e | 16 +++- .../kernel/validator/wsf_validator.e | 17 +++- .../kernel/webcontrol/wsf_basic_control.e | 40 +++++---- .../kernel/webcontrol/wsf_button_control.e | 23 +++-- .../kernel/webcontrol/wsf_control.e | 47 ++++++---- .../webcontrol/wsf_dynamic_multi_control.e | 14 ++- .../webcontrol/wsf_form_element_control.e | 58 +++++++----- .../kernel/webcontrol/wsf_html_control.e | 12 ++- .../kernel/webcontrol/wsf_json_object.e | 12 ++- .../kernel/webcontrol/wsf_multi_control.e | 49 +++++----- .../kernel/webcontrol/wsf_page_control.e | 90 ++++++++++--------- .../kernel/webcontrol/wsf_stateless_control.e | 69 +++++++++----- .../webcontrol/wsf_stateless_multi_control.e | 31 +++++-- .../kernel/webcontrol/wsf_value_control.e | 12 ++- draft/library/wsf_js_widget/license.lic | 10 +++ examples/widgetapp/application.e | 13 +++ .../googlenews/google_news_datasource.e | 21 +++-- examples/widgetapp/sample_page.e | 2 +- .../{image_slider_page.e => slider_page.e} | 2 +- 36 files changed, 684 insertions(+), 291 deletions(-) create mode 100644 draft/library/wsf_js_widget/license.lic rename examples/widgetapp/{image_slider_page.e => slider_page.e} (95%) diff --git a/draft/library/wsf_js_widget/kernel/autocompletion/wsf_autocompletion.e b/draft/library/wsf_js_widget/kernel/autocompletion/wsf_autocompletion.e index 19fb44dc..fad23efb 100644 --- a/draft/library/wsf_js_widget/kernel/autocompletion/wsf_autocompletion.e +++ b/draft/library/wsf_js_widget/kernel/autocompletion/wsf_autocompletion.e @@ -1,20 +1,31 @@ note description: "Summary description for {WSF_AUTOCOMPLETION}." - author: "" date: "$Date$" revision: "$Revision$" deferred class WSF_AUTOCOMPLETION -feature -- Access +feature -- Query - autocompletion (input: STRING_32): JSON_ARRAY + autocompletion (input: READABLE_STRING_GENERAL): JSON_ARRAY -- JSON array of suggestions that fit the specific input deferred end - template: detachable STRING_32 +feature -- Access + + template: detachable READABLE_STRING_32 -- Customizable template +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/autocompletion/wsf_simple_autocompletion.e b/draft/library/wsf_js_widget/kernel/autocompletion/wsf_simple_autocompletion.e index 842f84c1..9971a9aa 100644 --- a/draft/library/wsf_js_widget/kernel/autocompletion/wsf_simple_autocompletion.e +++ b/draft/library/wsf_js_widget/kernel/autocompletion/wsf_simple_autocompletion.e @@ -8,7 +8,6 @@ class WSF_SIMPLE_AUTOCOMPLETION inherit - WSF_AUTOCOMPLETION create @@ -16,24 +15,33 @@ create feature {NONE} -- Initialization - make (l: ITERABLE [STRING_32]) - -- Initialize + make (a_list: ITERABLE [READABLE_STRING_32]) + -- Initialize with collection `a_list'. do - list := l + list := a_list end +feature -- Access + + list: ITERABLE [READABLE_STRING_32] + -- List containing suggestions + feature -- Implementation - autocompletion (input: STRING_32): JSON_ARRAY - -- Implementation + autocompletion (a_input: READABLE_STRING_GENERAL): JSON_ARRAY + -- local o: WSF_JSON_OBJECT + l_lowered_input: READABLE_STRING_GENERAL + l_lowered_item: READABLE_STRING_GENERAL do create Result.make_array - across + l_lowered_input := a_input.as_lower + across list as c loop - if c.item.as_lower.has_substring (input.as_lower) then + l_lowered_item := c.item.as_lower + if l_lowered_item.has_substring (l_lowered_input) then create o.make o.put_string (c.item, "value") Result.add (o) @@ -41,7 +49,14 @@ feature -- Implementation end end - list: ITERABLE [STRING_32] - -- List containing suggestions - +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/grid/wsf_datasource.e b/draft/library/wsf_js_widget/kernel/grid/wsf_datasource.e index 00a4d1f3..f6d7b2eb 100644 --- a/draft/library/wsf_js_widget/kernel/grid/wsf_datasource.e +++ b/draft/library/wsf_js_widget/kernel/grid/wsf_datasource.e @@ -10,13 +10,13 @@ deferred class feature --Event handling set_on_update_agent (f: PROCEDURE [ANY, TUPLE]) - --Set update listener + -- Set update listener do on_update_agent := f end update - --Trigger update listener + -- Trigger update listener do if attached on_update_agent as a then a.call (Void) @@ -76,4 +76,14 @@ feature -- Properties on_update_agent: detachable PROCEDURE [ANY, TUPLE] +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/grid/wsf_entity.e b/draft/library/wsf_js_widget/kernel/grid/wsf_entity.e index 865fbe00..23125b94 100644 --- a/draft/library/wsf_js_widget/kernel/grid/wsf_entity.e +++ b/draft/library/wsf_js_widget/kernel/grid/wsf_entity.e @@ -6,12 +6,21 @@ note deferred class WSF_ENTITY - feature -- Access - item alias "[]"(a_field: READABLE_STRING_GENERAL): detachable ANY + item alias "[]" (a_field: READABLE_STRING_GENERAL): detachable ANY -- Value for field item `a_field'. deferred - end + end +note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/grid/wsf_grid_column.e b/draft/library/wsf_js_widget/kernel/grid/wsf_grid_column.e index 569dcc40..6141904c 100644 --- a/draft/library/wsf_js_widget/kernel/grid/wsf_grid_column.e +++ b/draft/library/wsf_js_widget/kernel/grid/wsf_grid_column.e @@ -25,13 +25,14 @@ feature -- Render -- Return the rendered column cell for a specific entity (row) do if attached e.item (field_name) as data then - Result := data.out + --| FIXME: .out may not be the best rendering for objects... + Result := data.out else Result := "[VOID]" end end -feature -- Properties +feature -- Access header: STRING_32 @@ -41,4 +42,14 @@ feature -- Properties field_name: STRING_32 +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/grid/wsf_pagable_datasource.e b/draft/library/wsf_js_widget/kernel/grid/wsf_pagable_datasource.e index 8bda1722..f9c41810 100644 --- a/draft/library/wsf_js_widget/kernel/grid/wsf_pagable_datasource.e +++ b/draft/library/wsf_js_widget/kernel/grid/wsf_pagable_datasource.e @@ -1,6 +1,5 @@ note - description: "Summary description for {WSF_PAGABLE}." - author: "" + description: "Summary description for {WSF_PAGABLE_DATASOURCE}." date: "$Date$" revision: "$Revision$" @@ -8,7 +7,6 @@ deferred class WSF_PAGABLE_DATASOURCE [G -> WSF_ENTITY] inherit - WSF_DATASOURCE [G] redefine state, @@ -16,16 +14,16 @@ inherit update end -feature --Event handling +feature -- Event handling set_on_update_page_agent (f: PROCEDURE [ANY, TUPLE]) - --Set paging update listener + -- Set paging update listener do on_update_page_agent := f end update - --Trigger update listeners + -- Trigger update listeners do Precursor if attached on_update_page_agent as a then @@ -81,4 +79,14 @@ feature -- Properties on_update_page_agent: detachable PROCEDURE [ANY, TUPLE] +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/grid/wsf_pagination_control.e b/draft/library/wsf_js_widget/kernel/grid/wsf_pagination_control.e index 755d8f1e..900e7234 100644 --- a/draft/library/wsf_js_widget/kernel/grid/wsf_pagination_control.e +++ b/draft/library/wsf_js_widget/kernel/grid/wsf_pagination_control.e @@ -48,16 +48,19 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management feature --Event handling - handle_callback (cname: LIST[STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) -- Handle goto/next/prev events do - if Current.control_name.same_string (cname[1]) then + if control_name.same_string_general (cname.first) then if event.same_string ("next") then datasource.set_page (datasource.page + 1) elseif event.same_string ("prev") then datasource.set_page (datasource.page - 1) elseif event.same_string ("goto") then - if attached {STRING_32}event_parameter as p and then attached p.to_integer as i then + if + attached {READABLE_STRING_GENERAL} event_parameter as p and then + attached p.to_integer as i + then datasource.set_page (i) end end @@ -96,4 +99,14 @@ feature -- Properties datasource: WSF_PAGABLE_DATASOURCE [G] +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end 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 f3ec9b93..669040ce 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 @@ -20,7 +20,7 @@ inherit feature {NONE} -- Initialization - make ( a_datasource: WSF_DATASOURCE [G]) + make (a_datasource: WSF_DATASOURCE [G]) local p: WSF_PAGINATION_CONTROL [G] do @@ -28,7 +28,7 @@ feature {NONE} -- Initialization datasource := a_datasource datasource.set_on_update_agent (agent update) if attached {WSF_PAGABLE_DATASOURCE [G]} a_datasource as ds then - create p.make ( ds) + create p.make (ds) add_control (p) pagination_control := p end @@ -61,41 +61,52 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management feature -- Rendering render_item (item: G): STRING_32 - --Render item + -- Render item deferred end render_body: STRING_32 - --Render Body + -- Render Body do - Result := "" + create Result.make_empty across - datasource.data as entity + datasource.data as ic loop - Result.append (render_item (entity.item)) + Result.append (render_item (ic.item)) end end render: STRING_32 - --Render repeater inclusive paging if paging is available + -- Render repeater inclusive paging if paging is available local content: STRING_32 do content := render_tag_with_tagname ("div", render_body, "", "repeater_content") - Result := "" + create Result.make_empty across - controls as c + controls as ic loop - Result := c.item.render + Result + -- CHECK: Prepend ? or Append? + Result.prepend (ic.item.render) end -- Fix generator name since the user will extend this class to define item_render Result := render_tag_with_generator_name ("WSF_REPEATER_CONTROL", content + Result, "") end -feature -- Properties +feature -- Access datasource: WSF_DATASOURCE [G] pagination_control: detachable WSF_PAGINATION_CONTROL [G] +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/input/wsf_autocomplete_control.e b/draft/library/wsf_js_widget/kernel/input/wsf_autocomplete_control.e index c6390509..a735ce1b 100644 --- a/draft/library/wsf_js_widget/kernel/input/wsf_autocomplete_control.e +++ b/draft/library/wsf_js_widget/kernel/input/wsf_autocomplete_control.e @@ -35,7 +35,7 @@ feature {NONE} -- Initialization end end - make_with_agent (c: FUNCTION [ANY, TUPLE [STRING_32], JSON_ARRAY]) + make_with_agent (c: FUNCTION [ANY, TUPLE [READABLE_STRING_GENERAL], JSON_ARRAY]) -- Initialize with autocompletion function do make_input ("") @@ -53,20 +53,34 @@ feature -- State feature -- Callback - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) + -- do Precursor {WSF_INPUT_CONTROL} (cname, event, event_parameter) - if cname [1].same_string (control_name) and event.same_string ("autocomplete") then + if + cname.first.same_string (control_name) and + event.same_string ("autocomplete") + then state_changes.put (create_json_list.item ([text]), "suggestions") end end feature -- Properties - create_json_list: FUNCTION [ANY, TUPLE [STRING_32], JSON_ARRAY] + create_json_list: FUNCTION [ANY, TUPLE [READABLE_STRING_GENERAL], JSON_ARRAY] -- The function which is called to give a list of suggestions to a given user input - template: STRING_32 + template: READABLE_STRING_32 -- The template +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/input/wsf_checkbox_control.e b/draft/library/wsf_js_widget/kernel/input/wsf_checkbox_control.e index 8346cfbf..02a2e833 100644 --- a/draft/library/wsf_js_widget/kernel/input/wsf_checkbox_control.e +++ b/draft/library/wsf_js_widget/kernel/input/wsf_checkbox_control.e @@ -10,7 +10,6 @@ class WSF_CHECKBOX_CONTROL inherit - WSF_VALUE_CONTROL [BOOLEAN] rename make as make_value_control, @@ -23,14 +22,14 @@ create feature {NONE} -- Initialization - make (l, value: STRING_32) - -- Initialize with specified label and value + make (a_label, a_value: STRING_32) + -- Initialize with specified label `a_label' and value `a_value'. require - value_not_empty: not value.is_empty + a_value_not_empty: not a_value.is_empty do make_value_control ("input") - label := l - checked_value := value + label := a_label + checked_value := a_value end feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management @@ -60,12 +59,14 @@ feature --Event handling change_event := e end - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) do - if Current.control_name.same_string (cname [1]) and attached change_event as cevent then - if event.same_string ("change") then - cevent.call (Void) - end + if + control_name.same_string_general (cname.first) and + attached change_event as cevent and then + event.same_string ("change") + then + cevent.call (Void) end end @@ -102,4 +103,14 @@ feature -- Properties change_event: detachable PROCEDURE [ANY, TUPLE] -- Function to be executed on change +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/input/wsf_file_control.e b/draft/library/wsf_js_widget/kernel/input/wsf_file_control.e index d1b84a13..95883664 100644 --- a/draft/library/wsf_js_widget/kernel/input/wsf_file_control.e +++ b/draft/library/wsf_js_widget/kernel/input/wsf_file_control.e @@ -41,11 +41,15 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management local id: detachable STRING_32 do - if attached {JSON_STRING} new_state.item ("file_name") as new_name and attached {JSON_STRING} new_state.item ("file_type") as new_type and attached {JSON_NUMBER} new_state.item ("file_size") as new_size then + if + attached {JSON_STRING} new_state.item ("file_name") as new_name and + attached {JSON_STRING} new_state.item ("file_type") as new_type and + attached {JSON_NUMBER} new_state.item ("file_size") as new_size + then if attached {JSON_STRING} new_state.item ("file_id") as a_id then id := a_id.unescaped_string_32 end - create file.make (new_name.unescaped_string_32, new_type.unescaped_string_32, new_size.item.to_integer_32, id); + create file.make (new_name.unescaped_string_32, new_type.unescaped_string_32, new_size.item.to_integer_32, id) end if attached {JSON_BOOLEAN} new_state.item ("disabled") as a_disabled then disabled := a_disabled.item @@ -73,14 +77,14 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management feature -- Event handling - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) local f_name: detachable STRING_32 f_type: detachable STRING_32 f_size: detachable INTEGER f_id: detachable STRING_32 do - if Current.control_name.same_string (cname [1]) then + if control_name.same_string_general (cname.first) then if attached change_event as cevent and event.same_string ("change") then cevent.call (Void) elseif attached upload_done_event as udevent and event.same_string ("uploaddone") then @@ -214,4 +218,14 @@ feature -- Properties upload_function: detachable FUNCTION [ANY, TUPLE [ITERABLE [WSF_UPLOADED_FILE]], detachable STRING_32] -- Store uploaded file and return server side file id +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/input/wsf_input_control.e b/draft/library/wsf_js_widget/kernel/input/wsf_input_control.e index d723d0f9..6f8a3faf 100644 --- a/draft/library/wsf_js_widget/kernel/input/wsf_input_control.e +++ b/draft/library/wsf_js_widget/kernel/input/wsf_input_control.e @@ -12,7 +12,6 @@ class WSF_INPUT_CONTROL inherit - WSF_VALUE_CONTROL [STRING_32] rename make as make_value_control @@ -62,12 +61,14 @@ feature --Event handling change_event_set: change_event = e end - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) do - if Current.control_name.same_string (cname [1]) and attached change_event as cevent then - if event.same_string ("change") then - cevent.call (Void) - end + if + control_name.same_string_general (cname.first) and + attached change_event as cevent and then + event.same_string ("change") + then + cevent.call (Void) end end @@ -77,12 +78,17 @@ feature -- Rendering local attr: STRING_32 do - attr := "type=%"" + type + "%" value=%"" + text + "%" " - if attached attributes as a then - attr.append (a) + create attr.make (25) + attr.append ("type=%"") + attr.append (type) + attr.append ("%" value=%"") + attr.append (text) + attr.append ("%" ") + if attached attributes as l_attributes then + attr.append (l_attributes) end if disabled then - attr.append ("disabled=%"disabled%" ") + attr.append (" disabled=%"disabled%" ") end Result := render_tag ("", attr) end @@ -107,13 +113,15 @@ feature -- Change if disabled /= b then disabled := b state_changes.replace_with_boolean (disabled, "disabled") + else + check has_key_disabled: (b = False) or else state_changes.has_key ("disabled") end end ensure disabled_set: disabled = b - state_changes_registered: old b /= b implies state_changes.has_key ("disabled") + state_changes_registered: (old b) /= b implies state_changes.has_key ("disabled") end - set_type (t: STRING_32) + set_type (t: READABLE_STRING_32) -- Set the type of this input control (HTML 'type' attribute) do type := t @@ -142,13 +150,23 @@ feature -- Properties disabled: BOOLEAN -- Defines if the input field is editable - text: STRING_32 + text: READABLE_STRING_32 -- Text to be displayed - type: STRING_32 + type: READABLE_STRING_32 -- Type of this input control change_event: detachable PROCEDURE [ANY, TUPLE] -- Procedure to be execued on change +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end 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 68657f83..ab37f61e 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 @@ -5,7 +5,7 @@ note panels can be added to this control. See http://getbootstrap.com/components/#navbar ]" - author: "" + EIS: "name=Bootstrap navbar", "protocol=URI", "src=http://getbootstrap.com/components/#navbar" date: "$Date$" revision: "$Revision$" @@ -27,10 +27,10 @@ create feature {NONE} -- Initialization make - --Initialize + -- Initialize do make_multi_control - active_set := false + active_set := False add_class ("navbar navbar-inverse navbar-fixed-top") create nav.make_with_tag_name ("ul") create nav_right.make_with_tag_name ("ul") @@ -40,13 +40,13 @@ feature {NONE} -- Initialization nav_right.add_class ("nav navbar-nav navbar-right") end - make_with_brand (b: STRING_32) - -- Initialize with specified brand string + make_with_brand (a_brand: READABLE_STRING_32) + -- Initialize with specified `a_brand' string. do make - brand := b + brand := a_brand ensure - brand_set: brand = b + brand_set: brand = a_brand end feature -- Rendering @@ -59,8 +59,8 @@ feature -- Rendering temp := render_tag_with_tagname ("span", "", "", "icon-bar") temp.multiply (3) temp := render_tag_with_tagname ("button", temp, "data-target=%".navbar-collapse%" data-toggle=%"collapse%" type=%"button%"", "navbar-toggle") - if attached brand as b then - temp.append (render_tag_with_tagname ("a", b, "href=%"#%"", "navbar-brand")) + if attached brand as l_brand then + temp.append (render_tag_with_tagname ("a", l_brand, "href=%"#%"", "navbar-brand")) end temp := render_tag_with_tagname ("div", temp, "", "navbar-header") nav_string := nav.render @@ -89,36 +89,36 @@ feature -- Change active_set_set: active_set end - add_list_element_right (l: WSF_STATELESS_CONTROL) + add_list_element_right (a_control: WSF_STATELESS_CONTROL) -- Add element in li tag to right aligned part of navbar local li: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL] do create li.make_with_tag_name ("li") - li.add_control (l) + li.add_control (a_control) add_element_right (li) end - add_list_element (l: WSF_STATELESS_CONTROL) + add_list_element (a_control: 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 ("li") - li.add_control (l) + li.add_control (a_control) add_element (li) end - add_element_right (c: WSF_STATELESS_CONTROL) + add_element_right (a_control: WSF_STATELESS_CONTROL) -- Add element to right aligned part of navbar do - nav_right.add_control (c) + nav_right.add_control (a_control) end - add_element (c: WSF_STATELESS_CONTROL) + add_element (a_control: WSF_STATELESS_CONTROL) -- Add element to main nav do - nav.add_control (c) + nav.add_control (a_control) end feature -- Access @@ -134,7 +134,7 @@ feature -- Properties active_set: BOOLEAN -- This flag is set once a tab has been set as active tab - brand: detachable STRING_32 + brand: detachable READABLE_STRING_32 -- Optional brand of the navbar nav: WSF_STATELESS_MULTI_CONTROL [WSF_STATELESS_CONTROL] @@ -143,4 +143,14 @@ feature -- Properties nav_right: WSF_STATELESS_MULTI_CONTROL [WSF_STATELESS_CONTROL] -- Right nav +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/progressbar/wsf_progress_control.e b/draft/library/wsf_js_widget/kernel/progressbar/wsf_progress_control.e index 732f51a3..0fdf6c37 100644 --- a/draft/library/wsf_js_widget/kernel/progressbar/wsf_progress_control.e +++ b/draft/library/wsf_js_widget/kernel/progressbar/wsf_progress_control.e @@ -59,9 +59,12 @@ feature -- State handling feature -- Event handling - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) do - if cname [1].same_string (control_name) and event.same_string ("progress_fetch") then + if + cname.first.same_string (control_name) and + event.same_string ("progress_fetch") + then state_changes.put_integer (progress_value, "progress") end end @@ -73,6 +76,7 @@ feature -- Rendering p: STRING_32 do p := progress_value.out + -- FIXME: string 32 truncated to string 8 !!! Result := render_tag_with_tagname ("div", "", "role=%"progressbar%" aria-valuenow=%"" + p + "%" aria-valuemin=%"0%" aria-valuemax=%"100%" style=%"width: " + p + "%%;%"", "progress-bar") Result := render_tag (Result, "") end @@ -82,7 +86,7 @@ feature -- Change set_progress (p: INTEGER) -- Set current progress value to specified value. Must be between 0 and 100. Must only be called when no progresssource has been set to this progress control require - no_progress_source: not (attached progress_source) + no_progress_source: progress_source = Void valid_input_value: p >= 0 and p <= 100 do progress := p @@ -116,4 +120,14 @@ feature -- Properties invariant progress_in_range: progress >= 0 and progress <= 100 +note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/slider/wsf_slider_control.e b/draft/library/wsf_js_widget/kernel/slider/wsf_slider_control.e index 7ada4dfb..897d71b5 100644 --- a/draft/library/wsf_js_widget/kernel/slider/wsf_slider_control.e +++ b/draft/library/wsf_js_widget/kernel/slider/wsf_slider_control.e @@ -47,7 +47,7 @@ feature -- State handling feature -- Callback - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) -- Just implementation, nothing special to do here do end @@ -67,18 +67,21 @@ feature -- Rendering feature -- Change - add_image_with_caption (src, alt, caption: STRING_32) + add_image_with_caption (src, alt, a_caption: STRING_32) -- Add a new image to the slider with specified url, alternative text and caption local - caption_control: detachable WSF_STATELESS_CONTROL + caption_control: detachable WSF_BASIC_CONTROL do - if attached caption as c and then not c.is_empty then - caption_control := create {WSF_BASIC_CONTROL}.make_with_body ("p", "", c) + if + a_caption /= Void and then + not a_caption.is_empty + then + create caption_control.make_with_body ("p", "", a_caption) end add_image_with_caption_control (src, alt, caption_control) end - add_image_with_caption_control (src, alt: STRING_32; caption: detachable WSF_STATELESS_CONTROL) + add_image_with_caption_control (src, alt: STRING_32; a_caption: detachable WSF_STATELESS_CONTROL) -- Add a new image to the slider, with specified url, alternative text and caption element do add_control (create {WSF_BASIC_CONTROL}.make_with_body_class ("img", "src=%"" + src + "%" alt=%"" + alt + "%"", "", ""), Void) @@ -90,17 +93,17 @@ feature -- Change add_image_with_caption (src, alt, "") end - add_control (c: WSF_STATELESS_CONTROL; caption: detachable WSF_STATELESS_CONTROL) + add_control (a_control: WSF_STATELESS_CONTROL; a_caption: detachable WSF_STATELESS_CONTROL) -- Add a new control to the slider local cl: STRING_32 item: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL] do - create item.make () + create item.make item.add_class ("item") - item.add_control (c) - if attached caption as capt then - item.add_control (capt) + item.add_control (a_control) + if a_caption /= Void then + item.add_control (a_caption) end cl := "" if slide_wrapper.controls.count = 0 then @@ -119,4 +122,14 @@ feature -- Properties slide_wrapper: WSF_STATELESS_MULTI_CONTROL [WSF_STATELESS_CONTROL] -- List of the single slides +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/validator/wsf_email_validator.e b/draft/library/wsf_js_widget/kernel/validator/wsf_email_validator.e index 3bbdac83..ec62a16d 100644 --- a/draft/library/wsf_js_widget/kernel/validator/wsf_email_validator.e +++ b/draft/library/wsf_js_widget/kernel/validator/wsf_email_validator.e @@ -2,10 +2,12 @@ note description: "[ Validator implementation which make sure that the input has the format of an valid email address. This is just a very - basic implementation that tests if the given input contains - a '@'. + basic implementation that tests if the given input contains a '@'. + + This is a simple checker, it does not handle all the cases. ]" - author: "" + EIS: "name=Application Techniques for Checking and Transformation of Names RFC3696", "protocol=URI", "src=http://tools.ietf.org/html/rfc3696#section-3" + EIS: "name=Email address (wikipedia)", "protocol=URI", "src=http://en.wikipedia.org/wiki/Email_address" date: "$Date$" revision: "$Revision$" @@ -30,4 +32,14 @@ feature {NONE} -- Initialization make_regexp_validator ("^.*@.*$", e) end +note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/validator/wsf_filesize_validator.e b/draft/library/wsf_js_widget/kernel/validator/wsf_filesize_validator.e index be62b81f..dddc9f7c 100644 --- a/draft/library/wsf_js_widget/kernel/validator/wsf_filesize_validator.e +++ b/draft/library/wsf_js_widget/kernel/validator/wsf_filesize_validator.e @@ -32,12 +32,9 @@ feature {NONE} -- Initialization feature -- Implementation - is_valid (input: detachable WSF_FILE_DEFINITION): BOOLEAN + is_valid (a_input: detachable WSF_FILE_DEFINITION): BOOLEAN do - Result := True - if attached input as a_input then - Result := a_input.size < max - end + Result := a_input /= Void implies a_input.size < max end feature -- State @@ -48,9 +45,19 @@ feature -- State Result.put_integer (max, "max") end -feature -- Properties +feature -- Access max: INTEGER -- The maximal allowed value +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/validator/wsf_max_validator.e b/draft/library/wsf_js_widget/kernel/validator/wsf_max_validator.e index 00927653..cd872aed 100644 --- a/draft/library/wsf_js_widget/kernel/validator/wsf_max_validator.e +++ b/draft/library/wsf_js_widget/kernel/validator/wsf_max_validator.e @@ -24,7 +24,7 @@ create feature {NONE} -- Initialization make (m: INTEGER; e: STRING_32) - -- Initialize with specified maximum and error message which will be displayed on validation failure + -- Initialize with specified minimum `m' and error message `e' which will be displayed on validation failure. do make_validator (e) max := m @@ -32,9 +32,9 @@ feature {NONE} -- Initialization feature -- Implementation - is_valid (input: G): BOOLEAN + is_valid (a_input: G): BOOLEAN do - Result := input.count < max or input.count = max + Result := a_input.count < max or a_input.count = max end feature -- State @@ -50,4 +50,14 @@ feature -- Properties max: INTEGER -- The maximal allowed value +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/validator/wsf_validator.e b/draft/library/wsf_js_widget/kernel/validator/wsf_validator.e index 7aef6e16..ae070def 100644 --- a/draft/library/wsf_js_widget/kernel/validator/wsf_validator.e +++ b/draft/library/wsf_js_widget/kernel/validator/wsf_validator.e @@ -12,7 +12,7 @@ deferred class feature {NONE} -- Initialization make (e: STRING_32) - -- Initialize with specified error message to be displayed on validation failure + -- Initialize with specified error message `e' to be displayed on validation failure. do error := e ensure @@ -27,9 +27,10 @@ feature -- Access create Result.make Result.put_string (generator, "name") Result.put_string (error, "error") + -- FIXME: is that correct to always send error message?? end - is_valid (input: G): BOOLEAN + is_valid (a_input: G): BOOLEAN -- Perform validation on given input and tell whether validation was successful or not deferred end @@ -37,6 +38,16 @@ feature -- Access feature -- Properties error: STRING_32 - -- The error message if validation fails + -- The error message if validation fails. +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_basic_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_basic_control.e index fcf4e438..a00b3eb7 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_basic_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_basic_control.e @@ -25,32 +25,32 @@ create feature {NONE} -- Initialization - make (tag: STRING_32) + make (a_tag: STRING_32) -- Initialize require - tag_not_empty: not tag.is_empty + tag_not_empty: not a_tag.is_empty do - make_with_body_class (tag, "", "", "") + make_with_body_class (a_tag, "", "", "") end - make_with_body (tag, attr, b: STRING_32) - -- Initialize with specific attributes and body + make_with_body (a_tag, a_attribs, a_body: STRING_32) + -- Initialize with tag `a_tag', specific attributes `a_attribs' and body `a_body'. require - tag_not_empty: not tag.is_empty + tag_not_empty: not a_tag.is_empty do - make_stateless_control (tag) - attributes := attr - body := b + make_stateless_control (a_tag) + attributes := a_attribs + body := a_body end - make_with_body_class (tag, attr, c, b: STRING_32) - -- Initialize with specific class, attributes and body + make_with_body_class (a_tag, a_attribs, a_css_class, a_body: STRING_32) + -- Initialize with tag `a_tag' specific class `a_css_class', attributes `a_attribs' and body `a_body'. require - tag_not_empty: not tag.is_empty + tag_not_empty: not a_tag.is_empty do - make_with_body (tag, attr, b) - if not c.is_empty then - css_classes.extend (c) + make_with_body (a_tag, a_attribs, a_body) + if not a_css_class.is_empty then + css_classes.extend (a_css_class) end end @@ -80,4 +80,14 @@ feature -- Access body: STRING_32 -- Body of this control +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_button_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_button_control.e index 4328786c..5a65ebb1 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_button_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_button_control.e @@ -62,12 +62,13 @@ feature --Event handling click_event_set: click_event = e end - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) -- Called if the button is clicked. - require else - cname_has_element: cname.count > 0 do - if Current.control_name.same_string (cname [1]) and attached click_event as cevent then + if + control_name.same_string_general (cname.first) and + attached click_event as cevent + then cevent.call (Void) end end @@ -84,7 +85,7 @@ feature -- Rendering attr.append (a) end if disabled then - attr.append ("disabled=%"disabled%" ") + attr.append (" disabled=%"disabled%" ") end Result := render_tag (text, attr) end @@ -109,6 +110,8 @@ feature -- Change if disabled /= b then disabled := b state_changes.replace_with_boolean (disabled, "disabled") + else + check (b = False) implies state_changes.has_key ("disabled") end end ensure disabled_set: disabled = b @@ -125,4 +128,14 @@ feature -- Properties click_event: detachable PROCEDURE [ANY, TUPLE] -- Event that is executed when button is clicked +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_control.e index 227220b5..db3af7f4 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_control.e @@ -11,7 +11,6 @@ deferred class WSF_CONTROL inherit - WSF_STATELESS_CONTROL rename make as make_stateless_control @@ -110,14 +109,14 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management states.put (state_changes, control_name) end if actions.count > 0 then - if not attached states.item ("actions") then + if states.item ("actions") = Void then states.put (create {JSON_ARRAY}.make_array, "actions") end if attached {JSON_ARRAY} states.item ("actions") as action_list then across - actions.array_representation as action + actions.array_representation as ic loop - action_list.add (action.item) + action_list.add (ic.item) end end end @@ -127,42 +126,43 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management -- Returns the current state of the Control as JSON. This state will be transfered to the client. deferred ensure - controls_not_defined: not (attached Result.item ("controls")) + controls_not_defined: Result.item ("controls") = Void end state_changes: WSF_JSON_OBJECT feature -- Rendering - render_tag (body: STRING_32; attrs: detachable STRING_32): STRING_32 + render_tag (body: READABLE_STRING_32; attrs: detachable READABLE_STRING_32): STRING_32 -- Render this control with the specified body and attributes do Result := render_tag_with_generator_name (js_class, body, attrs) end - render_tag_with_generator_name (a_generator, body: STRING_32; attrs: detachable STRING_32): STRING_32 + render_tag_with_generator_name (a_generator, body: READABLE_STRING_32; attrs: detachable READABLE_STRING_32): STRING_32 -- Render this control with the specified generator name, body and attributes local - css_classes_string: STRING_32 + l_css_classes_string: STRING_32 l_attributes: STRING_32 do - css_classes_string := "" + create l_css_classes_string.make_empty across - css_classes as c + css_classes as ic loop - css_classes_string := css_classes_string + " " + c.item + l_css_classes_string.append_character (' ') + l_css_classes_string.append (ic.item) end l_attributes := " data-name=%"" + control_name + "%" data-type=%"" + a_generator + "%" " - if attached attrs as a then - l_attributes := l_attributes + a + if attached attrs as l_attrs then + l_attributes.append (l_attrs) end if isolate then l_attributes.append (" data-isolation=%"1%"") end - Result := render_tag_with_tagname (tag_name, body, l_attributes, css_classes_string) + Result := render_tag_with_tagname (tag_name, body, l_attributes, l_css_classes_string) end - js_class: STRING_32 + js_class: READABLE_STRING_32 -- The js_class is the name of the corresponding javascript class for this control. If this query is not redefined, it just -- returns the name of the Eiffel class. In case of customized controls, either the according javascript functionality has to -- be written in a coffeescript class of the same name or this query has to bee redefined and has to return the name of the @@ -173,8 +173,11 @@ feature -- Rendering feature -- Event handling - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) - -- Method called if any callback received. In this method the callback can be routed to the event handler + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) + -- Method called if any callback received. + -- In this method the callback can be routed to the event handler. + require + cname_is_not_empty: not cname.is_empty deferred end @@ -219,4 +222,14 @@ feature -- Properties -- Used to avoid name conflicts since the children stateful controls of stateless controls are appended to the parent -- control state and therefore could have the same name (Stateless multi controls do not add a hierarchy level) +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_dynamic_multi_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_dynamic_multi_control.e index 7e73e3c6..731f95c9 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_dynamic_multi_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_dynamic_multi_control.e @@ -148,7 +148,7 @@ feature end remove_control_by_id (id: INTEGER) - --Add removes to pending removes list + -- Add removes to pending removes list do pending_removes.extend (id) end @@ -176,7 +176,7 @@ feature Result := "WSF_DYNAMIC_MULTI_CONTROL" end -feature +feature -- Access items: JSON_ARRAY -- Holds the current items in this control @@ -193,4 +193,14 @@ feature invariant all_items_exist: items.count = controls.count +note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e index 2a5c1d15..ef5b7746 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e @@ -29,33 +29,36 @@ create feature {NONE} -- Initialization - make_without_border (a_label: detachable STRING_32; c: WSF_VALUE_CONTROL [G]) - -- Initialize form element control with a specific label (or 'Void' for no label) and value control + make_without_border (a_label: detachable STRING_32; a_control: WSF_VALUE_CONTROL [G]) + -- Initialize Current form element control with a specific label + -- (or 'Void' for no label) and value control `a_control'. do - make_with_validators (a_label, False, c, create {ARRAYED_LIST [WSF_VALIDATOR [G]]}.make (0)) + make_with_validators (a_label, False, a_control, create {ARRAYED_LIST [WSF_VALIDATOR [G]]}.make (0)) end - make (a_label: detachable STRING_32; c: WSF_VALUE_CONTROL [G]) - -- Initialize form element control with a specific label (or 'Void' for no label) and value control + make (a_label: detachable STRING_32; a_control: WSF_VALUE_CONTROL [G]) + -- Initialize Current form element control with a specific label + -- (or 'Void' for no label) and value control `a_control'. do - make_with_validators (a_label, True, c, create {ARRAYED_LIST [WSF_VALIDATOR [G]]}.make (0)) + make_with_validators (a_label, True, a_control, create {ARRAYED_LIST [WSF_VALIDATOR [G]]}.make (0)) end - make_with_validators (a_label: detachable STRING_32; show_border: BOOLEAN; c: WSF_VALUE_CONTROL [G]; v: LIST [WSF_VALIDATOR [G]]) - -- Initialize form element control with a specific label (or 'Void' for no label), value control and list of validators + make_with_validators (a_label: detachable STRING_32; show_border: BOOLEAN; a_control: WSF_VALUE_CONTROL [G]; a_validators: LIST [WSF_VALIDATOR [G]]) + -- Initialize Current form element control with a specific label (or 'Void' for no label), + -- value control `a_control' and list of validators `a_validators' do make_control ("div") add_class ("form-group") if show_border then - if not attached {WSF_VALUE_CONTROL [LIST [ANY]]} c then - c.add_class ("form-control") + if attached {WSF_VALUE_CONTROL [LIST [ANY]]} a_control then + a_control.add_class ("form-control-static") else - c.add_class ("form-control-static") + a_control.add_class ("form-control") end end label_width := 2 - value_control := c - validators := v + value_control := a_control + validators := a_validators label := a_label error := "" end @@ -94,7 +97,10 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management -- Pass new_states to subcontrols do Precursor (new_states) - if attached {JSON_OBJECT} new_states.item ("controls") as ct and then attached {JSON_OBJECT} ct.item (value_control.control_name) as value_state then + if + attached {JSON_OBJECT} new_states.item ("controls") as ct and then + attached {JSON_OBJECT} ct.item (value_control.control_name) as value_state + then value_control.load_state (value_state) end end @@ -154,13 +160,11 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management feature -- Event handling - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) -- Pass callback to subcontrols - require else - cname_not_empty: cname.count > 0 do - if cname [1].same_string (control_name) then - cname.go_i_th (1) + if cname.first.same_string (control_name) then + cname.start cname.remove if cname.is_empty then if event.same_string ("validate") then @@ -179,9 +183,9 @@ feature -- Implementation local body: STRING_32 do - body := "" - if attached label as l and then not l.is_empty then - body.append ("") + create body.make_empty + if attached label as l_label and then not l_label.is_empty then + body.append ("") body.append ("
") else body.append ("
") @@ -252,4 +256,14 @@ feature -- Properties label_width: INTEGER -- The bootstrap column span of the label of this form element control +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_html_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_html_control.e index 9c18c981..18c5f2b1 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_html_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_html_control.e @@ -53,7 +53,7 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management feature --Event handling - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) -- By default, this does nothing do end @@ -90,4 +90,14 @@ feature -- Properties html: STRING_32 -- The HTML value of this HTML control +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_json_object.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_json_object.e index 5b43148e..c4b2f212 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_json_object.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_json_object.e @@ -18,7 +18,7 @@ inherit create make -feature +feature -- Change put_string (value: detachable READABLE_STRING_GENERAL; key: JSON_STRING) -- Assuming there is no item of key `key', @@ -160,4 +160,14 @@ feature replace (l_value, key) end +note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" 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 632c2d90..2e134b65 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 @@ -11,7 +11,6 @@ class WSF_MULTI_CONTROL [G -> WSF_STATELESS_CONTROL] inherit - WSF_CONTROL rename make as make_control @@ -32,15 +31,15 @@ feature {NONE} -- Initialization make_with_tag_name ("div") end - make_with_tag_name (t: STRING_32) - -- Initialize with specified tag + make_with_tag_name (a_tag: STRING_32) + -- Initialize with specified tag `a_tag'. require - t_not_empty: not t.is_empty + a_tag_not_empty: not a_tag.is_empty do - make_control (t) - controls := create {ARRAYED_LIST [G]}.make (5); - ensure - tag_name_set:tag_name.same_string (t) + make_control (a_tag) + create {ARRAYED_LIST [G]} controls.make (5) + ensure + tag_name_set: tag_name.same_string (a_tag) end feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management @@ -127,11 +126,11 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management -- If the subcontrol is a stateless multicontrol x. We add the state changes of subcontrols of x directly to sub_states. (Stateless multi controls do not add a hierarchy level) do across - controls as c + controls as ic loop - if attached {WSF_STATELESS_MULTI_CONTROL [WSF_STATELESS_CONTROL]} c.item as cont then + if attached {WSF_STATELESS_MULTI_CONTROL [WSF_STATELESS_CONTROL]} ic.item as cont then cont.read_subcontrol_state_changes (sub_states) - elseif attached {WSF_CONTROL} c.item as cont then + elseif attached {WSF_CONTROL} ic.item as cont then cont.read_state_changes (sub_states) end end @@ -145,19 +144,19 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management feature -- Event handling - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) -- Pass callback to subcontrols do - if equal (cname [1], control_name) then - cname.go_i_th (1) + if cname.first.same_string (control_name) then + cname.start cname.remove if not cname.is_empty then across - controls as c + controls as ic until cname.is_empty loop - if attached {WSF_CONTROL} c.item as cont then + if attached {WSF_CONTROL} ic.item as cont then cont.handle_callback (cname, event, event_parameter) end end @@ -183,11 +182,11 @@ feature -- Rendering feature - add_control (c: G) - -- Add a control to this multi control + add_control (a_control: G) + -- Add a control `a_control' to this multi control. do - controls.extend (c) - if attached {WSF_CONTROL} c as d then + controls.extend (a_control) + if attached {WSF_CONTROL} a_control as d then d.control_id := controls.count end end @@ -197,4 +196,14 @@ feature -- Properties controls: ARRAYED_LIST [G] -- List of current controls in this multi control +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_page_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_page_control.e index 016cae41..e3971166 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_page_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_page_control.e @@ -12,7 +12,6 @@ deferred class WSF_PAGE_CONTROL inherit - WSF_CONTROL rename make as make_control @@ -121,12 +120,26 @@ feature -- Implementation render: STRING_32 -- Render the HTML page - local - ajax: BOOLEAN do - ajax := attached get_parameter ("ajax") create Result.make_empty - if not ajax then + if attached get_parameter ("ajax") as p_ajax then + Result.append ("
") + Result.append (control.render) + if attached additional_javascripts as l_additional_javascripts then + across + l_additional_javascripts as ic + loop + Result.append ("") + end + end + Result.append ("") + Result.append ("
") + else Result.append ("") Result.append ("") - if attached additional_javascripts as ajs then + if attached additional_javascripts as l_additional_javascripts then across - ajs as js + l_additional_javascripts as ic loop Result.append ("") end end @@ -156,23 +169,6 @@ feature -- Implementation Result.append (full_state.representation) Result.append (");page.initialize();});") Result.append ("") - else - Result.append ("
") - Result.append (control.render) - if attached additional_javascripts as ajs then - across - ajs as js - loop - Result.append ("") - end - end - Result.append ("") - Result.append ("
") end end @@ -183,34 +179,31 @@ feature -- Implementation control.read_state_changes (states) end - get_parameter (key: STRING_32): detachable STRING_32 + get_parameter (key: READABLE_STRING_GENERAL): detachable STRING_32 -- Read query parameter as string - local - value: detachable WSF_VALUE do - Result := VOID - value := request.query_parameter (key) - if attached value and then value.is_string then - Result := value.as_string.value + if + attached {WSF_STRING} request.query_parameter (key) as l_value + then + Result := l_value.value end end add_javascript (path: STRING_32) local - ajs: attached like additional_javascripts + l_additional_javascripts: like additional_javascripts do - if attached additional_javascripts as aajs then - ajs := aajs - else - create ajs.make (1) + l_additional_javascripts := additional_javascripts + if l_additional_javascripts = Void then + create l_additional_javascripts.make (1) + additional_javascripts := l_additional_javascripts end - ajs.extend (path) - additional_javascripts := ajs + l_additional_javascripts.extend (path) end feature -- Event handling - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) -- Forward callback to control do control.handle_callback (cname, event, event_parameter) @@ -230,7 +223,10 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management set_state (sp: JSON_OBJECT) -- Set state do - if attached {JSON_OBJECT} sp.item ("controls") as ct and then attached {JSON_OBJECT} ct.item (control.control_name) as value_state then + if + attached {JSON_OBJECT} sp.item ("controls") as ct and then + attached {JSON_OBJECT} ct.item (control.control_name) as value_state + then control.load_state (value_state) end end @@ -246,7 +242,7 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management Result.put (state, "state") end -feature +feature -- Access control_name: STRING_32 -- Name of this page @@ -262,4 +258,14 @@ feature {NONE} -- Root control additional_javascripts: detachable ARRAYED_LIST [STRING_32] -- List containing the additional javascipt files +;note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_stateless_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_stateless_control.e index 0388ca06..85ecb51d 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_stateless_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_stateless_control.e @@ -27,43 +27,43 @@ feature {NONE} -- Initialization feature -- Change - add_class (c: STRING_32) + add_class (a_css_class: STRING_32) -- Add a css class to this control require - c_not_empty: not c.is_empty + a_css_class_not_empty: not a_css_class.is_empty do - css_classes.force (c) + css_classes.force (a_css_class) ensure - class_added: css_classes.has (c) + class_added: css_classes.has (a_css_class) end - remove_class (c: STRING_32) + remove_class (a_css_class: STRING_32) -- Remove a css class from this control require - c_not_empty: not c.is_empty + c_not_empty: not a_css_class.is_empty do css_classes.start - css_classes.prune_all (c) + css_classes.prune_all (a_css_class) ensure - c_removed: not css_classes.has (c) + c_removed: not css_classes.has (a_css_class) end - append_attribute (a: STRING_32) + append_attribute (att: READABLE_STRING_32) -- Adds the specified attribute to the attribute string of this control require - a_not_empty: not a.is_empty + att_not_empty: not att.is_empty do if attached attributes as attr then - attr.append (" ") - attr.append (a) + attr.append_character (' ') + attr.append (att) else - attributes := a + create attributes.make_from_string (att) end end feature -- Rendering - render_tag (body: STRING_32; attrs: detachable STRING_32): STRING_32 + render_tag (a_body: READABLE_STRING_32; attrs: detachable READABLE_STRING_32): STRING_32 -- Generate HTML of this control with the specified body and attributes local css_classes_string: STRING_32 @@ -74,10 +74,10 @@ feature -- Rendering loop css_classes_string.append (" " + c.item) end - Result := render_tag_with_tagname (tag_name, body, attrs, css_classes_string) + Result := render_tag_with_tagname (tag_name, a_body, attrs, css_classes_string) end - render_tag_with_tagname (tag, body: STRING_32; attrs: detachable STRING_32; css_classes_string: STRING_32): STRING_32 + render_tag_with_tagname (tag, a_body: READABLE_STRING_32; attrs: detachable READABLE_STRING_32; css_classes_string: READABLE_STRING_32): STRING_32 -- Generate HTML of the specified tag with specified body, attributes and css classes local l_attributes: STRING_32 @@ -92,16 +92,33 @@ feature -- Rendering l_attributes.append (css_classes_string) l_attributes.append_character ('%"') end - Result := "<" + tag + " " + l_attributes + create Result.make_empty + Result.append_character ('<') + Result.append (tag) + Result.append_character (' ') + Result.append (l_attributes) -- Check if we have to render a body. For some elements, this is not the case (like textareas) or only if the body is not empty. - if body.is_empty and not tag.same_string ("textarea") and not tag.same_string ("span") and not tag.same_string ("button") and not tag.same_string ("ul") and not tag.same_string ("div") then - Result.append (" />") + if + a_body.is_empty and + not tag.same_string ("textarea") and + not tag.same_string ("span") and + not tag.same_string ("button") and + not tag.same_string ("ul") and + not tag.same_string ("div") + then + -- Note: it should be ok to close for textarea, span, ... and so on. + + Result.append ("/>") else - Result.append (" >" + body + "") + Result.append (" >") + Result.append (a_body) + Result.append ("") end end - render_tag_with_body (body: STRING_32): STRING_32 + render_tag_with_body (body: READABLE_STRING_32): STRING_32 -- Generate HTML of this control with the specified body do Result := render_tag (body, attributes) @@ -126,4 +143,14 @@ feature -- Properties invariant tag_name_not_empty: not tag_name.is_empty +note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_stateless_multi_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_stateless_multi_control.e index 50f0a477..c239ee6a 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_stateless_multi_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_stateless_multi_control.e @@ -3,7 +3,6 @@ note Mutli controls are used as containers for multiple controls, for example a form is a multi control. ]" - author: "" date: "$Date$" revision: "$Revision$" @@ -11,7 +10,6 @@ class WSF_STATELESS_MULTI_CONTROL [G -> WSF_STATELESS_CONTROL] inherit - WSF_MULTI_CONTROL [G] rename make as make_multi_control @@ -34,7 +32,7 @@ feature {NONE} -- Initialization make_with_tag_name ("") end -feature +feature -- Change set_control_id (d: INTEGER) -- Set id of this control and update subcontrol prefixes @@ -56,17 +54,22 @@ feature set_subcontrol_prefixes -- Update subcontrol prefixes + local + s: STRING_32 do across - controls as e + controls as ic loop - if attached {WSF_CONTROL} e.item as el then - el.control_name_prefix := control_name_prefix + control_id.out + "_" + if attached {WSF_CONTROL} ic.item as l_control then + create s.make_from_string (control_name_prefix) + s.append_integer (control_id) + s.append_character ('_') + l_control.set_control_name_prefix (s) end end end -feature +feature -- Change add_control (c: G) -- Add a control to this multi control @@ -80,7 +83,7 @@ feature control_added: controls.has (c) end - render_tag (body: STRING_32; attrs: detachable STRING_32): STRING_32 + render_tag (body: READABLE_STRING_32; attrs: detachable READABLE_STRING_32): STRING_32 -- Generate HTML of this control with the specified body and attributes local css_classes_string: STRING_32 @@ -96,7 +99,7 @@ feature feature -- Event handling - handle_callback (cname: LIST [STRING_32]; event: STRING_32; event_parameter: detachable ANY) + handle_callback (cname: LIST [READABLE_STRING_GENERAL]; event: READABLE_STRING_GENERAL; event_parameter: detachable ANY) -- Pass callback to subcontrols do across @@ -110,4 +113,14 @@ feature -- Event handling end end +note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_value_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_value_control.e index 009c136e..1c4f4f9e 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_value_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_value_control.e @@ -11,7 +11,6 @@ deferred class WSF_VALUE_CONTROL [G] inherit - WSF_CONTROL feature -- Access @@ -22,7 +21,18 @@ feature -- Access end set_value (v: G) + -- Set `value' to `v'. deferred end +note + copyright: "2011-2014, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" end diff --git a/draft/library/wsf_js_widget/license.lic b/draft/library/wsf_js_widget/license.lic new file mode 100644 index 00000000..86100d5f --- /dev/null +++ b/draft/library/wsf_js_widget/license.lic @@ -0,0 +1,10 @@ +${NOTE_KEYWORD} + copyright: "2011-${YEAR}, Yassin Hassan, Severin Munger, Jocelyn Fiat, Eiffel Software and others" + license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + Website http://www.eiffel.com + Customer support http://support.eiffel.com + ]" diff --git a/examples/widgetapp/application.e b/examples/widgetapp/application.e index d1dbc466..99986f57 100644 --- a/examples/widgetapp/application.e +++ b/examples/widgetapp/application.e @@ -30,9 +30,22 @@ create feature {NONE} -- Initialization +-- tt +-- local +-- lst: ARRAYED_LIST [READABLE_STRING_GENERAL] +-- do +-- create lst.make (3) +-- lst.compare_objects +-- lst.extend ({STRING_32} "abc") +-- if lst.has ("abc") then +-- print ("found%N") +-- end +-- end + initialize -- Initialize current service. do +-- tt initialize_router initialize_filter Precursor diff --git a/examples/widgetapp/googlenews/google_news_datasource.e b/examples/widgetapp/googlenews/google_news_datasource.e index 5f0cc3e9..29e9f3b9 100644 --- a/examples/widgetapp/googlenews/google_news_datasource.e +++ b/examples/widgetapp/googlenews/google_news_datasource.e @@ -18,7 +18,17 @@ inherit create make_news -feature --States + +feature {NONE} -- Initialization + + make_news + do + page := 1 + page_size := 8 + query := "eiffel" + end + +feature -- States state: WSF_JSON_OBJECT -- Return state which contains the current html and if there is an event handle attached @@ -35,14 +45,7 @@ feature --States end end -feature - - make_news - do - page := 1 - page_size := 8 - query := "eiffel" - end +feature -- Access data: ITERABLE [GOOGLE_NEWS] local diff --git a/examples/widgetapp/sample_page.e b/examples/widgetapp/sample_page.e index 5c056229..1febf1fe 100644 --- a/examples/widgetapp/sample_page.e +++ b/examples/widgetapp/sample_page.e @@ -32,7 +32,7 @@ feature Precursor create form.make --Number 1 - create textbox1.make ({STRING_32}"1") + create textbox1.make ({STRING_32} "1") create n1_container.make ({STRING_32}"Number1", textbox1) n1_container.add_validator (create {WSF_DECIMAL_VALIDATOR}.make ({STRING_32}"Invalid Number")) n1_container.add_validator (create {OWN_VALIDATOR}.make_own) diff --git a/examples/widgetapp/image_slider_page.e b/examples/widgetapp/slider_page.e similarity index 95% rename from examples/widgetapp/image_slider_page.e rename to examples/widgetapp/slider_page.e index e0b82880..aa3abff5 100644 --- a/examples/widgetapp/image_slider_page.e +++ b/examples/widgetapp/slider_page.e @@ -1,5 +1,5 @@ note - description: "Summary description for {IMAGE_SLIDER_PAGE}." + description: "Summary description for {SLIDER_PAGE}." author: "" date: "$Date$" revision: "$Revision$"