indexing
     description: "About Dialog, displaying general information."
     date: "$Date$"
     revision: "$Revision$"

class interface
     ABOUT_DIALOG

create

     make
                 -- Create current.

feature -- Initialization

     frozen default_create
                 -- Standard creation procedure.
                 -- (from EV_ANY)
           ensure then -- from EV_ANY
                 is_coupled: implementation /= void
                 is_initialized: is_initialized
                 default_create_called_set: default_create_called
                 is_in_default_state: is_in_default_state
     
feature -- Access

     accelerators: EV_ACCELERATOR_LIST
                 -- Key combination shortcuts associated with this window.
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed

     accept_cursor: EV_CURSOR
                 -- Result is cursor displayed when the screen pointer is over a
                 -- target that accepts pebble during pick and drop.
                 -- (from EV_PICK_AND_DROPABLE)
           ensure then -- from EV_PICK_AND_DROPABLE
                 bridge_ok: Result = implementation.accept_cursor

     actual_drop_target_agent: FUNCTION [ANY, TUPLE [INTEGER, INTEGER], EV_ABSTRACT_PICK_AND_DROPABLE]
                 -- Overrides default drop target on a certain position.
                 -- If Void, Current will use the default drop target.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
           ensure -- from EV_WIDGET
                 bridge_ok: Result = implementation.actual_drop_target_agent

     background_color: EV_COLOR
                 -- Color displayed behind foreground features.
                 -- (from EV_COLORIZABLE)
           require -- from EV_COLORIZABLE
                 not_destroyed: not is_destroyed
           ensure -- from EV_COLORIZABLE
                 bridge_ok: Result.is_equal (implementation.background_color)

     data: ANY
                 -- Arbitrary user data may be stored here.
                 -- (from EV_ANY)

     default_cancel_button: EV_BUTTON
                 -- Default cancel button. This is the button that
                 -- is pushed if the user press the escape key or
                 -- close the window using the close icon.
                 -- If there is no default cancel button, the close
                 -- icon is disabled.
                 -- (from EV_DIALOG)
           require -- from EV_DIALOG
                 not_destroyed: not is_destroyed

     default_push_button: EV_BUTTON
                 -- Default pushed button. This is the button that
                 -- is pushed if the user press the enter key unless
                 -- a push button is currently focused.
                 -- (from EV_DIALOG)
           require -- from EV_DIALOG
                 not_destroyed: not is_destroyed

     deny_cursor: EV_CURSOR
                 -- Result is cursor displayed when the screen pointer is over a
                 -- target that does not accept pebble during pick and drop.
                 -- (from EV_PICK_AND_DROPABLE)
           ensure then -- from EV_PICK_AND_DROPABLE
                 bridge_ok: Result = implementation.deny_cursor

     foreground_color: EV_COLOR
                 -- Color of foreground features like text.
                 -- (from EV_COLORIZABLE)
           require -- from EV_COLORIZABLE
                 not_destroyed: not is_destroyed
           ensure -- from EV_COLORIZABLE
                 bridge_ok: Result.is_equal (implementation.foreground_color)

     has_recursive (an_item: like item): BOOLEAN
                 -- Does structure include an_item or
                 -- does any structure recursivly included by structure,
                 -- include an_item.
                 -- (from EV_CONTAINER)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed

     help_context: FUNCTION [ANY, TUPLE, EV_HELP_CONTEXT]
                 -- Agent that evaluates to help context sent to help engine when help is requested
                 -- (from EV_HELP_CONTEXTABLE)
           require -- from EV_HELP_CONTEXTABLE
                 not_destroyed: not is_destroyed
           ensure -- from EV_HELP_CONTEXTABLE
                 bridge_ok: Result = implementation.help_context

     icon_name: STRING
                 -- Alternative name, displayed when window is minimised.
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_TITLED_WINDOW
                 bridge_ok: equal (Result, implementation.icon_name)

     icon_pixmap: EV_PIXMAP
                 -- Window icon.
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_TITLED_WINDOW
                 bridge_ok: Result.is_equal (implementation.icon_pixmap)

     frozen id_object (an_id: INTEGER): IDENTIFIED
                 -- Object associated with an_id (void if no such object)
                 -- (from IDENTIFIED)
           ensure -- from IDENTIFIED
                 consistent: Result = void or else Result.object_id = an_id

     is_modal: BOOLEAN
                 -- Must Current be closed before application can
                 -- receive user events again?
                 -- (from EV_DIALOG)

     is_parent_recursive (a_widget: EV_WIDGET): BOOLEAN
                 -- Is a_widget parent, or recursivly, parent of parent.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed

     item: EV_WIDGET
                 -- Current item.
                 -- (from EV_CONTAINER)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed
                 readable: readable
           ensure -- from EV_CONTAINER
                 bridge_ok: Result = implementation.item

     lower_bar: EV_VERTICAL_BOX
                 -- Room at bottom of window. (Example use: statusbar.)
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_WINDOW
                 bridge_ok: Result = implementation.lower_bar

     maximum_height: INTEGER
                 -- Upper bound on height in pixels.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_WINDOW
                 bridge_ok: (Result = implementation.internal_maximum_height) or (Result = implementation.minimum_height)

     maximum_width: INTEGER
                 -- Upper bound on width in pixels.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_WINDOW
                 bridge_ok: (Result = implementation.internal_maximum_width) or (Result = implementation.minimum_width)

     menu_bar: EV_MENU_BAR
                 -- Horizontal bar at top of client area that contains menu's.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_WINDOW
                 bridge_ok: Result = implementation.menu_bar

     frozen object_id: INTEGER
                 -- Unique for current object in any given session
                 -- (from IDENTIFIED)
           ensure -- from IDENTIFIED
                 valid_id: id_object (Result) = Current

     parent: EV_CONTAINER
                 -- Contains Current.
                 -- (from EV_WIDGET)
           require -- from EV_CONTAINABLE
                 not_destroyed: not is_destroyed
           ensure then -- from EV_WIDGET
                 bridge_ok: Result = implementation.parent

     pebble: ANY
                 -- Data to be transported by pick and drop mechanism.
                 -- (from EV_PICK_AND_DROPABLE)
           ensure then -- from EV_PICK_AND_DROPABLE
                 bridge_ok: Result = implementation.pebble

     pebble_function: FUNCTION [ANY, TUPLE, ANY]
                 -- Returns data to be transported by pick and drop mechanism.
                 -- (from EV_PICK_AND_DROPABLE)
           ensure then -- from EV_PICK_AND_DROPABLE
                 bridge_ok: Result = implementation.pebble_function

     pebble_positioning_enabled: BOOLEAN
                 -- If True then pick and drop start coordinates are
                 -- pebble_x_position, pebble_y_position.
                 -- If False then pick and drop start coordinates are
                 -- the pointer coordinates.
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_PICK_AND_DROPABLE
                 not_destroyed: not is_destroyed
           ensure then -- from EV_PICK_AND_DROPABLE
                 bridge_ok: Result = implementation.pebble_positioning_enabled

     pebble_x_position: INTEGER
                 -- Initial x position for pick and drop relative to Current.
                 -- (from EV_PICK_AND_DROPABLE)
           ensure then -- from EV_PICK_AND_DROPABLE
                 bridge_ok: Result = implementation.pebble_x_position

     pebble_y_position: INTEGER
                 -- Initial y position for pick and drop relative to Current.
                 -- (from EV_PICK_AND_DROPABLE)
           ensure then -- from EV_PICK_AND_DROPABLE
                 bridge_ok: Result = implementation.pebble_y_position

     pointer_position: EV_COORDINATE
                 -- Position of the screen pointer relative to Current.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
                 is_show_requested: is_show_requested

     pointer_style: EV_CURSOR
                 -- Cursor displayed when pointer is over this widget.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed

     target_name: STRING
                 -- Optional textual name describing Current pick and drop hole.
                 -- (from EV_ABSTRACT_PICK_AND_DROPABLE)

     title: STRING
                 -- A textual name used by the window manager.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_WINDOW
                 bridge_ok: equal (Result, implementation.title)

     upper_bar: EV_VERTICAL_BOX
                 -- Room at top of window. (Example use: toolbars.)
                 -- Positioned below menu bar.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_WINDOW
                 bridge_ok: Result = implementation.upper_bar
     
