note
	description: "This class creates a message information object %
		%corresponding to a given message."
	legal: "See notice at end of class."
	status: "See notice at end of class."
	date: "$Date$"
	revision: "$Revision$"

class
	WEL_MESSAGE_INFORMATION_CREATOR

inherit
	ANY

	WEL_WM_CONSTANTS
		export
			{NONE} all
		end

create
	make

feature -- Initialization

	make (window: WEL_WINDOW; message: INTEGER; wparam, lparam: POINTER)
			-- Make `message_information' corresponding to
			-- `message' by using `wparam' and `lparam'.
		require
			window_not_void: window /= Void
			positive_message: message >= 0
		local
			l_message: like message_information
		do
			if message = Wm_size then
				create {WEL_SIZE_MESSAGE} l_message.make (window, message, wparam, lparam)
			elseif message = Wm_move then
				create {WEL_MOVE_MESSAGE} l_message.make (window, message, wparam, lparam)
			elseif message = Wm_command then
				create {WEL_COMMAND_MESSAGE} l_message.make (window, message, wparam, lparam)
			elseif message = Wm_syscommand then
				create {WEL_SYSTEM_COMMAND_MESSAGE} l_message.make (window, message, wparam, lparam)
			elseif message = Wm_timer then
				create {WEL_TIMER_MESSAGE} l_message.make (window, message, wparam, lparam)
			elseif message = Wm_showwindow then
				create {WEL_SHOW_WINDOW_MESSAGE} l_message.make (window, message, wparam, lparam)
			elseif message = Wm_menuselect then
				create {WEL_MENU_SELECT_MESSAGE} l_message.make (window, message, wparam, lparam)
			elseif message = Wm_windowposchanged or
				message = Wm_windowposchanging then
				create {WEL_WINDOW_POSITION_MESSAGE} l_message.make (window, message, wparam, lparam)
			elseif message = Wm_notify then
				create {WEL_NOTIFY_MESSAGE} l_message.make (window, message, wparam, lparam)
			elseif
				message = Wm_char or
				message = Wm_syschar or
				message = Wm_keydown or
				message = Wm_keyup or
				message = Wm_syskeydown or
				message = Wm_syskeyup
			then
				create {WEL_KEY_MESSAGE} l_message.make (window, message, wparam, lparam)
			elseif
				message = Wm_mousemove or
				message = Wm_lbuttondown or
				message = Wm_mbuttondown or
				message = Wm_rbuttondown or
				message = Wm_lbuttonup or
				message = Wm_mbuttonup or
				message = Wm_rbuttonup or
				message = Wm_lbuttondblclk or
				message = Wm_mbuttondblclk or
				message = Wm_rbuttondblclk
			then
				create {WEL_MOUSE_MESSAGE} l_message.make (window, message, wparam, lparam)
			else
				-- `message' is not handled by WEL.
				-- Let's create a generic message object.
				create l_message.make (window, message, wparam, lparam)
			end
			message_information := l_message
		end

feature -- Access

	message_information: WEL_MESSAGE_INFORMATION;
			-- Information about `message'.

note
	copyright:	"Copyright (c) 1984-2006, 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 -- class WEL_MESSAGE_INFORMATION_CREATOR