diff --git a/examples/desktop_app/desktop_app.ecf b/examples/desktop_app/desktop_app.ecf index 6ba18b3f..2f0752c7 100644 --- a/examples/desktop_app/desktop_app.ecf +++ b/examples/desktop_app/desktop_app.ecf @@ -1,13 +1,13 @@ - + Vision2+web browser widget+embedded web service This example demonstrates how to build a vision2 desktop application that embed a web browser accessing the service of an embedded web service. - - + @@ -18,9 +18,9 @@ - /EIFGENs$ - /CVS$ /.svn$ + /CVS$ + /EIFGENs$ diff --git a/examples/desktop_app/src/desktop_app.e b/examples/desktop_app/src/desktop_app.e index a48779f0..4e506670 100644 --- a/examples/desktop_app/src/desktop_app.e +++ b/examples/desktop_app/src/desktop_app.e @@ -24,20 +24,25 @@ feature {NONE} -- Initialization -- then launch the application. local l_win: like main_window - l_embedded_service: APP_EMBEDDED_WEB_SERVICE + l_embedded_service: separate APP_EMBEDDED_WEB_SERVICE do default_create create l_win.make main_window := l_win l_win.show create l_embedded_service.make - l_embedded_service.set_port_number (0) -- Use first available port number - - l_embedded_service.on_launched_actions.force (agent on_web_service_launched (l_win, l_embedded_service)) - l_embedded_service.launch + setup_and_launch_web_service (l_embedded_service) launch end + + setup_and_launch_web_service (a_web_service: separate APP_EMBEDDED_WEB_SERVICE) + do + a_web_service.set_port_number (0) -- Use first available port number + a_web_service.set_on_launched_action (agent on_web_service_launched (a_web_service)) + a_web_service.launch + end + on_quit do if attached main_window as win then @@ -45,13 +50,15 @@ feature {NONE} -- Initialization end end - on_web_service_launched (a_win: attached like main_window; s: APP_EMBEDDED_WEB_SERVICE) + on_web_service_launched (a_web_service: separate APP_EMBEDDED_WEB_SERVICE) do - add_idle_action_kamikaze (agent wait_for_termination (s, Void)) - add_idle_action_kamikaze (agent a_win.open_link) + if attached main_window as win then + add_idle_action_kamikaze (agent wait_for_termination (a_web_service, Void)) + add_idle_action_kamikaze (agent win.open_link) + end end - wait_for_termination (s: APP_EMBEDDED_WEB_SERVICE; a_timeout: detachable EV_TIMEOUT) + wait_for_termination (a_web_service: separate APP_EMBEDDED_WEB_SERVICE; a_timeout: detachable EV_TIMEOUT) local t: detachable EV_TIMEOUT do @@ -60,7 +67,7 @@ feature {NONE} -- Initialization t.set_interval (0) end if - attached s.observer as obs and then + attached a_web_service.observer as obs and then observer_has_terminaded (obs) then if t /= Void then @@ -70,7 +77,7 @@ feature {NONE} -- Initialization else if t = Void then create t - t.actions.extend (agent wait_for_termination (s, t)) + t.actions.extend (agent wait_for_termination (a_web_service, t)) else t.set_interval (1_000) end diff --git a/examples/desktop_app/src/service/embedded_web_execution.e b/examples/desktop_app/src/service/embedded_web_execution.e index 9ece6bdc..3bb0c667 100644 --- a/examples/desktop_app/src/service/embedded_web_execution.e +++ b/examples/desktop_app/src/service/embedded_web_execution.e @@ -17,13 +17,12 @@ inherit feature {NONE} -- Execution - execute_embedded + execute_embedded -- Execute the request -- See `request.input' for input stream -- `request.meta_variables' for the CGI meta variable -- and `response' for output buffer local - filter: WSF_AGENT_FILTER m: WSF_PAGE_RESPONSE do if local_connection_restriction_enabled then @@ -41,7 +40,7 @@ feature {NONE} -- Execution execute end end - + execute deferred end diff --git a/examples/desktop_app/src/service/embedded_web_service.e b/examples/desktop_app/src/service/embedded_web_service.e index 7b3adc88..b690d574 100644 --- a/examples/desktop_app/src/service/embedded_web_service.e +++ b/examples/desktop_app/src/service/embedded_web_service.e @@ -16,7 +16,6 @@ feature -- Initialization make do - create on_launched_actions end feature -- Execution @@ -40,11 +39,23 @@ feature -- Execution on_launched (conn: WGI_STANDALONE_CONNECTOR [G]) do set_port_number (conn.port) - on_launched_actions.call (Void) + if attached on_launched_action as act then + call_action (act) + end + end + + call_action (act: attached like on_launched_action) + do + act.call (Void) end feature -- Access - on_launched_actions: ACTION_SEQUENCE [TUPLE] + on_launched_action: detachable separate PROCEDURE [ANY, TUPLE] + + set_on_launched_action (act: like on_launched_action) + do + on_launched_action := act + end end