feature -- Measurement

     client_height: INTEGER
                 -- Height of the area available to children in pixels.
                 -- (from EV_CONTAINER)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed
           ensure -- from EV_CONTAINER
                 bridge_ok: Result = implementation.client_height

     client_width: INTEGER
                 -- Width of the area available to children in pixels.
                 -- (from EV_CONTAINER)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed
           ensure -- from EV_CONTAINER
                 bridge_ok: Result = implementation.client_width

     height: INTEGER
                 -- Vertical size in pixels.
                 -- Same as minimum_height when not displayed.
                 -- (from EV_POSITIONED)
           require -- from EV_POSITIONED
                 not_destroyed: not is_destroyed
           ensure -- from EV_POSITIONED
                 bridge_ok: Result = implementation.height

     minimum_height: INTEGER
                 -- Lower bound on height in pixels.
                 -- (from EV_POSITIONED)
           require -- from EV_POSITIONED
                 not_destroyed: not is_destroyed
           ensure -- from EV_POSITIONED
                 bridge_ok: Result = implementation.minimum_height
                 positive_or_zero: Result >= 0

     minimum_width: INTEGER
                 -- Lower bound on width in pixels.
                 -- (from EV_POSITIONED)
           require -- from EV_POSITIONED
                 not_destroyed: not is_destroyed
           ensure -- from EV_POSITIONED
                 bridge_ok: Result = implementation.minimum_width
                 positive_or_zero: Result >= 0

     screen_x: INTEGER
                 -- Horizontal offset relative to left of screen in pixels.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
           ensure -- from EV_WIDGET
                 bridge_ok: Result = implementation.screen_x

     screen_y: INTEGER
                 -- Vertical offset relative to top of screen in pixels.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
           ensure -- from EV_WIDGET
                 bridge_ok: Result = implementation.screen_y

     width: INTEGER
                 -- Horizontal size in pixels.
                 -- Same as minimum_width when not displayed.
                 -- (from EV_POSITIONED)
           require -- from EV_POSITIONED
                 not_destroyed: not is_destroyed
           ensure -- from EV_POSITIONED
                 bridge_ok: Result = implementation.width

     x_position: INTEGER
                 -- Horizontal offset relative to parent x_position in pixels.
                 -- (from EV_POSITIONED)
           require -- from EV_POSITIONED
                 not_destroyed: not is_destroyed
           ensure -- from EV_POSITIONED
                 bridge_ok: Result = implementation.x_position

     y_position: INTEGER
                 -- Vertical offset relative to parent y_position in pixels.
                 -- (from EV_POSITIONED)
           require -- from EV_POSITIONED
                 not_destroyed: not is_destroyed
           ensure -- from EV_POSITIONED
                 bridge_ok: Result = implementation.y_position
     
