note description: "Widget that represents a split window." legal: "See notice at end of class." status: "See notice at end of class."; date: "$Date$"; revision: "$Revision $" class SPLIT_WINDOW inherit MANAGER redefine implementation end create make_horizontal, make_vertical, make_horizontal_with_proportion, make_vertical_with_proportion feature -- Initialization make_horizontal (a_name: STRING; a_parent: COMPOSITE) -- Create an horizontal frame with `a_name' as identifier, -- `a_parent' as parent and call `set_default'. do make (a_name, a_parent, False) set_proportion(50) end make_horizontal_with_proportion (a_name: STRING; a_parent: COMPOSITE; proportion: INTEGER) -- Create an horizontal frame with `a_name' as identifier, -- `a_parent' as parent and call `set_default'. do make (a_name, a_parent, False) set_proportion(proportion) end make_vertical (a_name: STRING; a_parent: COMPOSITE) -- Create a vertical frame with `a_name' as identifier, -- `a_parent' as parent and call `set_default'. do make (a_name, a_parent, True) set_proportion(50) end make_vertical_with_proportion (a_name: STRING; a_parent: COMPOSITE; proportion: INTEGER) -- Create a vertical frame with `a_name' as identifier, -- `a_parent' as parent and call `set_default'. do make (a_name, a_parent, True) set_proportion(proportion) end feature {NONE} -- Implementation make (a_name: STRING; a_parent: COMPOSITE; vertical: BOOLEAN) -- Create a frame with `a_name' as identifier, -- `a_parent' as parent and call `set_default'. require valid_name: a_name /= Void; valid_parent: a_parent /= Void do depth := a_parent.depth + 1 widget_manager.new (Current, a_parent) identifier:= a_name.twin is_vertical := vertical create {SPLIT_WINDOW_IMP} implementation.make (Current, a_parent, is_vertical) implementation.set_widget_default set_default ensure parent_set: parent = a_parent identifier_set: identifier.is_equal (a_name) end; feature -- Access implementation: SPLIT_WINDOW_I is_vertical: BOOLEAN -- Is the split window a vertical one? feature -- Sizing policy update_split do implementation.update_split end feature -- Element change set_proportion (p:INTEGER) -- Set the split proportion from 0 to 100. require valid_proportion: p>=0 and then p<=100 do implementation.set_proportion (p) end add_child (a_child: SPLIT_WINDOW_CHILD) -- Add `a_window' as currently lowest child. do implementation.add_child (a_child) end remove_child (a_child: SPLIT_WINDOW_CHILD) -- Remove `a_child' from the display. do implementation.remove_child (a_child) end add_managed_child (a_child: SPLIT_WINDOW_CHILD) -- Add `a_window' as managed. do implementation.add_managed_child (a_child) end remove_managed_child (a_child: SPLIT_WINDOW_CHILD) -- Remove `a_window' as managed. do implementation.remove_managed_child (a_child) end feature -- Status Setting set_default -- Set default values to current bulletin. do end set_widget_pane_minimum (a_widget: WIDGET; a_dimension: INTEGER) local --l: MEL_RECT_OBJ do --l ?= a_widget.implementation --implementation.set_widget_pane_minimum (l, a_dimension) end 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 SPLIT_WINDOW