note
	description: "Objects that represent an EV_TITLED_WINDOW.%
		%The original version of this class was generated by EiffelBuild."
	generator: "EiffelBuild"
	legal: "See notice at end of class."
	status: "See notice at end of class."
	date: "$Date$"
	revision: "$Revision$"

class
	MAIN_WINDOW

inherit
	EV_TITLED_WINDOW
		redefine
			create_interface_objects, initialize, is_in_default_state
		end

	SHARED_EMBEDED_WEB_SERVICE_INFORMATION
		undefine
			default_create, copy
		end

create
	make

feature {NONE} -- Initialization

	make
			-- Creation method
		do
			default_create
		end

	initialize
			-- Initialize `Current'.
		do
			Precursor {EV_TITLED_WINDOW}

			set_title ("Desktop Application (demo embedded EWF+browser)")

				-- Connect events.
				-- Close the application when an interface close
				-- request is received on `Current'. i.e. the cross is clicked.
			close_request_actions.extend (agent destroy_and_exit_if_last)

				-- Call `user_initialization'.
			user_initialization
		end

	create_interface_objects
			-- Create objects
		do
			create home_button.make_with_text ("Home")
			create back_button.make_with_text ("Back")
			create forth_button.make_with_text ("Forth")
			create refresh_button.make_with_text ("Refresh")
			create stop_button.make_with_text ("Stop")
			create url_text_field.make_with_text ("http://localhost:" + port_number.out)
			create go_button.make_with_text ("Go")

			create web_browser
		end

	user_initialization
			-- Called by `initialize'.
			-- Any custom user initialization that
			-- could not be performed in `initialize',
			-- (due to regeneration of implementation class)
			-- can be added here.
		local
			l_browser_box: EV_VERTICAL_BOX
			l_hor_box: EV_HORIZONTAL_BOX
			vb: EV_VERTICAL_BOX
		do
			set_size (800, 600)

			create vb
			extend (vb)
			vb.set_border_width (3)
			vb.set_padding_width (3)

				-- browser part								
			create l_browser_box

			create l_hor_box
			l_browser_box.extend (l_hor_box)
			l_browser_box.disable_item_expand (l_hor_box)

			home_button.select_actions.force_extend (agent on_home_button_action)
			l_hor_box.extend (home_button)
			l_hor_box.disable_item_expand (home_button)

			back_button.select_actions.force_extend (agent on_back_button_action)
			l_hor_box.extend (back_button)
			l_hor_box.disable_item_expand (back_button)

			forth_button.select_actions.force_extend (agent on_forth_button_action)
			l_hor_box.extend (forth_button)
			l_hor_box.disable_item_expand (forth_button)

			refresh_button.select_actions.force_extend (agent on_refresh_button_action)
			l_hor_box.extend (refresh_button)
			l_hor_box.disable_item_expand (refresh_button)

			stop_button.select_actions.force_extend (agent on_stop_button_action)
			l_hor_box.extend (stop_button)
			l_hor_box.disable_item_expand (stop_button)

			l_hor_box.extend (url_text_field)

			go_button.select_actions.force_extend (agent on_go_button_action)
			l_hor_box.extend (go_button)
			l_hor_box.disable_item_expand (go_button)

			l_browser_box.extend (web_browser)

			--------------------
			vb.extend (l_browser_box)
		end

	is_in_default_state: BOOLEAN
		do
			Result := True
		end

feature -- Basic operation

	open_link
		do
			url_text_field.set_text ("http://localhost:" + port_number.out)
			on_go_button_action
		end

feature {NONE} -- Implementation

	home_button, go_button, back_button, forth_button, stop_button, refresh_button: EV_BUTTON
			-- Buttons

	url_text_field: EV_TEXT_FIELD
			-- URL text field

	on_go_button_action
			-- Action for `go_button'
		local
			l_uri: STRING_32
		do
			l_uri := url_text_field.text
			if l_uri /= Void and then not l_uri.is_empty then
				web_browser.load_uri (l_uri)
			else
				on_home_button_action
			end
		end

	on_home_button_action
			-- Action for `home_button'
		do
			web_browser.load_uri ("http://localhost:" + port_number.out)
		end

	on_back_button_action
			-- Action for `back_button'
		do
			web_browser.back
		end

	on_forth_button_action
			-- Action for `forth_button'
		do
			web_browser.forth
		end

	on_refresh_button_action
			-- Action for `refresh_button'
		do
			web_browser.refresh
		end

	on_stop_button_action
			-- Action for `stop_button'
		do
			web_browser.stop
		end

	web_browser: EV_WEB_BROWSER
			-- Web browser widget

;note
	copyright:	"Copyright (c) 1984-2009, Eiffel Software and others"
	license:	"Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
	source: "[
			 Eiffel Software
			 356 Storke Road, Goleta, CA 93117 USA
			 Telephone 805-685-1006, Fax 805-685-6869
			 Website http://www.eiffel.com
			 Customer support http://support.eiffel.com
		]"


end
