From 275cc7aa215f201d190b502fe41a438c915af36f Mon Sep 17 00:00:00 2001 From: YNH Webdev Date: Wed, 28 Aug 2013 22:59:24 +0200 Subject: [PATCH] Add comments Use Precursor --- .../wsf_html/webcontrol/wsf_button_control.e | 3 +++ .../server/wsf_html/webcontrol/wsf_control.e | 19 +++++++++++-------- .../wsf_html/webcontrol/wsf_multi_control.e | 14 ++++++-------- .../wsf_html/webcontrol/wsf_page_control.e | 8 +++++++- .../wsf_html/webcontrol/wsf_text_control.e | 3 +++ 5 files changed, 30 insertions(+), 17 deletions(-) diff --git a/library/server/wsf_html/webcontrol/wsf_button_control.e b/library/server/wsf_html/webcontrol/wsf_button_control.e index ffab2c78..98de6a2b 100644 --- a/library/server/wsf_html/webcontrol/wsf_button_control.e +++ b/library/server/wsf_html/webcontrol/wsf_button_control.e @@ -25,6 +25,7 @@ feature {NONE} feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- STATE MANAGEMENT set_state (new_state: JSON_OBJECT) + -- Restore text from json do if attached {JSON_STRING} new_state.item (create {JSON_STRING}.make_json ("text")) as new_text then text := new_text.unescaped_string_32 @@ -32,6 +33,7 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- STATE MANAGEMENT end state: JSON_OBJECT + -- Return state which contains the current text and if there is an event handle attached do create Result.make Result.put (create {JSON_STRING}.make_json (text), create {JSON_STRING}.make_json ("text")) @@ -41,6 +43,7 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- STATE MANAGEMENT feature --EVENT HANDLING set_click_event (e: attached like click_event) + -- Set button click event handle do click_event := e end diff --git a/library/server/wsf_html/webcontrol/wsf_control.e b/library/server/wsf_html/webcontrol/wsf_control.e index 380ce181..ab77f0ca 100644 --- a/library/server/wsf_html/webcontrol/wsf_control.e +++ b/library/server/wsf_html/webcontrol/wsf_control.e @@ -14,37 +14,40 @@ feature feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- STATE MANAGEMENT load_state (new_states: JSON_OBJECT) - local - new_state: detachable JSON_VALUE + -- Select state stored with `control_name` as key do - new_state := new_states.item (create {JSON_STRING}.make_json (control_name)) - if attached {JSON_OBJECT} new_state as new_state_obj then + if attached {JSON_OBJECT} new_states.item (create {JSON_STRING}.make_json (control_name)) as new_state_obj then set_state (new_state_obj) end end + set_state (new_state: JSON_OBJECT) + -- Before we process the callback. We restore the state of control. + deferred + end + read_state (states: JSON_OBJECT) + -- Add a new entry in the `states` JSON object with the `control_name` as key and the `state` as value do states.put (state, create {JSON_STRING}.make_json (control_name)) end - set_state (new_state: JSON_OBJECT) - deferred - end - state: JSON_OBJECT + -- Returns the current state of the Control as JSON. This state will be transfered to the client. deferred end feature --EVENT HANDLING handle_callback (cname: STRING; event: STRING) + -- Method called if any callback recived. In this method you can route the callback to the event handler deferred end feature render: STRING + -- Return html representaion of control deferred end diff --git a/library/server/wsf_html/webcontrol/wsf_multi_control.e b/library/server/wsf_html/webcontrol/wsf_multi_control.e index 71bc87d0..2a508fbb 100644 --- a/library/server/wsf_html/webcontrol/wsf_multi_control.e +++ b/library/server/wsf_html/webcontrol/wsf_multi_control.e @@ -31,7 +31,9 @@ feature {NONE} feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- STATE MANAGEMENT load_state (new_states: JSON_OBJECT) + -- Pass new_states to subcontrols do + Precursor(new_states) across controls as c loop @@ -44,8 +46,9 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- STATE MANAGEMENT end read_state (states: JSON_OBJECT) + -- Read states in subcontrols do - states.put (state, create {JSON_STRING}.make_json (control_name)) + Precursor(states) across controls as c loop @@ -54,20 +57,15 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- STATE MANAGEMENT end state: JSON_OBJECT - local - temp: JSON_OBJECT + --Read state do create Result.make - across - controls as c - loop - temp := c.item.state - end end feature --EVENT HANDLING handle_callback (event: STRING; cname: STRING) + -- Pass callback to subcontrols do if equal (cname, control_name) then else diff --git a/library/server/wsf_html/webcontrol/wsf_page_control.e b/library/server/wsf_html/webcontrol/wsf_page_control.e index dd454754..42fa3e5c 100644 --- a/library/server/wsf_html/webcontrol/wsf_page_control.e +++ b/library/server/wsf_html/webcontrol/wsf_page_control.e @@ -25,18 +25,22 @@ feature -- Access feature initialize_controls + -- Initalize all the controls, all the event handles must be set in this function. deferred ensure attached control end process + -- Function called on page load (not on callback) deferred end feature execute + -- Entry Point: If request is a callback, restore control states and execute handle then return new state json. + -- If request is not a callback. Run process and render the html page local event: detachable STRING control_name: detachable STRING @@ -64,6 +68,7 @@ feature end render + -- Render and send the HTML Page local data: STRING page: WSF_PAGE_RESPONSE @@ -87,12 +92,13 @@ feature end get_parameter (key: STRING): detachable STRING + -- Read query parameter as string local value: detachable WSF_VALUE do Result := VOID value := request.query_parameter (key) - if attached value then + if attached value and then value.is_string then Result := value.as_string.value end end diff --git a/library/server/wsf_html/webcontrol/wsf_text_control.e b/library/server/wsf_html/webcontrol/wsf_text_control.e index 15e0b8a5..2a79b150 100644 --- a/library/server/wsf_html/webcontrol/wsf_text_control.e +++ b/library/server/wsf_html/webcontrol/wsf_text_control.e @@ -25,6 +25,7 @@ feature {NONE} feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- STATE MANAGEMENT set_state (new_state: JSON_OBJECT) + -- Restore text from json do if attached {JSON_STRING} new_state.item (create {JSON_STRING}.make_json ("text")) as new_text then text := new_text.unescaped_string_32 @@ -32,6 +33,7 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- STATE MANAGEMENT end state: JSON_OBJECT + -- Return state which contains the current text and if there is an event handle attached do create Result.make Result.put (create {JSON_STRING}.make_json (text), create {JSON_STRING}.make_json ("text")) @@ -42,6 +44,7 @@ feature --EVENT HANDLING set_change_event (e: attached like change_event) + -- Set text change event handle do change_event := e end