feature -- Status report

     count: INTEGER
                 -- Number of items in Current.
                 -- (from EV_CELL)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed
           ensure then -- from EV_CELL
                 valid_result: Result = 0 or Result = 1

     extendible: BOOLEAN
                 -- Is there no element?
                 -- Was declared in EV_CELL as synonym of is_empty.
                 -- (from EV_CELL)

     full: BOOLEAN
                 -- Is structure filled to capacity?
                 -- (from EV_CELL)

     has (v: EV_WIDGET): BOOLEAN
                 -- Does structure include v?
                 -- (from EV_WINDOW)
           ensure -- from CONTAINER
                 not_found_in_empty: Result implies not is_empty

     has_capture: BOOLEAN
                 -- Does widget have capture?
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
           ensure -- from EV_WIDGET
                 bridge_ok: Result = implementation.has_capture

     has_focus: BOOLEAN
                 -- Does widget have the keyboard focus?
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
           ensure -- from EV_WIDGET
                 bridge_ok: Result = implementation.has_focus

     is_displayed: BOOLEAN
                 -- Is Current visible on the screen?
                 -- True when show requested and parent displayed.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
           ensure -- from EV_WIDGET
                 bridge_ok: Result = implementation.is_displayed

     is_empty: BOOLEAN
                 -- Is there no element?
                 -- Was declared in EV_CELL as synonym of extendible.
                 -- (from EV_CELL)

     is_inserted (v: EV_WIDGET): BOOLEAN
                 -- Has v been inserted by the most recent insertion?
                 -- (By default, the value returned is equivalent to calling
                 -- `has (v)'. However, descendants might be able to provide more
                 -- efficient implementations.)
                 -- (from COLLECTION)

     is_maximized: BOOLEAN
                 -- Is displayed at maximum size?
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_TITLED_WINDOW
                 bridge_ok: Result = implementation.is_maximized

     is_minimized: BOOLEAN
                 -- Is displayed iconified/minimised?
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_TITLED_WINDOW
                 bridge_ok: Result = implementation.is_minimized

     is_sensitive: BOOLEAN
                 -- Is object sensitive to user input.
                 -- (from EV_SENSITIVE)
           require -- from EV_SENSITIVE
                 not_destroyed: not is_destroyed
           ensure -- from EV_SENSITIVE
                 bridge_ok: Result = implementation.user_is_sensitive

     is_show_requested: BOOLEAN
                 -- Will Current be displayed when its parent is?
                 -- See also is_displayed.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
           ensure -- from EV_WIDGET
                 bridge_ok: Result = implementation.is_show_requested

     mode_is_drag_and_drop: BOOLEAN
                 -- Is the user interface mode drag and drop?
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_PICK_AND_DROPABLE
                 not_destroyed: not is_destroyed
           ensure then -- from EV_PICK_AND_DROPABLE
                 bridge_ok: Result = implementation.mode_is_drag_and_drop

     mode_is_pick_and_drop: BOOLEAN
                 -- Is the user interface mode pick and drop?
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_PICK_AND_DROPABLE
                 not_destroyed: not is_destroyed
           ensure then -- from EV_PICK_AND_DROPABLE
                 bridge_ok: Result = implementation.mode_is_pick_and_drop

     mode_is_target_menu: BOOLEAN
                 -- Is the user interface mode a pop-up menu of targets?
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_PICK_AND_DROPABLE
                 not_destroyed: not is_destroyed
           ensure then -- from EV_PICK_AND_DROPABLE
                 bridge_ok: Result = implementation.mode_is_target_menu

     prunable: BOOLEAN
                 -- May items be removed?
                 -- (from EV_CELL)

     readable: BOOLEAN
                 -- Is there a current item that may be accessed?
                 -- (from EV_CELL)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed

     user_can_resize: BOOLEAN
                 -- Can the user resize?
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_WINDOW
                 bridge_ok: Result = implementation.user_can_resize

     writable: BOOLEAN
                 -- Is there a current item that may be modified?
                 -- (from EV_CELL)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed
     
feature -- Status setting

     center_pointer
                 -- Position screen pointer over center of Current.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed

     disable_capture
                 -- Disable grab of all user input events.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
           ensure -- from EV_WIDGET
                 not_has_capture: not has_capture

     disable_pebble_positioning
                 -- Assign False to pebble_positioning_enabled.
                 -- The pick and drop will start at the pointer position.
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_PICK_AND_DROPABLE
                 not_destroyed: not is_destroyed
           ensure -- from EV_PICK_AND_DROPABLE
                 pebble_positioning_updated: not pebble_positioning_enabled

     disable_sensitive
                 -- Make object non-sensitive to user input.
                 -- (from EV_SENSITIVE)
           require -- from EV_SENSITIVE
                 not_destroyed: not is_destroyed
           ensure -- from EV_SENSITIVE
                 is_unsensitive: not is_sensitive

     disable_user_resize
                 -- Prevent user from resizing.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_WINDOW
                 not_user_can_resize: not user_can_resize

     enable_capture
                 -- Grab all user input events (mouse and keyboard).
                 -- disable_capture must be called to resume normal input handling.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
                 is_displayed: is_displayed
           ensure -- from EV_WIDGET
                 has_capture: has_capture

     enable_pebble_positioning
                 -- Assign True to pebble_positioning_enabled.
                 -- Use pebble_x_position and pebble_y_position as the initial coordinates
                 -- for the pick and drop in pixels relative to Current.
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_PICK_AND_DROPABLE
                 not_destroyed: not is_destroyed
           ensure -- from EV_PICK_AND_DROPABLE
                 pebble_positioning_updated: pebble_positioning_enabled

     enable_sensitive
                 -- Make object sensitive to user input.
                 -- (from EV_SENSITIVE)
           require -- from EV_SENSITIVE
                 not_destroyed: not is_destroyed
           ensure -- from EV_SENSITIVE
                 is_sensitive: (parent = void or parent_is_sensitive) implies is_sensitive

     enable_user_resize
                 -- Allow user to resize.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_WINDOW
                 user_can_resize: user_can_resize

     hide
                 -- Request that Current not be displayed even when its parent is.
                 -- Make is_show_requested False.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
           ensure -- from EV_WIDGET
                 not_is_show_requested: not is_show_requested

     lock_update
                 -- Lock drawing updates for this window on certain platforms until
                 -- unlock_update is called.
                 --
                 -- Note: - Only one window can be locked at a time.
                 --       - The window cannot be moved while update is locked.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
                 no_locked_window: ((create {EV_ENVIRONMENT}).application.locked_window = void)
           ensure -- from EV_WINDOW
                 locked_window_is_current: (create {EV_ENVIRONMENT}).application.locked_window = Current

     lower
                 -- Request that window be displayed below all other windows.
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed

     maximize
                 -- Display at maximum size.
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_TITLED_WINDOW
                 is_maximized: is_maximized

     merge_radio_button_groups (other: EV_CONTAINER)
                 -- Merge Current radio button group with that of other.
                 -- (from EV_CONTAINER)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed
                 other_not_void: other /= void

     minimize
                 -- Display iconified/minimised.
                 -- It is not possible to guarantee this on some
                 -- platform configurations.
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed

     raise
                 -- Request that window be displayed above all other windows.
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed

     remove_menu_bar
                 -- Make menu_bar Void.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_WINDOW
                 void: menu_bar = void

     remove_pebble
                 -- Make pebble Void and pebble_function `Void,
                 -- Removing transport.
                 -- (from EV_PICK_AND_DROPABLE)
           ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE
                 pebble_removed: pebble = void and pebble_function = void

     remove_title
                 -- Make title Void.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_WINDOW
                 a_title_removed: title = void

     restore
                 -- Restore to original position when minimized or maximized.
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_TITLED_WINDOW
                 minimize_restored: old is_minimized implies not is_minimized
                 maximize_restored: old is_maximized implies not is_maximized

     set_accept_cursor (a_cursor: EV_CURSOR)
                 -- Set a_cursor to be displayed when the screen pointer is over a
                 -- target that accepts pebble during pick and drop.
                 -- (from EV_PICK_AND_DROPABLE)
           ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE
                 accept_cursor_assigned: accept_cursor.is_equal (a_cursor)

     set_actual_drop_target_agent (an_agent: like actual_drop_target_agent)
                 -- Assign an_agent to actual_drop_target_agent.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
                 an_agent_not_void: an_agent /= void
           ensure -- from EV_WIDGET
                 assigned: actual_drop_target_agent = an_agent

     set_default_colors
                 -- Set foreground and background color to their default values.
                 -- (from EV_COLORIZABLE)
           require -- from EV_COLORIZABLE
                 not_destroyed: not is_destroyed

     set_deny_cursor (a_cursor: EV_CURSOR)
                 -- Set a_cursor to be displayed when the screen pointer is not
                 -- over a valid target.
                 -- (from EV_PICK_AND_DROPABLE)
           ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE
                 deny_cursor_assigned: deny_cursor.is_equal (a_cursor)

     set_drag_and_drop_mode
                 -- Set user interface mode to drag and drop.
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_PICK_AND_DROPABLE
                 not_destroyed: not is_destroyed
           ensure -- from EV_PICK_AND_DROPABLE
                 drag_and_drop_set: mode_is_drag_and_drop

     set_focus
                 -- Grab keyboard focus.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
                 is_displayed: is_displayed
                 is_sensitive: is_sensitive
           ensure -- from EV_WIDGET
                 has_focus: has_focus

     set_height (a_height: INTEGER)
                 -- Assign a_height to height in pixels.
                 -- (from EV_POSITIONABLE)
           require -- from EV_POSITIONABLE
                 a_height_positive_or_zero: a_height >= 0
           ensure -- from EV_POSITIONABLE
                 height_assigned: height = minimum_height or else height = a_height

     set_maximum_height (a_maximum_height: INTEGER)
                 -- Assign a_maximum_height to maximum_height in pixels.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
                 a_maximum_height_non_negative: a_maximum_height >= 0
                 a_maximum_height_not_less_than_minimum_height: a_maximum_height >= minimum_height
           ensure -- from EV_WINDOW
                 maximum_height_assigned: maximum_height = a_maximum_height

     set_maximum_size (a_maximum_width, a_maximum_height: INTEGER)
                 -- Assign a_maximum_width to maximum_width
                 -- and a_maximum_height to maximum_height in pixels.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
                 a_maximum_width_not_less_than_minimum_width: a_maximum_width >= minimum_width
                 a_maximum_height_not_less_than_minimum_height: a_maximum_height >= minimum_height
           ensure -- from EV_WINDOW
                 maximum_width_assigned: maximum_width = a_maximum_width
                 maximum_height_assigned: maximum_height = a_maximum_height

     set_maximum_width (a_maximum_width: INTEGER)
                 -- Assign a_maximum_width to maximum_width in pixels.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
                 a_maximum_width_non_negative: a_maximum_width >= 0
                 a_maximum_width_not_less_than_minimum_width: a_maximum_width >= minimum_width
           ensure -- from EV_WINDOW
                 maximum_width_assigned: maximum_width = a_maximum_width

     set_menu_bar (a_menu_bar: EV_MENU_BAR)
                 -- Assign a_menu_bar to menu_bar.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
                 no_menu_bar_assigned: menu_bar = void
                 a_menu_bar_not_void: a_menu_bar /= void
           ensure -- from EV_WINDOW
                 assigned: menu_bar = a_menu_bar

     set_pebble (a_pebble: like pebble)
                 -- Assign a_pebble to pebble.
                 -- Overrides set_pebble_function.
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_ABSTRACT_PICK_AND_DROPABLE
                 a_pebble_not_void: a_pebble /= void
           ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE
                 pebble_assigned: pebble = a_pebble

     set_pebble_function (a_function: FUNCTION [ANY, TUPLE, ANY])
                 -- Set a_function to compute pebble.
                 -- It will be called once each time a pick occurs, the result
                 -- will be assigned to pebble for the duration of transport.
                 -- When a pick occurs, the pick position in widget coordinates,
                 -- <<x, y>> in pixels, is passed.
                 -- To handle this data use a_function of type
                 -- FUNCTION [ANY, TUPLE [INTEGER, INTEGER], ANY] and return the
                 -- pebble as a function of x and y.
                 -- Overrides set_pebble.
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_ABSTRACT_PICK_AND_DROPABLE
                 a_function_not_void: a_function /= void
                 a_function_takes_two_integer_open_operands: a_function.valid_operands ([1, 1])
           ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE
                 pebble_function_assigned: pebble_function = a_function

     set_pebble_position (a_x, a_y: INTEGER)
                 -- Set the initial position for pick and drop
                 -- Coordinates are in pixels and are relative to position of Current.
                 -- Pebble_positioning_enabled must be True for the position to be used,
                 -- use enable_pebble_positioning.
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_PICK_AND_DROPABLE
                 not_destroyed: not is_destroyed
           ensure -- from EV_PICK_AND_DROPABLE
                 pebble_position_assigned: pebble_x_position = a_x and pebble_y_position = a_y

     set_pick_and_drop_mode
                 -- Set user interface mode to pick and drop.
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_PICK_AND_DROPABLE
                 not_destroyed: not is_destroyed
           ensure -- from EV_PICK_AND_DROPABLE
                 pick_and_drop_set: mode_is_pick_and_drop

     set_position (a_x, a_y: INTEGER)
                 -- Assign a_x to x_position and a_y to y_position in pixels.
                 -- (from EV_POSITIONABLE)
           ensure -- from EV_POSITIONABLE
                 x_position_assigned: x_position = a_x
                 y_position_assigned: y_position = a_y

     set_size (a_width, a_height: INTEGER)
                 -- Assign a_width to width and a_height to height in pixels.
                 -- (from EV_POSITIONABLE)
           require -- from EV_POSITIONABLE
                 a_width_positive_or_zero: a_width >= 0
                 a_height_positive_or_zero: a_height >= 0
           ensure -- from EV_POSITIONABLE
                 width_assigned: width = minimum_width or else width = a_width
                 height_assigned: height = minimum_height or else height = a_height

     set_target_menu_mode
                 -- Set user interface mode to pop-up menu of targets.
                 -- (from EV_PICK_AND_DROPABLE)
           require -- from EV_PICK_AND_DROPABLE
                 not_destroyed: not is_destroyed
           ensure -- from EV_PICK_AND_DROPABLE
                 target_menu_mode_set: mode_is_target_menu

     set_target_name (a_name: STRING)
                 -- Assign a_name to target_name.
                 -- (from EV_ABSTRACT_PICK_AND_DROPABLE)
           require -- from EV_ABSTRACT_PICK_AND_DROPABLE
                 a_name_not_void: a_name /= void
           ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE
                 target_name_assigned: a_name /= target_name and a_name.is_equal (target_name)

     set_title (a_title: STRING)
                 -- Assign a_title to title.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
                 a_title_not_void: a_title /= void
                 a_title_not_empty: not a_title.is_empty
           ensure -- from EV_WINDOW
                 a_title_assigned: title.is_equal (a_title)

     set_width (a_width: INTEGER)
                 -- Assign a_width to width in pixels.
                 -- (from EV_POSITIONABLE)
           require -- from EV_POSITIONABLE
                 a_width_positive_or_zero: a_width >= 0
           ensure -- from EV_POSITIONABLE
                 width_assigned: width = minimum_width or else width = a_width

     set_x_position (a_x: INTEGER)
                 -- Assign a_x to x_position in pixels.
                 -- (from EV_POSITIONABLE)
           ensure -- from EV_POSITIONABLE
                 x_position_assigned: x_position = a_x

     set_y_position (a_y: INTEGER)
                 -- Assign a_y to y_position in pixels.
                 -- (from EV_POSITIONABLE)
           ensure -- from EV_POSITIONABLE
                 y_position_assigned: y_position = a_y

     show
                 -- Request that Current be displayed when its parent is.
                 -- True by default.
                 -- Make is_show_requested True.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
           ensure -- from EV_WIDGET
                 is_show_requested: is_show_requested

     unlock_update
                 -- Unlock updates for this widget on certain platforms.
                 -- (from EV_WINDOW)
           require -- from EV_WINDOW
                 not_destroyed: not is_destroyed
                 locked_window_is_current: (create {EV_ENVIRONMENT}).application.locked_window = Current
           ensure -- from EV_WINDOW
                 no_locked_window: ((create {EV_ENVIRONMENT}).application.locked_window = void)
     
feature -- Element change

     extend (v: like item)
                 -- Ensure that structure includes v.
                 -- Do not move cursor.
                 -- (from EV_CONTAINER)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed
                 extendible: extendible
                 v_not_void: v /= void
                 v_parent_void: v.parent = void
                 v_not_current: v /= Current
                 v_not_parent_of_current: not is_parent_recursive (v)
                 v_not_window: not v.conforms_to (create {EV_WINDOW})
           ensure -- from EV_CONTAINER
                 has_v: has (v)

     fill (other: CONTAINER [EV_WIDGET])
                 -- Fill with as many items of other as possible.
                 -- The representations of other and current structure
                 -- need not be the same.
                 -- (from COLLECTION)
           require -- from COLLECTION
                 other_not_void: other /= void
                 extendible

     put (v: like item)
                 -- Replace item with v.
                 -- Was declared in EV_CONTAINER as synonym of replace.
                 -- (from EV_CONTAINER)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed
                 writable: writable
                 v_not_void: v /= void
                 v_parent_void: v.parent = void
                 v_not_current: v /= Current
                 v_not_parent_of_current: not is_parent_recursive (v)
                 v_not_window: not v.conforms_to (create {EV_WINDOW})
           ensure -- from EV_CONTAINER
                 has_v: has (v)

     remove_help_context
                 -- Remove key press action associated with EV_APPLICATION.help_key.
                 -- (from EV_HELP_CONTEXTABLE)
           require -- from EV_HELP_CONTEXTABLE
                 not_destroyed: not is_destroyed
                 help_context_not_void: help_context /= void
           ensure -- from EV_HELP_CONTEXTABLE
                 no_help_context: help_context = void

     remove_icon_name
                 -- Make icon_name Void.
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed
           ensure -- from EV_TITLED_WINDOW
                 icon_name_removed: icon_name = void

     replace (v: like item)
                 -- Replace item with v.
                 -- Was declared in EV_CONTAINER as synonym of put.
                 -- (from EV_CONTAINER)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed
                 writable: writable
                 v_not_void: v /= void
                 v_parent_void: v.parent = void
                 v_not_current: v /= Current
                 v_not_parent_of_current: not is_parent_recursive (v)
                 v_not_window: not v.conforms_to (create {EV_WINDOW})
           ensure -- from EV_CONTAINER
                 has_v: has (v)

     set_background_color (a_color: like background_color)
                 -- Assign a_color to foreground_color.
                 -- (from EV_COLORIZABLE)
           require -- from EV_COLORIZABLE
                 not_destroyed: not is_destroyed
                 a_color_not_void: a_color /= void
           ensure -- from EV_COLORIZABLE
                 background_color_assigned: background_color.is_equal (a_color)

     set_data (some_data: like data)
                 -- Assign some_data to data.
                 -- (from EV_ANY)
           require -- from EV_ANY
                 not_destroyed: not is_destroyed
           ensure -- from EV_ANY
                 data_assigned: data = some_data

     set_foreground_color (a_color: like foreground_color)
                 -- Assign a_color to foreground_color.
                 -- (from EV_COLORIZABLE)
           require -- from EV_COLORIZABLE
                 not_destroyed: not is_destroyed
                 a_color_not_void: a_color /= void
           ensure -- from EV_COLORIZABLE
                 foreground_color_assigned: foreground_color.is_equal (a_color)

     set_help_context (an_help_context: like help_context)
                 -- Assign an_help_context to help_context.
                 -- (from EV_HELP_CONTEXTABLE)
           require -- from EV_HELP_CONTEXTABLE
                 not_destroyed: not is_destroyed
                 an_help_context_not_void: an_help_context /= void
           ensure -- from EV_HELP_CONTEXTABLE
                 help_context_assigned: help_context.is_equal (an_help_context)

     set_icon_name (an_icon_name: STRING)
                 -- Assign an_icon_name to icon_name.
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed
                 an_icon_name_not_void: an_icon_name /= void
                 an_icon_name_not_empty: not an_icon_name.is_empty
           ensure -- from EV_TITLED_WINDOW
                 icon_name_assigned: icon_name.is_equal (an_icon_name)

     set_icon_pixmap (an_icon: EV_PIXMAP)
                 -- Assign an_icon to icon.
                 -- (from EV_TITLED_WINDOW)
           require -- from EV_TITLED_WINDOW
                 not_destroyed: not is_destroyed
                 pixmap_not_void: an_icon /= void
           ensure -- from EV_TITLED_WINDOW
                 icon_pixmap_assigned: icon_pixmap.is_equal (an_icon)

     set_minimum_height (a_minimum_height: INTEGER)
                 -- Set a_minimum_height in pixels to minimum_height.
                 -- If height is less than a_minimim_height, resize.
                 -- This setting takes effect next time application is idle.
                 -- From now, minimum_height is fixed and will not be changed
                 -- dynamically by the application anymore.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
                 a_minimum_height_positive: a_minimum_height > 0
           ensure -- from EV_WIDGET
                 minimum_height_assigned: minimum_height = a_minimum_height

     set_minimum_size (a_minimum_width, a_minimum_height: INTEGER)
                 -- Assign a_minimum_height to minimum_height
                 -- and a_minimum_width to minimum_width in pixels.
                 -- If width or height is less than minimum size, resize.
                 -- This setting takes effect next time application is idle.
                 -- From now, minimum size is fixed and will not be changed
                 -- dynamically by the application anymore.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
                 a_minimum_width_positive: a_minimum_width > 0
                 a_minimum_height_positive: a_minimum_height > 0
           ensure -- from EV_WIDGET
                 minimum_width_assigned: minimum_width = a_minimum_width
                 minimum_height_assigned: minimum_height = a_minimum_height

     set_minimum_width (a_minimum_width: INTEGER)
                 -- Assign a_minimum_width in pixels to minimum_width.
                 -- If width is less than a_minimim_width, resize.
                 -- This setting takes effect next time application is idle.
                 -- From now, minimum_width is fixed and will not be changed
                 -- dynamically by the application anymore.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
                 a_minimum_width_positive: a_minimum_width > 0
           ensure -- from EV_WIDGET
                 minimum_width_assigned: minimum_width = a_minimum_width

     set_pointer_style (a_cursor: like pointer_style)
                 -- Assign a_cursor to pointer_style.
                 -- (from EV_WIDGET)
           require -- from EV_WIDGET
                 not_destroyed: not is_destroyed
                 a_cursor_not_void: a_cursor /= void
           ensure -- from EV_WIDGET
                 pointer_style_assigned: pointer_style.is_equal (a_cursor)
     
feature -- Removal

     prune (v: EV_WIDGET)
                 -- Remove v if contained.
                 -- (from EV_CELL)
           require -- from COLLECTION
                 prunable: prunable
           ensure then -- from EV_CELL
                 not has (v)

     prune_all (v: EV_WIDGET)
                 -- Remove all occurrences of v.
                 -- (Reference or object equality,
                 -- based on object_comparison.)
                 -- (from COLLECTION)
           require -- from COLLECTION
                 prunable
           ensure -- from COLLECTION
                 no_more_occurrences: not has (v)

     wipe_out
                 -- Remove item.
                 -- (from EV_CELL)
           require -- from COLLECTION
                 prunable
           ensure -- from COLLECTION
                 wiped_out: is_empty
     
feature -- Conversion

     dialog_unit_to_pixels (a_size: INTEGER): INTEGER
                 -- Convert a_size dialog units into pixels.
                 -- Used to get the same look&feel under all platforms
                 -- (from EV_LAYOUT_CONSTANTS)

     linear_representation: LINEAR [like item]
                 -- Representation as a linear structure
                 -- (from EV_CELL)
     
feature -- Duplication

     copy (other: like Current)
                 -- Update current object using fields of object attached
                 -- to other, so as to yield equal objects.
                 -- (from EV_ANY)
           require -- from ANY
                 other_not_void: other /= void
                 type_identity: same_type (other)
           ensure -- from ANY
                 is_equal: is_equal (other)
     
feature -- Basic operations

     dialog_key_press_action (a_key: EV_KEY)
                 -- The action performed to process default push and cancel
                 -- buttons. This is inserted in key_press_actions and
                 -- behaves is follows:
                 -- If escape is pressed at any time then
                 -- If there is a default_cancel_button then
                 -- If it is sensitive, call its select_actions,
                 -- otherwise, close the dialog.
                 -- If there is no default_cancel_button, do nothing.
                 -- If enter is pressed at any time then
                 -- If a push button is currently focused then call its
                 -- select_actions. If no push button has the focus, then
                 -- call the select_actions of the default push button if
                 -- it is sensitive.
                 -- (from EV_DIALOG)

     propagate_background_color
                 -- Propagate background_color to all children.
                 -- (from EV_CONTAINER)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed
           ensure -- from EV_CONTAINER
                 background_color_propagated: background_color_propagated

     propagate_foreground_color
                 -- Propagate foreground_color to all children.
                 -- (from EV_CONTAINER)
           require -- from EV_CONTAINER
                 not_destroyed: not is_destroyed
           ensure -- from EV_CONTAINER
                 foreground_color_propagated: foreground_color_propagated

     show_modal_to_window (a_window: EV_WINDOW)
                 -- Show and wait until Current is closed.
                 -- Current is shown modal with respect to a_window.
                 -- (from EV_DIALOG)
           require -- from EV_DIALOG
                 not_destroyed: not is_destroyed
                 dialog_modeless: not is_modal
                 a_window_not_void: a_window /= void
                 a_window_not_current: a_window /= Current

     show_relative_to_window (a_window: EV_WINDOW)
                 -- Show Current with respect to a_window.
                 -- (from EV_DIALOG)
           require -- from EV_DIALOG
                 not_destroyed: not is_destroyed
                 a_window_not_void: a_window /= void
                 a_window_not_current: a_window /= Current
     
feature -- Access (border constants)

     default_border_size: INTEGER
                 -- Default size for borders
                 -- (from EV_LAYOUT_CONSTANTS)

     small_border_size: INTEGER
                 -- Small size for borders
                 -- (from EV_LAYOUT_CONSTANTS)
     
feature -- Access (button size constants)

     default_button_height: INTEGER
                 -- Default height for buttons
                 -- (from EV_LAYOUT_CONSTANTS)

     default_button_width: INTEGER
                 -- Default width for buttons
                 -- (from EV_LAYOUT_CONSTANTS)
     
feature -- Access (padding constants)

     default_padding_size: INTEGER
                 -- Default size for padding
                 -- (from EV_LAYOUT_CONSTANTS)

     large_border_size: INTEGER
                 -- Default size for borders
                 -- (from EV_LAYOUT_CONSTANTS)

     small_padding_size: INTEGER
                 -- Small size for padding
                 -- (from EV_LAYOUT_CONSTANTS)

     tiny_padding_size: INTEGER
                 -- Tiny size for padding
                 -- (from EV_LAYOUT_CONSTANTS)
     
feature -- Command

     destroy
                 -- Destroy underlying native toolkit object.
                 -- Render Current unusable.
                 -- (from EV_ANY)
           ensure -- from EV_ANY
                 is_destroyed: is_destroyed
     
feature -- Constant strings

     t_borland: STRING
                 -- Text for Borland.

     t_copyright_info: STRING

     t_info: STRING
     
feature -- Event handling

     conforming_pick_actions: EV_NOTIFY_ACTION_SEQUENCE
                 -- Actions to be performed when a pebble that fits here is picked.
                 -- (from EV_PICK_AND_DROPABLE_ACTION_SEQUENCES)
           ensure -- from EV_PICK_AND_DROPABLE_ACTION_SEQUENCES
                 not_void: Result /= void

     drop_actions: EV_PND_ACTION_SEQUENCE
                 -- Actions to be performed when a pebble is dropped here.
                 -- (from EV_PICK_AND_DROPABLE_ACTION_SEQUENCES)
           ensure -- from EV_PICK_AND_DROPABLE_ACTION_SEQUENCES
                 not_void: Result /= void

     focus_in_actions: EV_FOCUS_ACTION_SEQUENCE
                 -- Actions to be performed when keyboard focus is gained.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     focus_out_actions: EV_FOCUS_ACTION_SEQUENCE
                 -- Actions to be performed when keyboard focus is lost.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     key_press_actions: EV_KEY_ACTION_SEQUENCE
                 -- Actions to be performed when a keyboard key is pressed.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     key_press_string_actions: EV_KEY_STRING_ACTION_SEQUENCE
                 -- Actions to be performed when a keyboard press generates a displayable character.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     key_release_actions: EV_KEY_ACTION_SEQUENCE
                 -- Actions to be performed when a keyboard key is released.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     move_actions: EV_GEOMETRY_ACTION_SEQUENCE
                 -- Actions to be performed when window moves.
                 -- (from EV_WINDOW_ACTION_SEQUENCES)
           ensure -- from EV_WINDOW_ACTION_SEQUENCES
                 not_void: Result /= void

     pick_actions: EV_PND_START_ACTION_SEQUENCE
                 -- Actions to be performed when pebble is picked up.
                 -- (from EV_PICK_AND_DROPABLE_ACTION_SEQUENCES)
           ensure -- from EV_PICK_AND_DROPABLE_ACTION_SEQUENCES
                 not_void: Result /= void

     pointer_button_press_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
                 -- Actions to be performed when screen pointer button is pressed.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     pointer_button_release_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
                 -- Actions to be performed when screen pointer button is released.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     pointer_double_press_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
                 -- Actions to be performed when screen pointer is double clicked.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     pointer_enter_actions: EV_NOTIFY_ACTION_SEQUENCE
                 -- Actions to be performed when screen pointer enters widget.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     pointer_leave_actions: EV_NOTIFY_ACTION_SEQUENCE
                 -- Actions to be performed when screen pointer leaves widget.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     pointer_motion_actions: EV_POINTER_MOTION_ACTION_SEQUENCE
                 -- Actions to be performed when screen pointer moves.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     resize_actions: EV_GEOMETRY_ACTION_SEQUENCE
                 -- Actions to be performed when size changes.
                 -- (from EV_WIDGET_ACTION_SEQUENCES)
           ensure -- from EV_WIDGET_ACTION_SEQUENCES
                 not_void: Result /= void

     show_actions: EV_NOTIFY_ACTION_SEQUENCE
                 -- Actions to be performed when window is shown.
                 -- (from EV_WINDOW_ACTION_SEQUENCES)
           ensure -- from EV_WINDOW_ACTION_SEQUENCES
                 not_void: Result /= void
     
feature -- Operation

     set_default_size_for_button (a_button: EV_BUTTON)
                 -- Set the default size for a_button.
                 -- (from EV_LAYOUT_CONSTANTS)
     
feature -- Status Report

     is_destroyed: BOOLEAN
                 -- Is Current no longer usable?
                 -- (from EV_ANY)
           ensure -- from EV_ANY
                 bridge_ok: Result = implementation.is_destroyed
     
feature -- Status Setting

     remove_default_cancel_button
                 -- Remove default_cancel_button.
                 -- (from EV_DIALOG)
           require -- from EV_DIALOG
                 not_destroyed: not is_destroyed
                 has_default_cancel_button: default_cancel_button /= void
           ensure -- from EV_DIALOG
                 not_has_default_cancel_button: default_cancel_button = void

     remove_default_push_button
                 -- Remove default_push_button.
                 -- (from EV_DIALOG)
           require -- from EV_DIALOG
                 not_destroyed: not is_destroyed
                 has_default_push_button: default_push_button /= void
           ensure -- from EV_DIALOG
                 not_has_default_push_button: default_push_button = void

     set_default_cancel_button (a_button: EV_BUTTON)
                 -- Assign a_button to default_cancel_button.
                 -- (from EV_DIALOG)
           require -- from EV_DIALOG
                 not_destroyed: not is_destroyed
                 a_button_not_void: a_button /= void
                 has_button: has_recursive (a_button)
           ensure -- from EV_DIALOG
                 default_cancel_button_set: default_cancel_button = a_button

     set_default_push_button (a_button: EV_BUTTON)
                 -- Assign a_button to `default push button'.
                 -- (from EV_DIALOG)
           require -- from EV_DIALOG
                 not_destroyed: not is_destroyed
                 a_button_not_void: a_button /= void
                 has_button: has_recursive (a_button)
     
invariant

           -- from ANY
     reflexive_equality: standard_is_equal (Current)
     reflexive_conformance: conforms_to (Current)
           -- from EV_TITLED_WINDOW
     accelerators_not_void: is_usable implies accelerators /= void
           -- from EV_WINDOW
     consistent_horizontal_bounds: maximum_width >= minimum_width
     consistent_vertical_bounds: maximum_height >= minimum_height
     upper_bar_not_void: is_usable implies upper_bar /= void
     lower_bar_not_void: is_usable implies lower_bar /= void
           -- from EV_CONTAINER
     client_width_within_bounds: is_usable implies client_width >= 0 and client_width <= width
     client_height_within_bounds: is_usable implies client_height >= 0 and client_height <= height
     all_radio_buttons_connected: is_usable implies all_radio_buttons_connected
     parent_of_items_is_current: is_usable implies parent_of_items_is_current
     items_unique: is_usable implies items_unique
           -- from EV_WIDGET
     pointer_position_not_void: is_usable and is_show_requested implies pointer_position /= void
     is_displayed_implies_show_requested: is_usable and then is_displayed implies is_show_requested
     parent_contains_current: is_usable and then parent /= void implies parent.has (Current)
           -- from EV_PICK_AND_DROPABLE
     user_interface_modes_mutually_exclusive: mode_is_pick_and_drop.to_integer + mode_is_drag_and_drop.to_integer + mode_is_target_menu.to_integer = 1
           -- from EV_ANY
     is_initialized: is_initialized
     is_coupled: implementation /= void and then implementation.interface = Current
     default_create_called: default_create_called
           -- from EV_COLORIZABLE
     background_color_not_void: is_usable implies background_color /= void
     foreground_color_not_void: is_usable implies foreground_color /= void
           -- from EV_POSITIONED
     width_not_negative: is_usable implies width >= 0
     height_not_negative: is_usable implies height >= 0
     minimum_width_not_negative: is_usable implies minimum_width >= 0
     minimum_height_not_negative: is_usable implies minimum_height >= 0
           -- from EV_STOCK_COLORS
     white_not_void: white /= void
     black_not_void: black /= void
     grey_not_void: grey /= void
     gray_not_void: gray /= void
     dark_grey_not_void: dark_grey /= void
     dark_gray_not_void: dark_gray /= void
     blue_not_void: blue /= void
     dark_blue_not_void: dark_blue /= void
     cyan_not_void: cyan /= void
     dark_cyan_not_void: dark_cyan /= void
     green_not_void: green /= void
     dark_green_not_void: dark_green /= void
     yellow_not_void: yellow /= void
     dark_yellow_not_void: dark_yellow /= void
     red_not_void: red /= void
     dark_red_not_void: dark_red /= void
     magenta_not_void: magenta /= void
     dark_magenta_not_void: dark_magenta /= void
     color_dialog_not_void: color_dialog /= void
     color_read_only_not_void: color_read_only /= void
     color_read_write_not_void: color_read_write /= void
     default_background_color_not_void: default_background_color /= void
     default_foreground_color_not_void: default_foreground_color /= void
     all_colors_not_void: all_colors /= void
     all_colors_count_is_sixteen: all_colors.count = 18

end -- class ABOUT_DIALOG