diff --git a/library/server/wsf_html/webcontrol/wsf_button_control.e b/library/server/wsf_html/webcontrol/wsf_button_control.e index b286bc17..a2551e93 100644 --- a/library/server/wsf_html/webcontrol/wsf_button_control.e +++ b/library/server/wsf_html/webcontrol/wsf_button_control.e @@ -8,44 +8,52 @@ class WSF_BUTTON_CONTROL inherit + WSF_CONTROL + create make + feature {NONE} - make (n:STRING; v:STRING) - do - make_control - control_name:=n - text:=v - click_event:= agent donothing - end -feature - --UGLY HACK MUST BE REMOVED - donothing(p:WSF_PAGE_CONTROL) - do - - end - handle_callback(event: STRING ; cname: STRING ; page: WSF_PAGE_CONTROL) - do - if Current.control_name = cname and attached click_event then - click_event.call([page]) + make (n: STRING; v: STRING) + do + make_control + control_name := n + text := v + click_event := agent donothing end - end - - render:STRING - do - Result:="" - end - - state:JSON_OBJECT - do - create Result.make - Result.put (create {JSON_STRING}.make_json(text), create {JSON_STRING}.make_json("text")) - end - feature + + --UGLY HACK MUST BE REMOVED + + donothing (p: WSF_PAGE_CONTROL) + do + end + + handle_callback (event: STRING; cname: STRING; page: WSF_PAGE_CONTROL) + do + if Current.control_name = cname and attached click_event then + click_event.call ([page]) + end + end + + render: STRING + do + Result := "" + end + + state: JSON_OBJECT + do + create Result.make + Result.put (create {JSON_STRING}.make_json (text), create {JSON_STRING}.make_json ("text")) + end + +feature + text: STRING + click_event: PROCEDURE [ANY, TUPLE [WSF_PAGE_CONTROL]] + end diff --git a/library/server/wsf_html/webcontrol/wsf_control.e b/library/server/wsf_html/webcontrol/wsf_control.e index 5d027501..04f9c830 100644 --- a/library/server/wsf_html/webcontrol/wsf_control.e +++ b/library/server/wsf_html/webcontrol/wsf_control.e @@ -6,32 +6,35 @@ note deferred class WSF_CONTROL + feature {NONE} + make_control - do - control_name:="" - end + do + control_name := "" + end feature + control_name: STRING feature {WSF_PAGE_CONTROL} - handle_callback(event: STRING ; cname: STRING ; page: WSF_PAGE_CONTROL) - deferred - end + handle_callback (event: STRING; cname: STRING; page: WSF_PAGE_CONTROL) + deferred + end render: STRING - deferred - end + deferred + end state: JSON_OBJECT - deferred - end + deferred + end - read_state(states:JSON_OBJECT) - do - states.put (state, create {JSON_STRING}.make_json(control_name)) - end + read_state (states: JSON_OBJECT) + do + states.put (state, create {JSON_STRING}.make_json (control_name)) + end end diff --git a/library/server/wsf_html/webcontrol/wsf_page_control.e b/library/server/wsf_html/webcontrol/wsf_page_control.e index 2d8fd33b..46bbfe9d 100644 --- a/library/server/wsf_html/webcontrol/wsf_page_control.e +++ b/library/server/wsf_html/webcontrol/wsf_page_control.e @@ -24,57 +24,55 @@ feature -- Access feature initialize_controls - deferred - end + deferred + end process - deferred - end + deferred + end feature - execute - local - event: detachable STRING - control_name: detachable STRING - states:JSON_OBJECT - do - initialize_controls - control_name := get_parameter("control_name") - event := get_parameter("event") - if attached event and attached control_name and attached control then - control.handle_callback (control_name,event, Current) + local + event: detachable STRING + control_name: detachable STRING + states: JSON_OBJECT + do + initialize_controls + control_name := get_parameter ("control_name") + event := get_parameter ("event") + if attached event and attached control_name and attached control then + control.handle_callback (control_name, event, Current) create states.make - control.read_state(states) + control.read_state (states) response.put_header ({HTTP_STATUS_CODE}.ok, <<["Content-Type", "application/json"]>>) response.put_string (states.representation) - else - process - render + else + process + render + end end - end render - local - data: STRING - do - data := control.render - response.put_header ({HTTP_STATUS_CODE}.ok, <<["Content-Type", "text/plain"], ["Content-Length", data.count.out]>>) - response.put_string (data) - end - - get_parameter(key: STRING) : detachable STRING - local - value: detachable WSF_VALUE - do - Result := VOID - value := request.query_parameter (key) - if attached value then - Result := value.as_string.value + local + data: STRING + do + data := control.render + response.put_header ({HTTP_STATUS_CODE}.ok, <<["Content-Type", "text/plain"], ["Content-Length", data.count.out]>>) + response.put_string (data) end - end + get_parameter (key: STRING): detachable STRING + local + value: detachable WSF_VALUE + do + Result := VOID + value := request.query_parameter (key) + if attached value then + Result := value.as_string.value + end + end feature {NONE}