From VisualWorks®, 7.6 of February 1, 2008 on February 1, 2008 at 12:45:29 pm (Dialog confirm: 'You are filing-in a Parcel source file!\\While this is possible it will not have\the same effect as loading the parcel.\None of the Parcel''s prerequisites will\be loaded and none of its load actions\will be performed.\\Are you sure you want to file-in?' withCRs) ifFalse: [self error: 'Parcel file-in abandoned. Choose terminate or close.'] <class> <name>ClickWidgetEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none clicked hits misses <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.ClickWidgetEventTester
ClickWidgetEventTester is an event trigger variation of the ClickLogoTest example class. It demonstrates event registration and notification for all relevant events of the click widget. The relevant click widget events and the conditions they are triggered are: #clicked triggered any time a click widget is selected by the mouse. #hitMappedRegion triggered when a mapped area of the click widget is selected by the mouse. #missedMappedRegion triggered when any unmapped area of the click widget is selected by the mouse. Instance Variables: clicked <ValueModel on: String> display model for item clicked. hits <ValueModel on: Integer> number of times a recognized area is selected. misses <ValueModel on: Integer> number of times no recognized area is selected.
</comment> <class> <name>ClassWrapper</name> <environment>Examples</environment> <super>Core.Object</super> <private>false</private> none realClass visibleName choiceValue checkValue <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.ClassWrapper
ClassWrapper acts as a sample data accessor from a class in the Smalltalk heirarchy for items appearing in examples DatasetEventTester, TableEventTester, and TreeViewEventTester. Otherwise it offers no relevant functionality. Instance Variables: checkValue <Boolean> true if realClass if the number of realClass instance variable names is even. choiceValue <Array of: String> list instance variable names of realClass. realClass <Class> class this instance accesses. visibleName <String | Symbol> name assigned this instance.
</comment> <class> <name>TreeViewEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none singleSelect multiSelect <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.TreeViewEventTester
TreeViewEventTester demonstrates event registration and notification for all relevant events of a tree view. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #gettingFocus triggered when the widget receives focus. #losingFocus triggered when the widget loses focus. #rightClicked triggered when right clicked on with the <Operate> mouse button. #doubleClicked triggered when double clicked on with the <Select> mouse button. #clicked triggered any time a tree view is selected by the mouse with the <Select> button. #scrollRight triggered when the widget scrolls to the right by any means. #scrollLeft triggered when the widget scrolls to the left by any means. #scrollDown triggered when the widget scrolls down by any means. #scrollUp triggered when the widget scrolls up by any means. #selectionListChanged triggered when the underlying tree sequence changes. #selectionChanged triggered after any item selection is changed. #selectionChanging triggered when any item selection is about to change. #tabbed triggered when <Tab> causes focus to move from the tree view to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the tree view to the previous widget in the tab order. #itemCollapsed triggered when an item in the tree view is contracted. #itemExpanded triggered when an item in the tree view is expanded. #itemEdited triggered when an item in the tree view has been edited. Instance Variables: multiSelect <SelectionInTree> multi-select tree list model. singleSelect <SelectionInTree> single-select tree list model.
</comment> <class> <name>LabelEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.LabelEventTester
LabelEventTester demonstrates event registration and notification for all relevant events of a label. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #labelChanged triggered when a label value has changed. #labelChanging triggered when a label is about to change to a new value.
</comment> <class> <name>ToolBarEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.ToolBarEventTester
ToolBarEventTester demonstrates event registration and notification for all relevant events of a toolbar. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #toolBarCreated triggered after creation of a tool bar
</comment> <class> <name>DialogEventTester</name> <environment>Examples</environment> <super>UI.SimpleDialog</super> <private>false</private> none <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.DialogEventTester
DialogEventTester demonstrates event registration and notification for all relevant events of a dialog. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #activate triggered when dialog is activated by the underlying platform. #bounds triggered when the dialog size is changed. #close triggered when close notification is sent to the dialog. #closing triggered when a dialog is about to close. #opening triggered before a dialog is mapped or opened. #enter triggered after a dialog enters focus. #exit triggered after a dialog leaves focus. #mapped triggered when the dialog display surface is made active to view. #unmapped triggered when the dialog display surface is removed from view. #deactivate triggered when a dialog is deactivated by the underlying platform. #destroy triggered when a dialog is destroyed by the underlying platform. #expose triggered when a dialog is exposed by the underlying platform. #collapse triggered when a dialog is collapsed by the underlying platform. #expand triggered when a dialog is expanded by the underlying platform. #moving triggered when a dialog is about to be moved. #move triggered after a dialog is moved. #resize triggered after a dialog is resized. #gettingFocus triggered any time the dialog receives focus. #losingFocus triggered any time the dialog loses focus. #clicked triggered any time the dialog is selected by <Select> mouse button. #rightClicked triggered when right clicked on with the <Operate> mouse button. #middleClicked triggered when middle button clicked with the <Window> mouse button. #doubleClicked triggered when double clicked on with the <Select> mouse button. #scrollRight triggered when the window component scrolls to the right by any means. #scrollLeft triggered when the window component scrolls to the left by any means. #scrollDown triggered when the window component scrolls down by any means. #scrollUp triggered when the window component scrolls up by any means. #unknownEvent triggered when the underlying platform sends any otherwise unhandled window event.
</comment> <class> <name>MenuEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.MenuEventTester
MenuEventTester demonstrates event registration and notification for all relevant events of a menu bar or pop-up menu. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #popupMenuCreated triggered when a pop-up menu is created. #popupMenuItemSelected: triggered with the item name key when a menu item in a pop-up menu is selected. #menuOpened: triggered with the button name key when a menu bar button item is opened. #menuClosed: triggered with the button name key when a menu bar button item is closed. #menuItemSelected: triggered with the name key when a menu item is selected. #submenuOpened: triggered with the submenu name key when a submenu item is opened. #submenuClosed: triggered with the submenu name key when a submenu item is closed.
</comment> <class> <name>RegionEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.RegionEventTester
RegionEventTester demonstrates event registration and notification for all relevant events of region widgets. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #changing triggered when a region property is about to change. #changed triggered after a region property is changed.
</comment> <class> <name>MenuButtonEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none menuModel <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.MenuButtonEventTester
MenuButtonEventTester demonstrates event registration and notification for all relevant events of the menu button widget. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #changing triggered when a selection in the menu button is about to change. #changed triggered after a selection in the menu button is accepted. #clicked triggered any time a menu button is selected by the mouse <Select> button. #gettingFocus triggered any time a menu button receives focus. #losingFocus triggered any time a menu button loses focus. #tabbed triggered when <Tab> causes focus to move from the menu button to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the menu button to the previous widget in the tab order. #listExposed triggered when the menu button list is opened. #listClosed triggered when the menu button list is closed. Instance Variables: menuModel <ValueModel on: Menu> menu button menu model.
</comment> <class> <name>WindowEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.WindowEventTester
WindowEventTester demonstrates event registration and notification for all relevant events of a window. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #activate triggered when window is activated by the underlying platform. #bounds triggered when the window size is changed. #close triggered when close notification is sent to the window. #closing triggered when a window is about to close. #opening triggered before a window is mapped or opened. #enter triggered after a window enters focus. #exit triggered after a window leaves focus. #mapped triggered when the window display surface is made active to view. #unmapped triggered when the window display surface is removed from view. #deactivate triggered when a window is deactivated by the underlying platform. #destroy triggered when a window is destroyed by the underlying platform. #expose triggered when a window is exposed by the underlying platform. #collapse triggered when a window is collapsed by the underlying platform. #expand triggered when a window is expanded by the underlying platform. #moving triggered when a window is about to be moved. #move triggered after a window is moved. #resize triggered after a window is resized. #gettingFocus triggered any time the window receives focus. #losingFocus triggered any time the window loses focus. #clicked triggered any time the window is selected by <Select> mouse button. #rightClicked triggered when right clicked on with the <Operate> mouse button. #middleClicked triggered when middle button clicked with the <Window> mouse button. #doubleClicked triggered when double clicked on with the <Select> mouse button. #scrollRight triggered when the window component scrolls to the right by any means. #scrollLeft triggered when the window component scrolls to the left by any means. #scrollDown triggered when the window component scrolls down by any means. #scrollUp triggered when the window component scrolls up by any means.
</comment> <class> <name>ListBoxEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none multiSelectList singleSelectList <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.ListBoxEventTester
ListBoxEventTester demonstrates event registration and notification for all relevant events of a list view widget. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #clicked triggered any time a list widget is selected by the mouse with the <Select> button. #rightClicked triggered when right clicked on with the <Operate> mouse button. #doubleClicked triggered when double clicked on with the <Select> mouse button. #gettingFocus triggered any time a list widget receives focus. #losingFocus triggered any time a list widget loses focus. #tabbed triggered when <Tab> causes focus to move from the list widget to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the list widget to the previous widget in the tab order. #selectionListChanged triggered when the sequence of the list changes. #selectionChanged triggered after any item selection is changed. #selectionChanging triggered when any item selection is about to change. #scrollRight triggered when the list widget scrolls to the right by any means. #scrollLeft triggered when the list widget scrolls to the left by any means. #scrollDown triggered when the list widget scrolls down by any means. #scrollUp triggered when the list widget scrolls up by any means. Instance Variables: multiSelectList <MultiSelectionInList> list model for multi-select list widget. singleSelectList <SelectionInList> list model for single-select list widget.
</comment> <class> <name>PercentSliderEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none sliderValue percentDoneValue <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.PercentSliderEventTester
PercentSliderEventTester demonstrates event registration and notification for all relevant events of progress bar and slider widgets. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #changing triggered when a value is about to change. #changed triggered after a value is changed. Instance Variables: percentDoneValue <ValueModel on: Number> progress bar model sliderValue <ValueModel on: Number> slider widget model
</comment> <class> <name>SubCanvasEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none client <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.SubCanvasEventTester
SubCanvasEventTester demonstrates event registration and notification for all relevant events of a subcanvas. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #changing triggered when a subcanvas is about to change. #changed triggered after a subcanvas is changed. #scrollRight triggered when the widget scrolls to the right by any means. #scrollLeft triggered when the widget scrolls to the left by any means. #scrollDown triggered when the widget scrolls down by any means. #scrollUp triggered when the widget scrolls up by any means. Instance Variables: client <ButtonsEventTester | RegionEventTester> subcanvas model
</comment> <class> <name>ComboBoxEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none editableValue bottomValue topValue <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.ComboBoxEventTester
ComboBoxEventTester demonstrates event registration and notification for all relevant events of a ComboBox widget. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #changing triggered when a selection in the combo list is about to change. #changed triggered after a selection in the combo box is accepted. #tabbed triggered when <Tab> causes focus to move from the combo box to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the combo box to the previous widget in the tab order. #clicked triggered any time a combo box is selected by the mouse <Select> button. #gettingFocus triggered any time a combo box receives focus. #losingFocus triggered any time a combo box loses focus. #rightClicked triggered when right clicked on with the <Operate> mouse button. #doubleClicked triggered when double clicked on with the <Select> mouse button. #listExposed triggered when the combo list is opened. #listClosed triggered when the combo list is closed. Instance Variables: bottomValue <ValueHolder> bottom read-only combo box selection model editableValue <ValueHolder> editable combo box selection model topValue <ValueHolder> top read-only combo box selection model
</comment> <class> <name>ButtonsEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none rads <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.ButtonsEventTester
ButtonsEventTester demonstrates event registration and notification for all relevant events of ActionButtion, RadioButton, and CheckButton widgets. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #labelChanged triggered after a button's label has changed. #labelChanging triggered when a button's label is about to change. #tabbed triggered when <Tab> causes focus to move from the button to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the button to the previous widget in the tab order. #clicked triggered any time a button is selected by the mouse. #gettingFocus triggered any time a button receives focus. #losingFocus triggered any time a button loses focus. #checked triggered when a CheckBox widget state changes from unselected to selected. #unchecked triggered when a CheckBox widget state changes from selected to unselected. #pressed triggered when an ActionButton is clicked or pressed by keyboard. #turnedOn triggered when a RadioButton widget state changes from unselected to selected. #turnedOff triggered when a RadioButton widget state changes from selected to unselected. Instance Variables: rads <ValueHolder on: Boolean> radio button selection state
</comment> <class> <name>NotebookEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none rightBookMajor leftBookMajor leftBookMinor rightBookMinor <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.NotebookEventTester
NotebookEventTester demonstrates event registration and notification for all relevant events of a notebook widget. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #horizontalTabChanging triggered when a horizontal notebook tab is about to change selection. #horizontalTabChanged triggered when a horizontal notebook tab selection has changed. #verticalTabChanging triggered when a vertical notebook tab is about to change selection. #verticalTabChanged triggered when a vertical notebook tab selection has changed. #gettingFocus triggered when the widget receives focus. #losingFocus triggered when the widget loses focus. #tabbed triggered when <Tab> causes focus to move from the notebook to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the notebook to the previous widget in the tab order. #scrollRight triggered when the widget scrolls to the right by any means. #scrollLeft triggered when the widget scrolls to the left by any means. #scrollDown triggered when the widget scrolls down by any means. #scrollUp triggered when the widget scrolls up by any means. Instance Variables: leftBookMajor <SelectionInList> tab list model for side tabs of left notebook leftBookMinor <SelectionInList> tab list model for bottom tabs of left notebook rightBookMajor <SelectionInList> tab list model for top tabs of right notebook rightBookMinor <SelectionInList> tab list model for side tabs of right notebook
</comment> <class> <name>TabControlEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.TabControlEventTester
TabControlEventTester demonstrates event registration and notification for all relevant events of a tab control. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #pageLeft triggered when the widget scrolls a tab to the left by any means #pageRight triggered when the widget scrolls a tab to the right by any means #scrollRight triggered when the widget scrolls a tab to the right by any means. #scrollLeft triggered when the widget scrolls a tab to the left by any means. #tabChanged triggered when a tab selection has changed. #tabChanging triggered when a tab is about to change selection. #tabbed triggered when <Tab> causes focus to move from the tab control to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the tab control to the previous widget in the tab order. #gettingFocus triggered when the widget receives focus. #losingFocus triggered when the widget loses focus.
</comment> <class> <name>HierarchicalListEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none singleList multiList <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.HierarchicalListEventTester
HierarchicalListEventTester demonstrates event registration and notification for all relevant events of a hierarchical list. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #clicked triggered any time the widget is selected by <Select> mouse button. #rightClicked triggered when right clicked on with the <Operate> mouse button. #doubleClicked triggered when double clicked on with the <Select> mouse button. #gettingFocus triggered any time a hierarchical list receives focus. #losingFocus triggered any time a hierarchical list loses focus. #tabbed triggered when <Tab> causes focus to move from the list to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the list to the previous widget in the tab order. #itemCollapsed triggered when an item in the hierarchical list is contracted. #itemExpanded triggered when an item in the hierarchical list is expanded. #selectionListChanged triggered when the sequence of hierarchical list items change. #selectionChanging triggered when any item is selected but before the list selection changes. #selectionChanged triggered after any item selection is changed. #scrollRight triggered when the list scrolls to the right by any means. #scrollLeft triggered when the list scrolls to the left by any means. #scrollDown triggered when the list scrolls down by any means. #scrollUp triggered when the list scrolls up by any means. Instance Variables: multiList <IndentedTreeSelectionInList> list model for multi-select hierarchical list singleList <IndentedTreeSelectionInList> list model for single-select hierarchical list
</comment> <class> <name>EditInputEventTests</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none text1 text2 text3 <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.EditInputEventTests
EditInputEventTests demonstrates event registration and notification for all relevant events of input fields and text editors. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #changed triggered when an entry in the field or editor is accepted. #changing triggered when the entry in the field or editor has changed but is not yet accepted. #clicked triggered any time the widget is selected with the <Select> mouse button. #rightClicked triggered when right clicked on with the <Operate> mouse button. #doubleClicked triggered when double clicked on with the <Select> mouse button. #gettingFocus triggered when the widget receives focus. #losingFocus triggered when the widget loses focus. #tabbed triggered when <Tab> causes focus to move from the field or editor to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the field or editor to the previous widget in the tab order. #scrollRight triggered when the widget scrolls to the right by any means. #scrollLeft triggered when the widget scrolls to the left by any means. #scrollDown triggered when the widget scrolls down by any means. #scrollUp triggered when the widget scrolls up by any means. Instance Variables: text1 <ValueHolder on: String> model for input field 1 text2 <ValueHolde on: String> model for input field 2 text3 <ValueHolder on: String> model for text editor
</comment> <class> <name>SpinEventTriggerTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none dateAspect stringAspect timeAspect numberNoLow numberAspect <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.SpinEventTriggerTester
SpinEventTriggerTester demonstrates event registration and notification for all relevant events of spin button widgets. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #changing triggered when a spin value is about to change. #changed triggered after a spin value is changed. #gettingFocus triggered when a spin button receives focus. #losingFocus triggered when a spin button loses focus. #tabbed triggered when <Tab> causes focus to move from the spin button to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the spin button to the previous widget in the tab order. #bounceBottom triggered when a non-wrapping spin button is asked to spin below its lowest value setting. #bounceTop triggered when a non-wrapping spin button is asked to spin above its highest value setting. #wrapAroundTop triggered when the spin button wraps under its highest value setting. #wrapAroundBottom triggered when the spin button wraps over its lowest value setting. #spinDown triggered when the spin down button is pressed prior a value change. #spinUp triggered when the spin up button is pressed prior a value change. #spunDown triggered after the spin down button is pressed and the value is accepted. #spunUp triggered after the spin up button is pressed and the value is accepted. #rightClicked triggered when right clicked on with the <Operate> mouse button. #doubleClicked triggered when double clicked on with the <Select> mouse button. #clicked triggered any time when selected by the mouse. Instance Variables: dateAspect <ValueHolder on: Date> date spin button model numberAspect <ValueHolder on: Number> number spin button model numberNoLow <ValueHolder on: Number> number model for wrapping spin button stringAspect <ValueHolder on: String> string spin button model timeAspect <ValueHolder on: Time> time spin button model
</comment> <class> <name>TableEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none columnSelection rowSelection cellSelection <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.TableEventTester
TableEventTester demonstrates event registration and notification for all relevant events of a table widget. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #rowSelectionChanged triggered when a new row is selected in the table. #columnSelectionChanged triggered when a new column is selected in the table. #cellSelectionChanged triggered when a new cell is selected in the table. #clicked triggered any time a table widget is selected by the mouse with the <Select> button. #rightClicked triggered when right clicked on with the <Operate> mouse button. #doubleClicked triggered when double clicked on with the <Select> mouse button. #gettingFocus triggered when the widget receives focus. #losingFocus triggered when the widget loses focus. #tabbed triggered when <Tab> causes focus to move from the table to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the table to the previous widget in the tab order. #scrollRight triggered when the widget scrolls to the right by any means. #scrollLeft triggered when the widget scrolls to the left by any means. #scrollDown triggered when the widget scrolls down by any means. #scrollUp triggered when the widget scrolls up by any means. Instance Variables: cellSelection <TableInterface> table model with cell selection option columnSelection <TableInterface> table model with column selection option rowSelection <TableInterface> table model with row selection option
</comment> <class> <name>ViewHolderEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.ViewHolderEventTester
ViewHolderEventTester demonstrates event registration and notification for all relevant events of a view holder. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #scrollRight triggered when the list scrolls to the right by any means. #scrollLeft triggered when the list scrolls to the left by any means. #scrollDown triggered when the list scrolls down by any means. #scrollUp triggered when the list scrolls up by any means.
</comment> <class> <name>GroupBoxEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.GroupBoxEventTester
GroupBoxEventTester demonstrates event registration and notification for all relevant events of a group box. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #labelChanging triggered when a group's label is about to change. #labelChanged triggered after a group's label has changed.
</comment> <class> <name>DatasetEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none singleSelectList multiSelectList singleSelectRowHolder multiSelectRowHolder columnReordering columnResizing columnSorting <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.DatasetEventTester
DatasetEventTester demonstrates event registration and notification for all relevant events of the dataset widget. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #rightClicked triggered when right clicked on with the <Operate> mouse button. #doubleClicked triggered when double clicked on with the <Select> mouse button. #gettingFocus triggered when a dataset receives focus. #losingFocus triggered when a dataset loses focus. #cellGettingFocus triggered when a dataset cell receives focus. #cellLosingFocus triggered when a dataset cell loses focus. #cellTabbed triggered when <Tab> causes focus to move from a dataset cell to its next cell or widget in the tab order. #cellBackTabbed triggered when <Shift><Tab> causes focus to move from a dataset cell to its previous cell or widget in the tab order. #cellValueChanged triggered when an entry changes the value of a dataset cell. #selectionListChanged triggered when the sequence of dataset rows change. #scrollRight triggered when the dataset scrolls to the right by any means. #scrollLeft triggered when the dataset scrolls to the left by any means. #scrollDown triggered when the dataset scrolls down by any means. #scrollUp triggered when the dataset scrolls up by any means. #tabbed triggered when <Tab> causes focus to move from the dataset to the next widget in the tab order. #backTabbed triggered when <Shift><Tab> causes focus to move from the dataset to the previous widget in the tab order. #columnLabelClicked triggered if any dataset column label is selected by the mouse. #rowLabelClicked triggered if any dataset row label is selected by the mouse. #rowSelectionsChanging triggered when any row is selected but the dataset selection has not yet changed. #rowSelectionsChanged triggered after any row selection is changed. Instance Variables: columnReordering <ValueModel on:Boolean> model on column ordering option selection. columnResizing <ValueModel on:Boolean> model on column resize option selection. columnSorting <ValueModel on:Boolean> model on column sort option selection. multiSelectList <MultiSelectionInListSortAware> sort list model for multi-select dataset. multiSelectRowHolder <ValueModel> selected row model for multi-select dataset. singleSelectList <SelectionInList> list model for single-select dataset. singleSelectRowHolder <ValueModel> selected row model for single-select dataset.
</comment> <class> <name>ResizingSplitterEventTester</name> <environment>Examples</environment> <super>UI.ApplicationModel</super> <private>false</private> none <imports></imports> <category>Examples-Trigger Events</category> <attributes> <package>Trigger Event Testers</package> </attributes> </class> <comment> Examples.ResizingSplitterEventTester
ResizingSplitterEventTester demonstrates event registration and notification for all relevant events of resizer widgets. In this example, the response to these events are reported to the Transcript. The relevant events and the conditions they are triggered are: #clicked triggered any time a splitter is selected by the mouse. #moved triggered any time a splitter is finished being moved.
</comment> <methods> Examples.ClickWidgetEventTester <category>clicks</category>
aC self clicked value: 'a C'. self hits value: hits value + 1
aD self clicked value: 'a D'. self hits value: hits value + 1
aG self clicked value: 'a G'. self hits value: hits value + 1
aK self clicked value: 'a K'. self hits value: hits value + 1
anA "Someone clicked an A!" self clicked value: 'an A'. self hits value: hits value + 1
anE self clicked value: 'an E'. self hits value: hits value + 1
anI self clicked value: 'an I'. self hits value: hits value + 1
anL self clicked value: 'an L'. self hits value: hits value + 1
anR self clicked value: 'an R'. self hits value: hits value + 1
aP self clicked value: 'a P'. self hits value: hits value + 1
aT self clicked value: 'a T'. self hits value: hits value + 1
ouch self clicked value: 'Ouch! That''s sharp!'. self hits value: hits value + 1
theLogo self clicked value: 'the ParcPlace-Digitalk logo'. self hits value: hits value + 1
</methods> <methods> Examples.ClickWidgetEventTester <category>aspects</category>
clicked ^clicked isNil ifTrue: [clicked := String new asValue] ifFalse: [clicked]
helpText ^self class helpText asValue
hits ^hits isNil ifTrue: [hits := 0 asValue] ifFalse: [hits]
misses ^misses isNil ifTrue: [misses := 0 asValue] ifFalse: [misses]
</methods> <methods> Examples.ClickWidgetEventTester <category>interface opening</category>
postBuildWith: aBuilder self widget: #logoImage when: #clicked do: [Transcript show: (#logoImage -> #clicked) printString; cr]. self widget: #logoImage when: #hitMappedRegion do: [Transcript show: (#logoImage -> #hitMappedRegion) printString; cr]. self widget: #logoImage when: #missedMappedRegion do: [Transcript show: (#logoImage -> #missedMappedRegion) printString; cr].
</methods> <methods> Examples.ClickWidgetEventTester class <category>resources</category>
helpText ^Text string: 'This is a demonstration of the ClickWidget. Please click anywhere in the graphic above. (Note: No default hit selector)' runs: (RunArray runs: #(31 11 77) values: #(nil #bold nil))
other ^Image parcPlaceLogo
</methods> <methods> Examples.ClassWrapper <category>accessing</category>
checkBox checkValue isNil ifTrue: [checkValue := self ivarNames size \\ 2 = 0]. ^checkValue
checkBox: aValue checkValue := aValue
getSubclasses ^realClass getSubclasses
ivarName realClass isNil ifTrue: [^nil]. choiceValue isNil ifTrue: [| choices | choices := self ivarNames. choiceValue := choices isEmpty ifTrue: ['-none-'] ifFalse: [choices last]]. ^choiceValue
ivarName: aValue choiceValue := aValue
ivarNames realClass isNil ifTrue: [^#()]. ^realClass allInstVarNames
ivarNamesString | string | realClass isNil ifTrue: [^'']. string := ''. realClass allInstVarNames do: [:each | string := each, ' ', string]. ^string
name ^visibleName
name: aValue ^visibleName := aValue
subclasses ^realClass subclasses collect: [:each | ClassWrapper on: each]
</methods> <methods> Examples.ClassWrapper <category>private</category>
setClass: aClass realClass := aClass. visibleName := aClass name
</methods> <methods> Examples.ClassWrapper <category>comparing</category>
= anObject "Answer whether the receiver and the argument represent the same object. If = is redefined in any subclass, consider also redefining the message hash." ^self class = anObject class and: [self name = anObject name]
hash ^visibleName hash
</methods> <methods> Examples.ClassWrapper <category>editing</category>
editMe: aValue visibleName := aValue.
</methods> <methods> Examples.ClassWrapper class <category>initialize-release</category>
on: aClass ^self new setClass: aClass
</methods> <methods> Examples.TreeViewEventTester <category>tree view emphasis</category>
closedEmphasis "This stub method was generated by UIDefiner This method should answer an Array of Text emphasis values Examples: Array with: #bold with: #color->ColorValue blue #(#bold #italic)" ^#(#bold)
leafEmphasis: aTreeValue "This stub method was generated by UIDefiner This method should answer an Array of Text emphasis values Examples: Array with: #bold with: #color->ColorValue blue #(#bold #italic)" aTreeValue == VisualBlock ifTrue: [^Array with: #bold with: #color->ColorValue blue]. ^#(#normal)
openedEmphasis "This stub method was generated by UIDefiner This method should answer an Array of Text emphasis values Examples: Array with: #bold with: #color->ColorValue blue #(#bold #italic)" ^#(#italic)
</methods> <methods> Examples.TreeViewEventTester <category>callbacks</category>
notification "Signal that a notification callback occurred" (self builder componentAt:#notification) flash.
validate "Signal that a validation callback occurred" (self builder componentAt:#validate) flash. ^true
</methods> <methods> Examples.TreeViewEventTester <category>aspects</category>
multiSelect ^multiSelect isNil ifTrue: [multiSelect := MultiSelectionInTree new] ifFalse: [multiSelect]
singleSelect ^singleSelect isNil ifTrue: [singleSelect := SelectionInTree new] ifFalse: [singleSelect]
</methods> <methods> Examples.TreeViewEventTester <category>interface opening</category>
initializeLists self singleSelect tree root: VisualComponent displayIt: true childrenBlock: [:each | each subclasses] hasChildrenBlock: [:each | each getSubclasses notNil]. self multiSelect tree root: (ClassWrapper on: Magnitude) displayIt: false childrenBlock: [:each | each subclasses] hasChildrenBlock: [:each | each getSubclasses notNil] .
postBuildWith: aBuilder self initializeLists. self widget: #singleSelect when: #gettingFocus do: [Transcript show: (#singleSelect -> #gettingFocus) printString; cr]. self widget: #multiSelect when: #gettingFocus do: [Transcript show: (#multiSelect -> #gettingFocus) printString; cr]. self widget: #singleSelect when: #losingFocus do: [Transcript show: (#singleSelect -> #losingFocus) printString; cr]. self widget: #multiSelect when: #losingFocus do: [Transcript show: (#multiSelect -> #losingFocus) printString; cr]. self widget: #singleSelect when: #rightClicked do: [Transcript show: (#singleSelect -> #rightClicked) printString; cr]. self widget: #multiSelect when: #rightClicked do: [Transcript show: (#multiSelect -> #rightClicked) printString; cr]. self widget: #singleSelect when: #doubleClicked do: [Transcript show: (#singleSelect -> #doubleClicked) printString; cr]. self widget: #multiSelect when: #doubleClicked do: [Transcript show: (#multiSelect -> #doubleClicked) printString; cr]. self widget: #singleSelect when: #clicked do: [Transcript show: (#singleSelect -> #clicked) printString; cr]. self widget: #multiSelect when: #clicked do: [Transcript show: (#multiSelect -> #clicked) printString; cr]. self widget: #singleSelect when: #scrollUp do: [Transcript show: (#singleSelect -> #scrollUp) printString; cr]. self widget: #multiSelect when: #scrollUp do: [Transcript show: (#multiSelect -> #scrollUp) printString; cr]. self widget: #singleSelect when: #scrollDown do: [Transcript show: (#singleSelect -> #scrollDown) printString; cr]. self widget: #multiSelect when: #scrollDown do: [Transcript show: (#multiSelect -> #scrollDown) printString; cr]. self widget: #singleSelect when: #scrollRight do: [Transcript show: (#singleSelect -> #scrollRight) printString; cr]. self widget: #multiSelect when: #scrollRight do: [Transcript show: (#multiSelect -> #scrollRight) printString; cr]. self widget: #singleSelect when: #scrollLeft do: [Transcript show: (#singleSelect -> #scrollLeft) printString; cr]. self widget: #multiSelect when: #scrollLeft do: [Transcript show: (#multiSelect -> #scrollLeft) printString; cr]. self widget: #singleSelect when: #selectionListChanged do: [Transcript show: (#singleSelect -> #selectionListChanged) printString; cr.]. self widget: #multiSelect when: #selectionListChanged do: [Transcript show: (#multiSelect -> #selectionListChanged) printString; cr]. self widget: #singleSelect when: #selectionChanged do: [Transcript show: (#singleSelect -> #selectionChanged) printString; cr]. self widget: #multiSelect when: #selectionChanged do: [Transcript show: (#multiSelect -> #selectionChanged) printString; cr]. self widget: #singleSelect when: #selectionChanging do: [Transcript show: (#singleSelect -> #selectionChanging) printString; cr]. self widget: #multiSelect when: #selectionChanging do: [Transcript show: (#multiSelect -> #selectionChanging) printString; cr]. self widget: #singleSelect when: #tabbed do: [Transcript show: (#singleSelect -> #tabbed) printString; cr]. self widget: #multiSelect when: #tabbed do: [Transcript show: (#multiSelect -> #tabbed) printString; cr]. self widget: #singleSelect when: #backTabbed do: [Transcript show: (#singleSelect -> #backTabbed) printString; cr]. self widget: #multiSelect when: #backTabbed do: [Transcript show: (#multiSelect -> #backTabbed) printString; cr]. self widget: #singleSelect when: #itemCollapsed do: [Transcript show: (#singleSelect -> #itemCollapsed) printString; cr]. self widget: #multiSelect when: #itemCollapsed do: [Transcript show: (#multiSelect -> #itemCollapsed) printString; cr]. self widget: #singleSelect when: #itemExpanded do: [Transcript show: (#singleSelect -> #itemExpanded) printString; cr]. self widget: #multiSelect when: #itemExpanded do: [Transcript show: (#multiSelect -> #itemExpanded) printString; cr]. self widget: #multiSelect when: #itemEdited do: [Transcript show: (#multiSelect -> #itemEdited) printString; cr].
</methods> <methods> Examples.LabelEventTester <category>interface opening</category>
postBuildWith: aBuilder self widget: #Label1d when: #labelChanged do: [Transcript show: (#Label1d -> #labelChanged) printString; cr]. self widget: #Label1d when: #labelChanging do: [Transcript show: (#Label1d -> #labelChanging) printString; cr].
</methods> <methods> Examples.LabelEventTester <category>actions</category>
changeText (self widgetAt: #Label1d) labelString: 'Woo'
</methods> <methods> Examples.ToolBarEventTester <category>actions</category>
firstButton
secondButton
thirdButton
</methods> <methods> Examples.ToolBarEventTester <category>interface opening</category>
postBuildWith: aBuilder self mainWindow when: #toolBarCreated send: #setupToolbarEvents to: self.
setupToolbarEvents Transcript show: (#mainWindow -> #toolBarCreated) printString ; cr. self widget: #toolbarMenu when: #toolBarButtonSelected: do: [:arg | Transcript show: (#toolBarButtonSelected: -> arg) printString ; cr].
</methods> <methods> Examples.DialogEventTester <category>initialize-release</category>
initialize super initialize. self postBuildBlock: [:myself :mybuilder | self mainWindow when: #activate do: [Transcript show: (#mainWindow -> #activate) printString; cr]. self mainWindow when: #bounds do: [Transcript show: (#mainWindow -> #bounds) printString; cr]. self mainWindow when: #close do: [Transcript show: (#mainWindow -> #close) printString; cr]. self mainWindow when: #collapse do: [Transcript show: (#mainWindow -> #collapse) printString; cr]. self mainWindow when: #deactivate do: [Transcript show: (#mainWindow -> #deactivate) printString; cr]. self mainWindow when: #destroy do: [Transcript show: (#mainWindow -> #destroy) printString; cr]. self mainWindow when: #expand do: [Transcript show: (#mainWindow -> #expand) printString; cr]. self mainWindow when: #expose do: [Transcript show: (#mainWindow -> #expose) printString; cr]. self mainWindow when: #move do: [Transcript show: (#mainWindow -> #move) printString; cr]. self mainWindow when: #resize do: [Transcript show: (#mainWindow -> #resize) printString; cr]. self mainWindow when: #enter do: [Transcript show: (#mainWindow -> #enter) printString; cr]. self mainWindow when: #exit do: [Transcript show: (#mainWindow -> #exit) printString; cr]. self mainWindow when: #closing do: [Transcript show: (#mainWindow -> #closing) printString; cr]. self mainWindow when: #opening do: [Transcript show: (#mainWindow -> #opening) printString; cr]. self mainWindow when: #mapped do: [Transcript show: (#mainWindow -> #mapped) printString; cr]. self mainWindow when: #unmapped do: [Transcript show: (#mainWindow -> #unmapped) printString; cr]. self mainWindow when: #moving do: [Transcript show: (#mainWindow -> #moving) printString; cr]. self mainWindow when: #gettingFocus do: [Transcript show: (#mainWindow -> #gettingFocus) printString; cr]. self mainWindow when: #losingFocus do: [Transcript show: (#mainWindow -> #losingFocus) printString; cr]. "unknown event is commented out in this tester because there are SO many of them!" "self mainWindow when: #unknownEvent do: [Transcript show: (#mainWindow -> #unknownEvent) printString; cr]." self mainWindow when: #clicked do: [Transcript show: (#mainWindow -> #clicked) printString; cr]. self mainWindow when: #rightClicked do: [Transcript show: (#mainWindow -> #rightClicked) printString; cr]. self mainWindow when: #doubleClicked do: [Transcript show: (#mainWindow -> #doubleClicked) printString; cr]. self mainWindow when: #middleClicked do: [Transcript show: (#mainWindow -> #middleClicked) printString; cr]. self mainWindow when: #scrollLeft do: [Transcript show: (#mainWindow -> #scrollLeft) printString; cr]. self mainWindow when: #scrollRight do: [Transcript show: (#mainWindow -> #scrollRight) printString; cr]. self mainWindow when: #scrollDown do: [Transcript show: (#mainWindow -> #scrollDown) printString; cr]. self mainWindow when: #scrollUp do: [Transcript show: (#mainWindow -> #scrollUp) printString; cr]. ].
</methods> <methods> Examples.MenuEventTester <category>actions</category>
edit
editCopy
editCut
editSpecial
editSpecialKick
editSpecialKickPointAfter
editSpecialKickTouchdown
editSpecialPass
editSpecialPunt
file
fileClose
fileNew
fileOpen
newFile
</methods> <methods> Examples.MenuEventTester <category>interface opening</category>
postBuildWith: aBuilder self mainWindow when: #menuBarCreated send: #setupMenuEvents to: self. self widget: #popupEditTest when: #popupMenuCreated do: [Transcript show: (#popupEditTest -> #popupMenuCreated) printString; cr]. self widget: #popupEditTest when: #popupMenuItemSelected: do: [:arg | Transcript show: (#'popupEditTest||popupMenuItemSelected:' -> arg) printString ; cr]. self widget: #popupInputTest when: #popupMenuCreated do: [Transcript show: (#popupInputTest -> #popupMenuCreated) printString; cr]. self widget: #popupInputTest when: #popupMenuItemSelected: do: [:arg | Transcript show: (#'popupInputTest||popupMenuItemSelected:' -> arg) printString ; cr]. self widget: #popupListTest when: #popupMenuCreated do: [Transcript show: (#popupListTest -> #popupMenuCreated) printString; cr]. self widget: #popupListTest when: #popupMenuItemSelected: do: [:arg | Transcript show: (#'popupListTest||popupMenuItemSelected:' -> arg) printString ; cr]. self widget: #popupComboTest when: #popupMenuCreated do: [Transcript show: (#popupComboTest -> #popupMenuCreated) printString; cr]. self widget: #popupComboTest when: #popupMenuItemSelected: do: [:arg | Transcript show: (#'popupComboTest||popupMenuItemSelected:' -> arg) printString ; cr]. self widget: #popupHierarchicalListTest when: #popupMenuCreated do: [Transcript show: (#popupHierarchicalListTest -> #popupMenuCreated) printString; cr]. self widget: #popupHierarchicalListTest when: #popupMenuItemSelected: do: [:arg | Transcript show: (#'popupHierarchicalListTest||popupMenuItemSelected:' -> arg) printString ; cr]. self widget: #popupTreeViewTest when: #popupMenuCreated do: [Transcript show: (#popupTreeViewTest -> #popupMenuCreated) printString; cr]. self widget: #popupTreeViewTest when: #popupMenuItemSelected: do: [:arg | Transcript show: (#'popupTreeViewTest||popupMenuItemSelected:' -> arg) printString ; cr]. self widget: #popupTableTest when: #popupMenuCreated do: [Transcript show: (#popupTableTest -> #popupMenuCreated) printString; cr]. self widget: #popupTableTest when: #popupMenuItemSelected: do: [:arg | Transcript show: (#'popupTableTest||popupMenuItemSelected:' -> arg) printString ; cr]. self widget: #popupDatasetTest when: #popupMenuCreated do: [Transcript show: (#popupDatasetTest -> #popupMenuCreated) printString; cr]. self widget: #popupDatasetTest when: #popupMenuItemSelected: do: [:arg | Transcript show: (#'popupDatasetTest||popupMenuItemSelected:' -> arg) printString ; cr]. self widget: #popupSpinTest when: #popupMenuCreated do: [Transcript show: (#popupSpinTest -> #popupMenuCreated) printString; cr]. self widget: #popupSpinTest when: #popupMenuItemSelected: do: [:arg | Transcript show: (#'popupSpinTest||popupMenuItemSelected:' -> arg) printString ; cr].
setupMenuEvents Transcript show: (#mainWindow -> #menuBarCreated) printString ; cr. self windowMenuBar when: #menuOpened: do: [:arg | Transcript show: (#menuOpened: -> arg) printString ; cr]. self windowMenuBar when: #menuClosed: do: [:arg | Transcript show: (#menuClosed: -> arg) printString ; cr]. self windowMenuBar when: #menuItemSelected: do: [:arg | Transcript show: (#menuItemSelected: -> arg) printString ; cr]. self windowMenuBar when: #submenuOpened: do: [:arg | Transcript show: (#submenuOpened: -> arg) printString ; cr]. self windowMenuBar when: #submenuClosed: do: [:arg | Transcript show: (#submenuClosed: -> arg) printString ; cr].
</methods> <methods> Examples.RegionEventTester <category>interface opening</category>
postBuildWith: aBuilder self widget: #region when: #changing do: [Transcript show: (#region -> #changing) printString; cr]. self widget: #region when: #changed do: [Transcript show: (#region -> #changed) printString; cr].
</methods> <methods> Examples.RegionEventTester <category>actions</category>
changeBorderColor (self widgetAt: #region) lineColor: ColorValue red
changeBorderSize (self widgetAt: #region) lineWidth: (self widgetAt: #region) lineWidth // 2
changeInsideColor (self widgetAt: #region) insideColor: ColorValue white
changeSize (self widgetAt: #region) extent: 20 @ 60
</methods> <methods> Examples.MenuButtonEventTester <category>actions</category>
changeBottomMenu | classes | classes := LookupKey allSubclasses asSortedCollection: [:a :b | a printString < b printString]. menuModel value: (Menu labelArray: (classes collect: [:each | each printString]) values: classes)
</methods> <methods> Examples.MenuButtonEventTester <category>interface opening</category>
postBuildWith: aBuilder self widget: #popDownMenu when: #changed do: [Transcript show: (#popDownMenu -> #changed) printString; cr]. self widget: #popUpMenu when: #changed do: [Transcript show: (#popUpMenu -> #changed) printString; cr]. self widget: #popDownMenu when: #changing do: [Transcript show: (#popDownMenu -> #changing) printString; cr]. self widget: #popUpMenu when: #changing do: [Transcript show: (#popUpMenu -> #changing) printString; cr]. self widget: #popDownMenu when: #clicked do: [Transcript show: (#popDownMenu -> #clicked) printString; cr]. self widget: #popUpMenu when: #clicked do: [Transcript show: (#popUpMenu -> #clicked) printString; cr]. self widget: #popDownMenu when: #listExposed do: [Transcript show: (#popDownMenu -> #listExposed) printString; cr]. self widget: #popUpMenu when: #listExposed do: [Transcript show: (#popUpMenu -> #listExposed) printString; cr]. self widget: #popDownMenu when: #listClosed do: [Transcript show: (#popDownMenu -> #listClosed) printString; cr]. self widget: #popUpMenu when: #listClosed do: [Transcript show: (#popUpMenu -> #listClosed) printString; cr]. self widget: #popDownMenu when: #gettingFocus do: [Transcript show: (#popDownMenu -> #gettingFocus) printString; cr]. self widget: #popUpMenu when: #gettingFocus do: [Transcript show: (#popUpMenu -> #gettingFocus) printString; cr]. self widget: #popDownMenu when: #losingFocus do: [Transcript show: (#popDownMenu -> #losingFocus) printString; cr]. self widget: #popUpMenu when: #losingFocus do: [Transcript show: (#popUpMenu -> #losingFocus) printString; cr]. self widget: #popDownMenu when: #tabbed do: [Transcript show: (#popDownMenu -> #tabbed) printString; cr]. self widget: #popUpMenu when: #tabbed do: [Transcript show: (#popUpMenu -> #tabbed) printString; cr]. self widget: #popDownMenu when: #backTabbed do: [Transcript show: (#popDownMenu -> #backTabbed) printString; cr]. self widget: #popUpMenu when: #backTabbed do: [Transcript show: (#popUpMenu -> #backTabbed) printString; cr].
</methods> <methods> Examples.MenuButtonEventTester <category>aspects</category>
anotherMenu | classes | classes := BrowserHelper allSubclasses asSortedCollection: [:a :b | a printString < b printString]. ^Menu labelArray: (classes collect: [:each | each printString]) values: classes
menuModel ^menuModel isNil ifTrue: [| classes | classes := CharacterArray allSubclasses asSortedCollection: [:a :b | a printString < b printString]. menuModel := (Menu labelArray: (classes collect: [:each | each printString]) values: classes) asValue] ifFalse: [menuModel]
</methods> <methods> Examples.WindowEventTester <category>interface opening</category>
postBuildWith: aBuilder self mainWindow when: #activate do: [Transcript show: (#mainWindow -> #activate) printString; cr]. self mainWindow when: #bounds do: [Transcript show: (#mainWindow -> #bounds) printString; cr]. self mainWindow when: #close do: [Transcript show: (#mainWindow -> #close) printString; cr]. self mainWindow when: #collapse do: [Transcript show: (#mainWindow -> #collapse) printString; cr]. self mainWindow when: #deactivate do: [Transcript show: (#mainWindow -> #deactivate) printString; cr]. self mainWindow when: #destroy do: [Transcript show: (#mainWindow -> #destroy) printString; cr]. self mainWindow when: #expand do: [Transcript show: (#mainWindow -> #expand) printString; cr]. self mainWindow when: #expose do: [Transcript show: (#mainWindow -> #expose) printString; cr]. self mainWindow when: #move do: [Transcript show: (#mainWindow -> #move) printString; cr]. self mainWindow when: #resize do: [Transcript show: (#mainWindow -> #resize) printString; cr]. self mainWindow when: #enter do: [Transcript show: (#mainWindow -> #enter) printString; cr]. self mainWindow when: #exit do: [Transcript show: (#mainWindow -> #exit) printString; cr]. self mainWindow when: #closing do: [Transcript show: (#mainWindow -> #closing) printString; cr]. self mainWindow when: #opening do: [Transcript show: (#mainWindow -> #opening) printString; cr]. self mainWindow when: #mapped do: [Transcript show: (#mainWindow -> #mapped) printString; cr]. self mainWindow when: #unmapped do: [Transcript show: (#mainWindow -> #unmapped) printString; cr]. self mainWindow when: #moving do: [Transcript show: (#mainWindow -> #moving) printString; cr]. self mainWindow when: #gettingFocus do: [Transcript show: (#mainWindow -> #gettingFocus) printString; cr]. self mainWindow when: #losingFocus do: [Transcript show: (#mainWindow -> #losingFocus) printString; cr]. "unknown event is commented out in this tester because there are SO many of them!" "self mainWindow when: #unknownEvent do: [Transcript show: (#mainWindow -> #unknownEvent) printString; cr]." self mainWindow when: #clicked do: [Transcript show: (#mainWindow -> #clicked) printString; cr]. self mainWindow when: #rightClicked do: [Transcript show: (#mainWindow -> #rightClicked) printString; cr]. self mainWindow when: #doubleClicked do: [Transcript show: (#mainWindow -> #doubleClicked) printString; cr]. self mainWindow when: #middleClicked do: [Transcript show: (#mainWindow -> #middleClicked) printString; cr]. self mainWindow when: #scrollLeft do: [Transcript show: (#mainWindow -> #scrollLeft) printString; cr]. self mainWindow when: #scrollRight do: [Transcript show: (#mainWindow -> #scrollRight) printString; cr]. self mainWindow when: #scrollDown do: [Transcript show: (#mainWindow -> #scrollDown) printString; cr]. self mainWindow when: #scrollUp do: [Transcript show: (#mainWindow -> #scrollUp) printString; cr].
</methods> <methods> Examples.WindowEventTester <category>actions</category>
moveMe self mainWindow moveTo: 300 @ 300
talk Screen default ringBell
</methods> <methods> Examples.ListBoxEventTester <category>actions</category>
addItemToBottomList "This one changes the WHOLE list" | list | list := self multiSelectList list copy. list addFirst: 'I''m a new item in the bottom list!'. ^self multiSelectList list: list
addItemToTopList "This one just modifies the list (Note, the List has to have dependents in order to work here)" self singleSelectList list addFirst: 'I''m a new item in the top list!'.
</methods> <methods> Examples.ListBoxEventTester <category>aspects</category>
multiSelectList ^multiSelectList isNil ifTrue: [multiSelectList := MultiSelectionInList new] ifFalse: [multiSelectList]
singleSelectList ^singleSelectList isNil ifTrue: [singleSelectList := SelectionInList new] ifFalse: [singleSelectList]
</methods> <methods> Examples.ListBoxEventTester <category>interface opening</category>
postBuildWith: aBuilder singleSelectList list: (MethodsBrowserHelper allSubclasses collect: [:each | each name]) asList. multiSelectList list: (MenuController allSubclasses collect: [:each | each name, ' - Made Long For Scrolling']) asList. self widget: #singleSelectList when: #gettingFocus do: [Transcript show: (#singleSelectList -> #gettingFocus) printString; cr]. self widget: #multiSelectList when: #gettingFocus do: [Transcript show: (#multiSelectList -> #gettingFocus) printString; cr]. self widget: #singleSelectList when: #losingFocus do: [Transcript show: (#singleSelectList -> #losingFocus) printString; cr]. self widget: #multiSelectList when: #losingFocus do: [Transcript show: (#multiSelectList -> #losingFocus) printString; cr]. self widget: #singleSelectList when: #rightClicked do: [Transcript show: (#singleSelectList -> #rightClicked) printString; cr]. self widget: #multiSelectList when: #rightClicked do: [Transcript show: (#multiSelectList -> #rightClicked) printString; cr]. self widget: #singleSelectList when: #doubleClicked do: [Transcript show: (#singleSelectList -> #doubleClicked) printString; cr]. self widget: #multiSelectList when: #doubleClicked do: [Transcript show: (#multiSelectList -> #doubleClicked) printString; cr]. self widget: #singleSelectList when: #clicked do: [Transcript show: (#singleSelectList -> #clicked) printString; cr]. self widget: #multiSelectList when: #clicked do: [Transcript show: (#multiSelectList -> #clicked) printString; cr]. self widget: #singleSelectList when: #scrollUp do: [Transcript show: (#singleSelectList -> #scrollUp) printString; cr]. self widget: #multiSelectList when: #scrollUp do: [Transcript show: (#multiSelectList -> #scrollUp) printString; cr]. self widget: #singleSelectList when: #scrollDown do: [Transcript show: (#singleSelectList -> #scrollDown) printString; cr]. self widget: #multiSelectList when: #scrollDown do: [Transcript show: (#multiSelectList -> #scrollDown) printString; cr]. self widget: #singleSelectList when: #scrollRight do: [Transcript show: (#singleSelectList -> #scrollRight) printString; cr]. self widget: #multiSelectList when: #scrollRight do: [Transcript show: (#multiSelectList -> #scrollRight) printString; cr]. self widget: #singleSelectList when: #scrollLeft do: [Transcript show: (#singleSelectList -> #scrollLeft) printString; cr]. self widget: #multiSelectList when: #scrollLeft do: [Transcript show: (#multiSelectList -> #scrollLeft) printString; cr]. self widget: #singleSelectList when: #selectionListChanged do: [Transcript show: (#singleSelectList -> #selectionListChanged) printString; cr]. self widget: #multiSelectList when: #selectionListChanged do: [Transcript show: (#multiSelectList -> #selectionListChanged) printString; cr]. self widget: #singleSelectList when: #selectionChanged do: [Transcript show: (#singleSelectList -> #selectionChanged) printString; cr]. self widget: #multiSelectList when: #selectionChanged do: [Transcript show: (#multiSelectList -> #selectionChanged) printString; cr]. self widget: #singleSelectList when: #selectionChanging do: [Transcript show: (#singleSelectList -> #selectionChanging) printString; cr]. self widget: #multiSelectList when: #selectionChanging do: [Transcript show: (#multiSelectList -> #selectionChanging) printString; cr]. self widget: #singleSelectList when: #tabbed do: [Transcript show: (#singleSelectList -> #tabbed) printString; cr]. self widget: #multiSelectList when: #tabbed do: [Transcript show: (#multiSelectList -> #tabbed) printString; cr]. self widget: #singleSelectList when: #backTabbed do: [Transcript show: (#singleSelectList -> #backTabbed) printString; cr]. self widget: #multiSelectList when: #backTabbed do: [Transcript show: (#multiSelectList -> #backTabbed) printString; cr].
</methods> <methods> Examples.PercentSliderEventTester <category>aspects</category>
percentDoneValue ^percentDoneValue isNil ifTrue: [percentDoneValue := 0.0 asValue] ifFalse: [percentDoneValue]
sliderValue ^sliderValue isNil ifTrue: [sliderValue := 0 asValue] ifFalse: [sliderValue]
</methods> <methods> Examples.PercentSliderEventTester <category>actions</category>
setProgressTo100 self percentDoneValue value: 1.0
setSliderTo0 self sliderValue value: 0
</methods> <methods> Examples.PercentSliderEventTester <category>triggered events</category>
updatePercentAndLabel | newValue | (self widgetAt: #sliderValue) labelString: (newValue := self sliderValue value) printString. self percentDoneValue value: (newValue / 100)
</methods> <methods> Examples.PercentSliderEventTester <category>interface opening</category>
postBuildWith: aBuilder (self widgetAt: #sliderValue) labelString: '0'. self widget: #slider when: #changing do: [Transcript show: (#slider -> #changing) printString; cr]. self widget: #slider when: #changed do: [Transcript show: (#slider -> #changed) printString; cr]. self widget: #percentDone when: #changed do: [Transcript show: (#percentDone -> #changed) printString; cr]. "And now, really hooking it up!" self widget: #slider when: #changed send: #updatePercentAndLabel to: self.
</methods> <methods> Examples.SubCanvasEventTester <category>actions</category>
changeSubcanvas (self widgetAt: #sub) client: RegionEventTester new
</methods> <methods> Examples.SubCanvasEventTester <category>accessing</category>
client ^client isNil ifTrue: [client := ButtonsEventTester new] ifFalse: [client]
</methods> <methods> Examples.SubCanvasEventTester <category>interface opening</category>
postBuildWith: aBuilder self widget: #sub when: #changing do: [Transcript show: (#sub -> #changing) printString; cr]. self widget: #sub when: #changed do: [Transcript show: (#sub -> #changed) printString; cr]. self widget: #sub when: #scrollRight do: [Transcript show: (#sub -> #scrollRight) printString; cr]. self widget: #sub when: #scrollLeft do: [Transcript show: (#sub -> #scrollLeft) printString; cr]. self widget: #sub when: #scrollUp do: [Transcript show: (#sub -> #scrollUp) printString; cr]. self widget: #sub when: #scrollDown do: [Transcript show: (#sub -> #scrollDown) printString; cr].
</methods> <methods> Examples.ComboBoxEventTester <category>aspects</category>
bottomChoices ^(MenuController allSubclasses collect: [:each | each name]) asList asValue
bottomValue ^bottomValue isNil ifTrue: [bottomValue := String new asValue] ifFalse: [bottomValue]
editableChoices ^(LookupKey allSubclasses collect: [:each | each name]) asList asValue
editableValue ^editableValue isNil ifTrue: [editableValue := String new asValue] ifFalse: [editableValue]
topChoices ^(MethodsBrowserHelper allSubclasses collect: [:each | each name]) asList asValue
topValue ^topValue isNil ifTrue: [topValue := String new asValue] ifFalse: [topValue]
</methods> <methods> Examples.ComboBoxEventTester <category>actions</category>
buttonAction
</methods> <methods> Examples.ComboBoxEventTester <category>interface opening</category>
postBuildWith: aBuilder self widget: #topBox when: #changing do: [Transcript show: (#topBox -> #changing) printString; cr]. self widget: #bottomBox when: #changing do: [Transcript show: (#bottomBox -> #changing) printString; cr]. self widget: #editableBox when: #changing do: [Transcript show: (#editableBox -> #changing) printString; cr]. self widget: #topBox when: #changed do: [Transcript show: (#topBox -> #changed) printString; cr]. self widget: #bottomBox when: #changed do: [Transcript show: (#bottomBox -> #changed) printString; cr]. self widget: #editableBox when: #changed do: [Transcript show: (#editableBox -> #changed) printString; cr]. self widget: #topBox when: #gettingFocus do: [Transcript show: (#topBox -> #gettingFocus) printString; cr]. self widget: #bottomBox when: #gettingFocus do: [Transcript show: (#bottomBox -> #gettingFocus) printString; cr]. self widget: #editableBox when: #gettingFocus do: [Transcript show: (#editableBox -> #gettingFocus) printString; cr]. self widget: #topBox when: #losingFocus do: [Transcript show: (#topBox -> #losingFocus) printString; cr]. self widget: #bottomBox when: #losingFocus do: [Transcript show: (#bottomBox -> #losingFocus) printString; cr]. self widget: #editableBox when: #losingFocus do: [Transcript show: (#editableBox -> #losingFocus) printString; cr]. self widget: #topBox when: #tabbed do: [Transcript show: (#topBox -> #tabbed) printString; cr]. self widget: #bottomBox when: #tabbed do: [Transcript show: (#bottomBox -> #tabbed) printString; cr]. self widget: #editableBox when: #tabbed do: [Transcript show: (#editableBox -> #tabbed) printString; cr]. self widget: #topBox when: #backTabbed do: [Transcript show: (#topBox -> #backTabbed) printString; cr]. self widget: #bottomBox when: #backTabbed do: [Transcript show: (#bottomBox -> #backTabbed) printString; cr]. self widget: #editableBox when: #backTabbed do: [Transcript show: (#editableBox -> #backTabbed) printString; cr]. self widget: #topBox when: #clicked do: [Transcript show: (#topBox -> #clicked) printString; cr]. self widget: #bottomBox when: #clicked do: [Transcript show: (#bottomBox -> #clicked) printString; cr]. self widget: #editableBox when: #clicked do: [Transcript show: (#editableBox -> #clicked) printString; cr]. self widget: #topBox when: #rightClicked do: [Transcript show: (#topBox -> #rightClicked) printString; cr]. self widget: #bottomBox when: #rightClicked do: [Transcript show: (#bottomBox -> #rightClicked) printString; cr]. self widget: #editableBox when: #rightClicked do: [Transcript show: (#editableBox -> #rightClicked) printString; cr]. self widget: #topBox when: #doubleClicked do: [Transcript show: (#topBox -> #doubleClicked) printString; cr]. self widget: #bottomBox when: #doubleClicked do: [Transcript show: (#bottomBox -> #doubleClicked) printString; cr]. self widget: #editableBox when: #doubleClicked do: [Transcript show: (#editableBox -> #doubleClicked) printString; cr]. self widget: #topBox when: #listExposed do: [Transcript show: (#topBox -> #listExposed) printString; cr]. self widget: #bottomBox when: #listExposed do: [Transcript show: (#bottomBox -> #listExposed) printString; cr]. self widget: #editableBox when: #listExposed do: [Transcript show: (#editableBox -> #listExposed) printString; cr]. self widget: #topBox when: #listClosed do: [Transcript show: (#topBox -> #listClosed) printString; cr]. self widget: #bottomBox when: #listClosed do: [Transcript show: (#bottomBox -> #listClosed) printString; cr]. self widget: #editableBox when: #listClosed do: [Transcript show: (#editableBox -> #listClosed) printString; cr].
</methods> <methods> Examples.ButtonsEventTester <category>actions</category>
changeButtonLabel (self widgetAt: #ActionButton1) labelString: 'New Label'
changeCheckBoxLabel (self widgetAt: #CheckBox1) labelString: 'New Label'
changeRadioButtonLabel (self widgetAt: #RadioButton1) labelString: 'New Label'
</methods> <methods> Examples.ButtonsEventTester <category>aspects</category>
rads ^rads isNil ifTrue: [rads := nil asValue] ifFalse: [rads]
</methods> <methods> Examples.ButtonsEventTester <category>interface opening</category>
postBuildWith: aBuilder self widget: #CheckBox1 when: #labelChanged do: [Transcript show: (#CheckBox1 -> #labelChanged) printString;cr]. self widget: #CheckBox1 when: #labelChanging do: [Transcript show: (#CheckBox1 -> #labelChanging) printString;cr]. self widget: #CheckBox1 when: #backTabbed do: [Transcript show: (#CheckBox1 -> #backTabbed) printString;cr]. self widget: #CheckBox1 when: #tabbed do: [Transcript show: (#CheckBox1 -> #tabbed) printString;cr]. self widget: #CheckBox1 when: #clicked do: [Transcript show: (#CheckBox1 -> #clicked) printString;cr]. self widget: #CheckBox1 when: #gettingFocus do: [Transcript show: (#CheckBox1 -> #gettingFocus) printString;cr]. self widget: #CheckBox1 when: #losingFocus do: [Transcript show: (#CheckBox1 -> #losingFocus) printString;cr]. self widget: #CheckBox1 when: #checked do: [Transcript show: (#CheckBox1 -> #checked) printString;cr]. self widget: #CheckBox1 when: #unchecked do: [Transcript show: (#CheckBox1 -> #unchecked) printString;cr]. self widget: #ActionButton1 when: #tabbed do: [Transcript show: (#ActionButton1 -> #tabbed) printString;cr]. self widget: #ActionButton1 when: #backTabbed do: [Transcript show: (#ActionButton1 -> #backTabbed) printString;cr]. self widget: #ActionButton1 when: #gettingFocus do: [Transcript show: (#ActionButton1 -> #gettingFocus) printString;cr]. self widget: #ActionButton1 when: #losingFocus do: [Transcript show: (#ActionButton1 -> #losingFocus) printString;cr]. self widget: #ActionButton1 when: #labelChanged do: [Transcript show: (#ActionButton1 -> #labelChanged) printString;cr]. self widget: #ActionButton1 when: #labelChanging do: [Transcript show: (#ActionButton1 -> #labelChanging) printString;cr]. self widget: #ActionButton1 when: #clicked do: [Transcript show: (#ActionButton1 -> #clicked) printString;cr]. self widget: #ActionButton1 when: #pressed do: [Transcript show: (#ActionButton1 -> #pressed) printString;cr]. self widget: #RadioButton1 when: #labelChanged do: [Transcript show: (#RadioButton1 -> #labelChanged) printString;cr]. self widget: #RadioButton1 when: #labelChanging do: [Transcript show: (#RadioButton1 -> #labelChanging) printString;cr]. self widget: #RadioButton1 when: #backTabbed do: [Transcript show: (#RadioButton1 -> #backTabbed) printString;cr]. self widget: #RadioButton1 when: #tabbed do: [Transcript show: (#RadioButton1 -> #tabbed) printString;cr]. self widget: #RadioButton1 when: #clicked do: [Transcript show: (#RadioButton1 -> #clicked) printString;cr]. self widget: #RadioButton1 when: #gettingFocus do: [Transcript show: (#RadioButton1 -> #gettingFocus) printString;cr]. self widget: #RadioButton1 when: #losingFocus do: [Transcript show: (#RadioButton1 -> #losingFocus) printString;cr]. self widget: #RadioButton1 when: #turnedOn do: [Transcript show: (#RadioButton1 -> #turnedOn) printString;cr]. self widget: #RadioButton1 when: #turnedOff do: [Transcript show: (#RadioButton1 -> #turnedOff) printString;cr]. self widget: #RadioButton2 when: #turnedOn do: [Transcript show: (#RadioButton2 -> #turnedOn) printString;cr]. self widget: #RadioButton2 when: #turnedOff do: [Transcript show: (#RadioButton2 -> #turnedOff) printString;cr]. self widget: #RadioButton2 when: #clicked do: [Transcript show: (#RadioButton2 -> #clicked) printString;cr].
</methods> <methods> Examples.NotebookEventTester <category>aspects</category>
leftBookMajor ^leftBookMajor isNil ifTrue: [leftBookMajor := SelectionInList new] ifFalse: [leftBookMajor]
leftBookMinor ^leftBookMinor isNil ifTrue: [leftBookMinor := SelectionInList new] ifFalse: [leftBookMinor]
rightBookMajor ^rightBookMajor isNil ifTrue: [rightBookMajor := SelectionInList new] ifFalse: [rightBookMajor]
rightBookMinor ^rightBookMinor isNil ifTrue: [rightBookMinor := SelectionInList new] ifFalse: [rightBookMinor]
</methods> <methods> Examples.NotebookEventTester <category>interface opening</category>
initTabsAndPages self leftBookMinor list: (Array with: 'Left First Minor'->#leftFirst with: 'Left Second Minor'->#leftSecond with: 'Left Last Minor'->#leftLast). self leftBookMajor list: (Array with: 'Left 1st Major'->#leftFirst with: 'Left 2nd Major' with: 'Left 3rd Major'). self rightBookMinor list: #('Right First Minor' 'Right Second Minor' 'Right Third Minor'). self rightBookMajor list: #('Right 1st Major' 'Right 2nd Major' 'Right 3rd Major').
postBuildWith: aBuilder self builder == aBuilder ifFalse: [^self]. self initTabsAndPages. self widget: #leftBook when: #gettingFocus do: [Transcript show: (#leftBook -> #gettingFocus) printString; cr]. self widget: #rightBook when: #gettingFocus do: [Transcript show: (#rightBook -> #gettingFocus) printString; cr]. self widget: #leftBook when: #losingFocus do: [Transcript show: (#leftBook -> #losingFocus) printString; cr]. self widget: #rightBook when: #losingFocus do: [Transcript show: (#rightBook -> #losingFocus) printString; cr]. self widget: #leftBook when: #tabbed do: [Transcript show: (#leftBook -> #tabbed) printString; cr]. self widget: #rightBook when: #tabbed do: [Transcript show: (#rightBook -> #tabbed) printString; cr]. self widget: #leftBook when: #backTabbed do: [Transcript show: (#leftBook -> #backTabbed) printString; cr]. self widget: #rightBook when: #backTabbed do: [Transcript show: (#rightBook -> #backTabbed) printString; cr]. self widget: #leftBook when: #scrollLeft do: [Transcript show: (#leftBook -> #scrollLeft) printString; cr]. self widget: #rightBook when: #scrollLeft do: [Transcript show: (#rightBook -> #scrollLeft) printString; cr]. self widget: #leftBook when: #scrollRight do: [Transcript show: (#leftBook -> #scrollRight) printString; cr]. self widget: #rightBook when: #scrollRight do: [Transcript show: (#rightBook -> #scrollRight) printString; cr]. self widget: #leftBook when: #scrollUp do: [Transcript show: (#leftBook -> #scrollUp) printString; cr]. self widget: #rightBook when: #scrollUp do: [Transcript show: (#rightBook -> #scrollUp) printString; cr]. self widget: #leftBook when: #scrollDown do: [Transcript show: (#leftBook -> #scrollDown) printString; cr]. self widget: #rightBook when: #scrollDown do: [Transcript show: (#rightBook -> #scrollDown) printString; cr]. self widget: #leftBook when: #horizontalTabChanging do: [Transcript show: (#leftBook -> #horizontalTabChanging) printString; cr]. self widget: #rightBook when: #horizontalTabChanging do: [Transcript show: (#rightBook -> #horizontalTabChanging) printString; cr]. self widget: #leftBook when: #horizontalTabChanged do: [Transcript show: (#leftBook -> #horizontalTabChanged) printString; cr]. self widget: #rightBook when: #horizontalTabChanged do: [Transcript show: (#rightBook -> #horizontalTabChanged) printString; cr]. self widget: #leftBook when: #verticalTabChanging do: [Transcript show: (#leftBook -> #verticalTabChanging) printString; cr]. self widget: #rightBook when: #verticalTabChanging do: [Transcript show: (#rightBook -> #verticalTabChanging) printString; cr]. self widget: #leftBook when: #verticalTabChanged do: [Transcript show: (#leftBook -> #verticalTabChanged) printString; cr]. self widget: #rightBook when: #verticalTabChanged do: [Transcript show: (#rightBook -> #verticalTabChanged) printString; cr]. "Some real stuff" (self widgetAt: #leftBook) client: self spec: #leftFirst builder: self builder newSubBuilder. self widget: #leftBook when: #horizontalTabChanged send: #changeMinorPage to: self.
</methods> <methods> Examples.NotebookEventTester <category>event actions</category>
changeMinorPage (self widgetAt: #leftBook) client: self spec: self leftBookMinor selection value builder: self builder newSubBuilder.
</methods> <methods> Examples.TabControlEventTester <category>interface opening</category>
postBuildWith: aBuilder self builder == aBuilder ifFalse: [^self]. self widget: #tabControl when: #scrollLeft do: [Transcript show: (#tabControl -> #scrollLeft) printString; cr]. self widget: #tabControl when: #scrollRight do: [Transcript show: (#tabControl -> #scrollRight) printString; cr]. self widget: #tabControl when: #pageLeft do: [Transcript show: (#tabControl -> #pageLeft) printString; cr]. self widget: #tabControl when: #pageRight do: [Transcript show: (#tabControl -> #pageRight) printString; cr]. self widget: #tabControl when: #tabChanging do: [Transcript show: (#tabControl -> #tabChanging) printString; cr]. self widget: #tabControl when: #tabChanged do: [Transcript show: (#tabControl -> #tabChanged) printString; cr]. self widget: #tabControl when: #tabbed do: [Transcript show: (#tabControl -> #tabbed) printString; cr]. self widget: #tabControl when: #backTabbed do: [Transcript show: (#tabControl -> #backTabbed) printString; cr]. self widget: #tabControl when: #gettingFocus do: [Transcript show: (#tabControl -> #gettingFocus) printString; cr]. self widget: #tabControl when: #losingFocus do: [Transcript show: (#tabControl -> #losingFocus) printString; cr].
</methods> <methods> Examples.HierarchicalListEventTester <category>aspects</category>
multiList ^multiList isNil ifTrue: [multiList := IndentedTreeSelectionInList newEmptyInstance] ifFalse: [multiList]
singleList ^singleList isNil ifTrue: [singleList := IndentedTreeSelectionInList newEmptyInstance] ifFalse: [singleList]
</methods> <methods> Examples.HierarchicalListEventTester <category>interface opening</category>
initializeLists self singleList newObjectHierarchy: VisualComponent childAccessor: #subclasses childNameAccessor: #name. self singleList deepOpenCurrent. self multiList newObjectHierarchy: Magnitude childAccessor: #subclasses childNameAccessor: #name. self multiList deepOpenCurrent
postBuildWith: aBuilder self initializeLists. self widget: #singleList when: #gettingFocus do: [Transcript show: (#singleList -> #gettingFocus) printString; cr]. self widget: #multiList when: #gettingFocus do: [Transcript show: (#multiList -> #gettingFocus) printString; cr]. self widget: #singleList when: #losingFocus do: [Transcript show: (#singleList -> #losingFocus) printString; cr]. self widget: #multiList when: #losingFocus do: [Transcript show: (#multiList -> #losingFocus) printString; cr]. self widget: #singleList when: #rightClicked do: [Transcript show: (#singleList -> #rightClicked) printString; cr]. self widget: #multiList when: #rightClicked do: [Transcript show: (#multiList -> #rightClicked) printString; cr]. self widget: #singleList when: #doubleClicked do: [Transcript show: (#singleList -> #doubleClicked) printString; cr]. self widget: #multiList when: #doubleClicked do: [Transcript show: (#multiList -> #doubleClicked) printString; cr]. self widget: #singleList when: #clicked do: [Transcript show: (#singleList -> #clicked) printString; cr]. self widget: #multiList when: #clicked do: [Transcript show: (#multiList -> #clicked) printString; cr]. self widget: #singleList when: #scrollUp do: [Transcript show: (#singleList -> #scrollUp) printString; cr]. self widget: #multiList when: #scrollUp do: [Transcript show: (#multiList -> #scrollUp) printString; cr]. self widget: #singleList when: #scrollDown do: [Transcript show: (#singleList -> #scrollDown) printString; cr]. self widget: #multiList when: #scrollDown do: [Transcript show: (#multiList -> #scrollDown) printString; cr]. self widget: #singleList when: #scrollRight do: [Transcript show: (#singleList -> #scrollRight) printString; cr]. self widget: #multiList when: #scrollRight do: [Transcript show: (#multiList -> #scrollRight) printString; cr]. self widget: #singleList when: #scrollLeft do: [Transcript show: (#singleList -> #scrollLeft) printString; cr]. self widget: #multiList when: #scrollLeft do: [Transcript show: (#multiList -> #scrollLeft) printString; cr]. self widget: #singleList when: #selectionListChanged do: [Transcript show: (#singleList -> #selectionListChanged) printString; cr.]. self widget: #multiList when: #selectionListChanged do: [Transcript show: (#multiList -> #selectionListChanged) printString; cr]. self widget: #singleList when: #selectionChanged do: [Transcript show: (#singleList -> #selectionChanged) printString; cr]. self widget: #multiList when: #selectionChanged do: [Transcript show: (#multiList -> #selectionChanged) printString; cr]. self widget: #singleList when: #selectionChanging do: [Transcript show: (#singleList -> #selectionChanging) printString; cr]. self widget: #multiList when: #selectionChanging do: [Transcript show: (#multiList -> #selectionChanging) printString; cr]. self widget: #singleList when: #tabbed do: [Transcript show: (#singleList -> #tabbed) printString; cr]. self widget: #multiList when: #tabbed do: [Transcript show: (#multiList -> #tabbed) printString; cr]. self widget: #singleList when: #backTabbed do: [Transcript show: (#singleList -> #backTabbed) printString; cr]. self widget: #multiList when: #backTabbed do: [Transcript show: (#multiList -> #backTabbed) printString; cr]. self widget: #singleList when: #itemCollapsed do: [Transcript show: (#singleList -> #itemCollapsed) printString; cr]. self widget: #multiList when: #itemCollapsed do: [Transcript show: (#multiList -> #itemCollapsed) printString; cr]. self widget: #singleList when: #itemExpanded do: [Transcript show: (#singleList -> #itemExpanded) printString; cr]. self widget: #multiList when: #itemExpanded do: [Transcript show: (#multiList -> #itemExpanded) printString; cr].
</methods> <methods> Examples.HierarchicalListEventTester <category>actions</category>
changeTopList self singleList newObjectHierarchy: Object childAccessor: #subclasses childNameAccessor: #name.
</methods> <methods> Examples.EditInputEventTests <category>aspects</category>
text1 ^text1 isNil ifTrue: [text1 := 'First Input Field (being a bit big for scrolling)' copy asValue] ifFalse: [text1]
text2 ^text2 isNil ifTrue: [text2 := 'Second Input Field' copy asValue] ifFalse: [text2]
text3 ^text3 isNil ifTrue: [text3 := (EditInputEventTests class compiledMethodAt: #windowSpec) getSource copy asValue] ifFalse: [text3]
</methods> <methods> Examples.EditInputEventTests <category>interface opening</category>
postBuildWith: aBuilder self widget: #topInputField when: #changed do: [Transcript show: (#topInputField -> #changed) printString; cr]. self widget: #secondInputField when: #changed do: [Transcript show: (#secondInputField -> #changed) printString; cr]. self widget: #textEditor when: #changed do: [Transcript show: (#textEditor -> #changed) printString; cr]. self widget: #readOnlyField when: #changed do: [Transcript show: (#readOnlyField -> #changed) printString; cr]. self widget: #topInputField when: #changing do: [Transcript show: (#topInputField -> #changing) printString; cr]. self widget: #secondInputField when: #changing do: [Transcript show: (#secondInputField -> #changing) printString; cr]. self widget: #textEditor when: #changing do: [Transcript show: (#textEditor -> #changing) printString; cr]. self widget: #readOnlyField when: #changing do: [Transcript show: (#readOnlyField -> #changing) printString; cr]. self widget: #topInputField when: #clicked do: [Transcript show: (#topInputField -> #clicked) printString; cr]. self widget: #secondInputField when: #clicked do: [Transcript show: (#secondInputField -> #clicked) printString; cr]. self widget: #textEditor when: #clicked do: [Transcript show: (#textEditor -> #clicked) printString; cr]. self widget: #readOnlyField when: #clicked do: [Transcript show: (#readOnlyField -> #clicked) printString; cr]. self widget: #topInputField when: #rightClicked do: [Transcript show: (#topInputField -> #rightClicked) printString; cr]. self widget: #secondInputField when: #rightClicked do: [Transcript show: (#secondInputField -> #rightClicked) printString; cr]. self widget: #textEditor when: #rightClicked do: [Transcript show: (#textEditor -> #rightClicked) printString; cr]. self widget: #readOnlyField when: #rightClicked do: [Transcript show: (#readOnlyField -> #rightClicked) printString; cr]. self widget: #topInputField when: #doubleClicked do: [Transcript show: (#topInputField -> #doubleClicked) printString; cr]. self widget: #secondInputField when: #doubleClicked do: [Transcript show: (#secondInputField -> #doubleClicked) printString; cr]. "Text Editor does not support doubleClicking" self widget: #readOnlyField when: #doubleClicked do: [Transcript show: (#readOnlyField -> #doubleClicked) printString; cr]. self widget: #topInputField when: #gettingFocus do: [Transcript show: (#topInputField -> #gettingFocus) printString; cr]. self widget: #secondInputField when: #gettingFocus do: [Transcript show: (#secondInputField -> #gettingFocus) printString; cr]. self widget: #textEditor when: #gettingFocus do: [Transcript show: (#textEditor -> #gettingFocus) printString; cr]. self widget: #readOnlyField when: #gettingFocus do: [Transcript show: (#readOnlyField -> #gettingFocus) printString; cr]. self widget: #topInputField when: #losingFocus do: [Transcript show: (#topInputField -> #losingFocus) printString; cr]. self widget: #secondInputField when: #losingFocus do: [Transcript show: (#secondInputField -> #losingFocus) printString; cr]. self widget: #textEditor when: #losingFocus do: [Transcript show: (#textEditor -> #losingFocus) printString; cr]. self widget: #readOnlyField when: #losingFocus do: [Transcript show: (#readOnlyField -> #losingFocus) printString; cr]. self widget: #topInputField when: #tabbed do: [Transcript show: (#topInputField -> #tabbed) printString; cr]. self widget: #secondInputField when: #tabbed do: [Transcript show: (#secondInputField -> #tabbed) printString; cr]. self widget: #textEditor when: #tabbed do: [Transcript show: (#textEditor -> #tabbed) printString; cr]. self widget: #readOnlyField when: #tabbed do: [Transcript show: (#readOnlyField -> #gettingFocus) printString; cr]. self widget: #topInputField when: #backTabbed do: [Transcript show: (#topInputField -> #backTabbed) printString; cr]. self widget: #secondInputField when: #backTabbed do: [Transcript show: (#secondInputField -> #backTabbed) printString; cr]. self widget: #textEditor when: #backTabbed do: [Transcript show: (#textEditor -> #backTabbed) printString; cr]. self widget: #readOnlyField when: #backTabbed do: [Transcript show: (#readOnlyField -> #backTabbed) printString; cr]. self widget: #topInputField when: #scrollLeft do: [Transcript show: (#topInputField -> #scrollLeft) printString; cr]. self widget: #secondInputField when: #scrollLeft do: [Transcript show: (#secondInputField -> #scrollLeft) printString; cr]. self widget: #textEditor when: #scrollLeft do: [Transcript show: (#textEditor -> #scrollLeft) printString; cr]. self widget: #readOnlyField when: #scrollLeft do: [Transcript show: (#readOnlyField -> #scrollLeft) printString; cr]. self widget: #topInputField when: #scrollRight do: [Transcript show: (#topInputField -> #scrollRight) printString; cr]. self widget: #secondInputField when: #scrollRight do: [Transcript show: (#secondInputField -> #scrollRight) printString; cr]. self widget: #textEditor when: #scrollRight do: [Transcript show: (#textEditor -> #scrollRight) printString; cr]. self widget: #readOnlyField when: #scrollRight do: [Transcript show: (#readOnlyField -> #scrollRight) printString; cr]. self widget: #textEditor when: #scrollUp do: [Transcript show: (#textEditor -> #scrollUp) printString; cr]. self widget: #textEditor when: #scrollDown do: [Transcript show: (#textEditor -> #scrollDown) printString; cr].
</methods> <methods> Examples.SpinEventTriggerTester <category>aspects</category>
dateAspect ^dateAspect isNil ifTrue: [dateAspect := (Date newDay: 16 monthNumber: 12 year: 2000) asValue] ifFalse: [dateAspect]
numberAspect ^numberAspect isNil ifTrue: [numberAspect := 0 asValue] ifFalse: [numberAspect]
numberNoLow ^numberNoLow isNil ifTrue: [numberNoLow := 24.0 asValue] ifFalse: [numberNoLow]
stringAspect ^stringAspect isNil ifTrue: [stringAspect := '223331231' copy asValue] ifFalse: [stringAspect]
timeAspect ^timeAspect isNil ifTrue: [timeAspect := Time now asValue] ifFalse: [timeAspect]
</methods> <methods> Examples.SpinEventTriggerTester <category>interface opening</category>
postBuildWith: aBuilder #(#bumpSpinner #wrapSpinner) do:[:each| self widget: each when: #changed do: [Transcript show: (each -> #changed) printString; cr]. self widget: each when: #bounceBottom do: [Transcript show: (each -> #bounceBottom) printString; cr]. self widget: each when: #changing do: [Transcript show: (each -> #changing) printString; cr]. self widget: each when: #losingFocus do: [Transcript show: (each -> #losingFocus) printString; cr]. self widget: each when: #wrapAroundTop do: [Transcript show: (each -> #wrapAroundTop) printString; cr]. self widget: each when: #tabbed do: [Transcript show: (each -> #tabbed) printString; cr]. self widget: each when: #gettingFocus do: [Transcript show: (each -> #gettingFocus) printString; cr]. self widget: each when: #bounceTop do: [Transcript show: (each -> #bounceTop) printString; cr]. self widget: each when: #backTabbed do: [Transcript show: (each -> #backTabbed) printString; cr]. self widget: each when: #wrapAroundBottom do: [Transcript show: (each -> #wrapAroundBottom) printString; cr]. self widget: each when: #spinDown do: [Transcript show: (each -> #spinDown) printString; cr]. self widget: each when: #spinUp do: [Transcript show: (each -> #spinUp) printString; cr]. self widget: each when: #spunDown do: [Transcript show: (each -> #spunDown) printString; cr]. self widget: each when: #spunUp do: [Transcript show: (each -> #spunUp) printString; cr]. self widget: each when: #doubleClicked do: [Transcript show: (each -> #doubleClicked) printString; cr]. self widget: each when: #rightClicked do: [Transcript show: (each -> #rightClicked) printString; cr]. self widget: each when: #clicked do: [Transcript show: (each -> #clicked) printString; cr]]
</methods> <methods> Examples.TableEventTester <category>interface opening</category>
initTables | adaptors | self cellSelection columnLabelsArray: #('Class Name' 'IVars'); columnWidths: #(200 500); columnLabelsFormats: #(#left #left). self rowSelection columnLabelsArray: #('Class Name' 'IVars'); columnWidths: #(200 500); columnLabelsFormats: #(#left #left). self columnSelection columnLabelsArray: #('Class Name' 'IVars'); columnWidths: #(200 500); columnLabelsFormats: #(#left #left). adaptors := RowAdaptor adaptForAspects: #(#name #ivarNamesString). self cellSelection table baseCollection: (VisualComponent allSubclasses collect: [:each | ClassWrapper on: each]) adaptors: adaptors. self rowSelection table baseCollection: (Change allSubclasses collect: [:each | ClassWrapper on: each]) adaptors: adaptors. self columnSelection table baseCollection: (ApplicationModel allSubclasses collect: [:each | ClassWrapper on: each]) adaptors: adaptors.
postBuildWith: aBuilder self initTables. self widget: #cellSelection when: #scrollUp do: [Transcript show: (#cellSelection -> #scrollUp) printString; cr]. self widget: #rowSelection when: #scrollUp do: [Transcript show: (#rowSelection -> #scrollUp) printString; cr]. self widget: #columnSelection when: #scrollUp do: [Transcript show: (#columnSelection -> #scrollUp) printString; cr]. self widget: #cellSelection when: #scrollDown do: [Transcript show: (#cellSelection -> #scrollDown) printString; cr]. self widget: #rowSelection when: #scrollDown do: [Transcript show: (#rowSelection -> #scrollDown) printString; cr]. self widget: #columnSelection when: #scrollDown do: [Transcript show: (#columnSelection -> #scrollDown) printString; cr]. self widget: #cellSelection when: #scrollLeft do: [Transcript show: (#cellSelection -> #scrollLeft) printString; cr]. self widget: #rowSelection when: #scrollLeft do: [Transcript show: (#rowSelection -> #scrollLeft) printString; cr]. self widget: #columnSelection when: #scrollLeft do: [Transcript show: (#columnSelection -> #scrollLeft) printString; cr]. self widget: #cellSelection when: #scrollRight do: [Transcript show: (#cellSelection -> #scrollRight) printString; cr]. self widget: #rowSelection when: #scrollRight do: [Transcript show: (#rowSelection -> #scrollRight) printString; cr]. self widget: #columnSelection when: #scrollRight do: [Transcript show: (#columnSelection -> #scrollRight) printString; cr]. self widget: #cellSelection when: #tabbed do: [Transcript show: (#cellSelection -> #tabbed) printString; cr]. self widget: #rowSelection when: #tabbed do: [Transcript show: (#rowSelection -> #tabbed) printString; cr]. self widget: #columnSelection when: #tabbed do: [Transcript show: (#columnSelection -> #tabbed) printString; cr]. self widget: #cellSelection when: #backTabbed do: [Transcript show: (#cellSelection -> #backTabbed) printString; cr]. self widget: #rowSelection when: #backTabbed do: [Transcript show: (#rowSelection -> #backTabbed) printString; cr]. self widget: #columnSelection when: #backTabbed do: [Transcript show: (#columnSelection -> #backTabbed) printString; cr]. self widget: #cellSelection when: #gettingFocus do: [Transcript show: (#cellSelection -> #gettingFocus) printString; cr]. self widget: #rowSelection when: #gettingFocus do: [Transcript show: (#rowSelection -> #gettingFocus) printString; cr]. self widget: #columnSelection when: #gettingFocus do: [Transcript show: (#columnSelection -> #gettingFocus) printString; cr]. self widget: #cellSelection when: #losingFocus do: [Transcript show: (#cellSelection -> #losingFocus) printString; cr]. self widget: #rowSelection when: #losingFocus do: [Transcript show: (#rowSelection -> #losingFocus) printString; cr]. self widget: #columnSelection when: #losingFocus do: [Transcript show: (#columnSelection -> #losingFocus) printString; cr]. self widget: #cellSelection when: #clicked do: [Transcript show: (#cellSelection -> #clicked) printString; cr]. self widget: #rowSelection when: #clicked do: [Transcript show: (#rowSelection -> #clicked) printString; cr]. self widget: #columnSelection when: #clicked do: [Transcript show: (#columnSelection -> #clicked) printString; cr]. self widget: #cellSelection when: #doubleClicked do: [Transcript show: (#cellSelection -> #doubleClicked) printString; cr]. self widget: #rowSelection when: #doubleClicked do: [Transcript show: (#rowSelection -> #doubleClicked) printString; cr]. self widget: #columnSelection when: #doubleClicked do: [Transcript show: (#columnSelection -> #doubleClicked) printString; cr]. self widget: #cellSelection when: #rightClicked do: [Transcript show: (#cellSelection -> #rightClicked) printString; cr]. self widget: #rowSelection when: #rightClicked do: [Transcript show: (#rowSelection -> #rightClicked) printString; cr]. self widget: #columnSelection when: #rightClicked do: [Transcript show: (#columnSelection -> #rightClicked) printString; cr]. self widget: #cellSelection when: #rowSelectionChanged do: [Transcript show: (#cellSelection -> #rowSelectionChanged) printString; cr]. self widget: #rowSelection when: #rowSelectionChanged do: [Transcript show: (#rowSelection -> #rowSelectionChanged) printString; cr]. self widget: #columnSelection when: #rowSelectionChanged do: [Transcript show: (#columnSelection -> #rowSelectionChanged) printString; cr]. self widget: #cellSelection when: #columnSelectionChanged do: [Transcript show: (#cellSelection -> #columnSelectionChanged) printString; cr]. self widget: #rowSelection when: #columnSelectionChanged do: [Transcript show: (#rowSelection -> #columnSelectionChanged) printString; cr]. self widget: #columnSelection when: #columnSelectionChanged do: [Transcript show: (#columnSelection -> #columnSelectionChanged) printString; cr]. self widget: #cellSelection when: #cellSelectionChanged do: [Transcript show: (#cellSelection -> #cellSelectionChanged) printString; cr]. self widget: #rowSelection when: #cellSelectionChanged do: [Transcript show: (#rowSelection -> #cellSelectionChanged) printString; cr]. self widget: #columnSelection when: #cellSelectionChanged do: [Transcript show: (#columnSelection -> #cellSelectionChanged) printString; cr].
</methods> <methods> Examples.TableEventTester <category>aspects</category>
cellSelection ^cellSelection isNil ifTrue: [cellSelection := TableInterface new selectionInTable: SelectionInTable new] ifFalse: [cellSelection]
columnSelection ^columnSelection isNil ifTrue: [columnSelection := TableInterface new selectionInTable: SelectionInTable new] ifFalse: [columnSelection]
rowSelection ^rowSelection isNil ifTrue: [rowSelection := TableInterface new selectionInTable: SelectionInTable new] ifFalse: [rowSelection]
</methods> <methods> Examples.ViewHolderEventTester <category>interface opening</category>
postBuildWith: aBuilder self widget: #screenView when: #scrollUp do: [Transcript show: (#screenView -> #scrollUp) printString; cr]. self widget: #screenView when: #scrollDown do: [Transcript show: (#screenView -> #scrollDown) printString; cr]. self widget: #screenView when: #scrollLeft do: [Transcript show: (#screenView -> #scrollLeft) printString; cr]. self widget: #screenView when: #scrollRight do: [Transcript show: (#screenView -> #scrollRight) printString; cr].
</methods> <methods> Examples.ViewHolderEventTester <category>views</category>
canvasView ^Image cincomSmalltalkLogo
logoView ^(Screen default contentsOfArea: (0 @ 0 extent: 300 @ 300)) first
</methods> <methods> Examples.GroupBoxEventTester <category>actions</category>
changeGroupBoxLabel (self widgetAt: #groupBox) labelString: 'A Different Label'
removeGroupBoxLabel (self widgetAt: #groupBox) label: nil
</methods> <methods> Examples.GroupBoxEventTester <category>interface opening</category>
postBuildWith: aBuilder self widget: #groupBox when: #labelChanging do: [Transcript show: (#groupBox -> #changing) printString; cr]. self widget: #groupBox when: #labelChanged do: [Transcript show: (#groupBox -> #changed) printString; cr].
</methods> <methods> Examples.DatasetEventTester <category>actions</category>
addRowToSingleSelectDataset self singleSelectList list add: ClassWrapper new
columnReorder (self widgetAt: #multiSelect) allowColumnReordering: self columnReordering value
columnResize (self widgetAt: #multiSelect) allowColumnResizing: self columnResizing value
columnSort (self widgetAt: #multiSelect) allowSorting: self columnSorting value
multiSelectRowHolderCheckBoxLabelPressed "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined." | ascSortBlock dscSortBlock sortBlock | ascSortBlock := [:x :y | x checkBox printString <= y checkBox printString]. dscSortBlock := [:x :y | x checkBox printString >= y checkBox printString]. self multiSelectList sortAspect == #multiSelectRowHolderCheckBox ifTrue: [ self multiSelectList sortDirection == #asc ifTrue: [self multiSelectList sortDirection: #dsc. sortBlock := ascSortBlock] ifFalse: [self multiSelectList sortDirection: #asc. sortBlock := dscSortBlock]] ifFalse: [self multiSelectList sortAspect: #multiSelectRowHolderCheckBox. self multiSelectList sortDirection: #dsc. sortBlock := ascSortBlock]. self multiSelectList list: (SortedCollection withAll: (self multiSelectList list) sortBlock: sortBlock) asList.
multiSelectRowHolderIvarNameLabelPressed "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined." | ascSortBlock dscSortBlock sortBlock | ascSortBlock := [:x :y | x ivarName printString <= y ivarName printString]. dscSortBlock := [:x :y | x ivarName printString >= y ivarName printString]. self multiSelectList sortAspect == #multiSelectRowHolderIvarName ifTrue: [ self multiSelectList sortDirection == #asc ifTrue: [self multiSelectList sortDirection: #dsc. sortBlock := ascSortBlock] ifFalse: [self multiSelectList sortDirection: #asc. sortBlock := dscSortBlock]] ifFalse: [self multiSelectList sortAspect: #multiSelectRowHolderIvarName. self multiSelectList sortDirection: #dsc. sortBlock := ascSortBlock]. self multiSelectList list: (SortedCollection withAll: (self multiSelectList list) sortBlock: sortBlock) asList.
multiSelectRowHolderNameLabelPressed "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined." | ascSortBlock dscSortBlock sortBlock | ascSortBlock := [:x :y | x name printString <= y name printString]. dscSortBlock := [:x :y | x name printString >= y name printString]. self multiSelectList sortAspect == #multiSelectRowHolderName ifTrue: [ self multiSelectList sortDirection == #asc ifTrue: [self multiSelectList sortDirection: #dsc. sortBlock := ascSortBlock] ifFalse: [self multiSelectList sortDirection: #asc. sortBlock := dscSortBlock]] ifFalse: [self multiSelectList sortAspect: #multiSelectRowHolderName. self multiSelectList sortDirection: #dsc. sortBlock := ascSortBlock]. self multiSelectList list: (SortedCollection withAll: (self multiSelectList list) sortBlock: sortBlock) asList.
removeRowToSingleSelectDataset self singleSelectList selectionDo:[:selection| self singleSelectList list remove: selection]
</methods> <methods> Examples.DatasetEventTester <category>aspects</category>
columnReordering ^columnReordering isNil ifTrue: [columnReordering := true asValue] ifFalse: [columnReordering]
columnResizing ^columnResizing isNil ifTrue: [columnResizing := true asValue] ifFalse: [columnResizing]
columnSorting ^columnSorting isNil ifTrue: [columnSorting := true asValue] ifFalse: [columnSorting]
ivarNames ^[self singleSelectRowHolder value ivarNames asList]
multiIvarNames ^[self multiSelectRowHolder value ivarNames asList]
multiSelectList "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^multiSelectList isNil ifTrue: [multiSelectList := MultiSelectionInListSortAware new. multiSelectList selectionIndexHolder compute: [:v | multiSelectList selections isEmpty ifFalse: [ self multiSelectRowHolder value: multiSelectList selections first]]. multiSelectList] ifFalse: [multiSelectList]
multiSelectRowHolder "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^multiSelectRowHolder isNil ifTrue: [multiSelectRowHolder := nil asValue] ifFalse: [multiSelectRowHolder]
singleSelectList "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^singleSelectList isNil ifTrue: [singleSelectList := SelectionInList new. singleSelectList selectionIndexHolder compute: [:v | self singleSelectRowHolder value: singleSelectList selection]. singleSelectList] ifFalse: [singleSelectList]
singleSelectRowHolder ^singleSelectRowHolder isNil ifTrue: [singleSelectRowHolder := nil asValue] ifFalse: [singleSelectRowHolder]
</methods> <methods> Examples.DatasetEventTester <category>interface opening</category>
initLists self singleSelectList list: (ApplicationModel withAllSubclasses asList collect: [:each | ClassWrapper on: each]) . self multiSelectList list: (Change withAllSubclasses collect: [:each | ClassWrapper on: each]) . self columnSorting onChangeSend: #columnSort to: self. self columnResizing onChangeSend: #columnResize to: self. self columnReordering onChangeSend: #columnReorder to: self.
postBuildWith: aBuilder self initLists. self widget: #singleSelect when: #rightClicked do: [Transcript show: (#singleSelect -> #rightClicked) printString; cr]. self widget: #multiSelect when: #rightClicked do: [Transcript show: (#multiSelect -> #rightClicked) printString; cr]. self widget: #singleSelect when: #selectionListChanged do: [Transcript show: (#singleSelect -> #selectionListChanged) printString; cr]. self widget: #singleSelect when: #doubleClicked do: [Transcript show: (#singleSelect -> #doubleClicked) printString; cr]. self widget: #multiSelect when: #doubleClicked do: [Transcript show: (#multiSelect -> #doubleClicked) printString; cr]. self widget: #singleSelect when: #gettingFocus do: [Transcript show: (#singleSelect -> #gettingFocus) printString; cr]. self widget: #multiSelect when: #gettingFocus do: [Transcript show: (#multiSelect -> #gettingFocus) printString; cr]. self widget: #singleSelect when: #losingFocus do: [Transcript show: (#singleSelect -> #losingFocus) printString; cr]. self widget: #multiSelect when: #losingFocus do: [Transcript show: (#multiSelect -> #losingFocus) printString; cr]. self widget: #singleSelect when: #cellGettingFocus do: [Transcript show: (#singleSelect -> #cellGettingFocus) printString; cr]. self widget: #multiSelect when: #cellGettingFocus do: [Transcript show: (#multiSelect -> #cellGettingFocus) printString; cr]. self widget: #singleSelect when: #cellLosingFocus do: [Transcript show: (#singleSelect -> #cellLosingFocus) printString; cr]. self widget: #multiSelect when: #cellLosingFocus do: [Transcript show: (#multiSelect -> #cellLosingFocus) printString; cr]. self widget: #singleSelect when: #tabbed do: [Transcript show: (#singleSelect -> #tabbed) printString; cr]. self widget: #multiSelect when: #tabbed do: [Transcript show: (#multiSelect -> #tabbed) printString; cr]. self widget: #singleSelect when: #backTabbed do: [Transcript show: (#singleSelect -> #backTabbed) printString; cr]. self widget: #multiSelect when: #backTabbed do: [Transcript show: (#multiSelect -> #backTabbed) printString; cr]. self widget: #singleSelect when: #cellTabbed do: [Transcript show: (#singleSelect -> #cellTabbed) printString; cr]. self widget: #multiSelect when: #cellTabbed do: [Transcript show: (#multiSelect -> #cellTabbed) printString; cr]. self widget: #singleSelect when: #cellBackTabbed do: [Transcript show: (#singleSelect -> #cellBackTabbed) printString; cr]. self widget: #multiSelect when: #cellBackTabbed do: [Transcript show: (#multiSelect -> #cellBackTabbed) printString; cr]. self widget: #singleSelect when: #scrollRight do: [Transcript show: (#singleSelect -> #scrollRight) printString; cr]. self widget: #multiSelect when: #scrollRight do: [Transcript show: (#multiSelect -> #scrollRight) printString; cr]. self widget: #singleSelect when: #scrollLeft do: [Transcript show: (#singleSelect -> #scrollLeft) printString; cr]. self widget: #multiSelect when: #scrollLeft do: [Transcript show: (#multiSelect -> #scrollLeft) printString; cr]. self widget: #singleSelect when: #scrollDown do: [Transcript show: (#singleSelect -> #scrollDown) printString; cr]. self widget: #multiSelect when: #scrollDown do: [Transcript show: (#multiSelect -> #scrollDown) printString; cr]. self widget: #singleSelect when: #scrollUp do: [Transcript show: (#singleSelect -> #scrollUp) printString; cr]. self widget: #multiSelect when: #scrollUp do: [Transcript show: (#multiSelect -> #scrollUp) printString; cr]. self widget: #singleSelect when: #cellValueChanged do: [Transcript show: (#singleSelect -> #cellValueChanged) printString; cr]. self widget: #multiSelect when: #cellValueChanged do: [Transcript show: (#multiSelect -> #cellValueChanged) printString; cr]. self widget: #singleSelect when: #columnLabelClicked do: [Transcript show: (#singleSelect -> #columnLabelClicked) printString; cr]. self widget: #multiSelect when: #columnLabelClicked do: [Transcript show: (#multiSelect -> #columnLabelClicked) printString; cr]. self widget: #singleSelect when: #rowLabelClicked do: [Transcript show: (#singleSelect -> #rowLabelClicked) printString; cr]. self widget: #multiSelect when: #rowLabelClicked do: [Transcript show: (#multiSelect -> #rowLabelClicked) printString; cr]. self widget: #multiSelect when: #rowSelectionsChanging do: [Transcript show: (#multiSelect -> #rowSelectionsChanging) printString; cr]. self widget: #multiSelect when: #rowSelectionsChanged do: [Transcript show: (#multiSelect -> #rowSelectionsChanged) printString; cr].
</methods> <methods> Examples.ResizingSplitterEventTester <category>interface opening</category>
postBuildWith: aBuilder self widget: #horizontalSplitter when: #clicked do: [Transcript show: (#horizontalSplitter -> #clicked) printString; cr]. self widget: #verticalSplitter when: #clicked do: [Transcript show: (#verticalSplitter -> #clicked) printString; cr]. self widget: #horizontalSplitter when: #moved do: [Transcript show: (#horizontalSplitter -> #moved) printString; cr]. self widget: #verticalSplitter when: #moved do: [Transcript show: (#verticalSplitter -> #moved) printString; cr].
</methods> <methods> Examples.ClickWidgetEventTester class <category>resources</category>
logo "UIMaskEditor new openOnClass: self andSelector: #logo" <resource: #image> ^(Image extent: 216@216 depth: 4 bitsPerPixel: 4 palette: (Graphics.MappedPalette withColors: ((Core.Array new: 15) at: 1 put: Graphics.ColorValue black; at: 2 put: (Graphics.ColorValue scaledRed: 6327 scaledGreen: 0 scaledBlue: 0); at: 3 put: (Graphics.ColorValue scaledRed: 6070 scaledGreen: 0 scaledBlue: 0); at: 4 put: (Graphics.ColorValue scaledRed: 5814 scaledGreen: 0 scaledBlue: 0); at: 5 put: (Graphics.ColorValue scaledRed: 2376 scaledGreen: 0 scaledBlue: 0); at: 6 put: (Graphics.ColorValue scaledRed: 2120 scaledGreen: 0 scaledBlue: 0); at: 7 put: (Graphics.ColorValue scaledRed: 1863 scaledGreen: 0 scaledBlue: 0); at: 8 put: Graphics.ColorValue red; at: 9 put: (Graphics.ColorValue scaledRed: 7934 scaledGreen: 0 scaledBlue: 0); at: 10 put: (Graphics.ColorValue scaledRed: 7677 scaledGreen: 0 scaledBlue: 0); at: 11 put: (Graphics.ColorValue scaledRed: 4497 scaledGreen: 0 scaledBlue: 0); at: 12 put: (Graphics.ColorValue scaledRed: 4240 scaledGreen: 0 scaledBlue: 0); at: 13 put: (Graphics.ColorValue scaledRed: 3950 scaledGreen: 0 scaledBlue: 0); at: 14 put: (Graphics.ColorValue scaledRed: 513 scaledGreen: 0 scaledBlue: 0); at: 15 put: (Graphics.ColorValue scaledRed: 256 scaledGreen: 0 scaledBlue: 0); yourself)) usingBits: (ByteArray fromPackedString: '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C.9K.;.;.;.<7.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;-2;JH!7]7]7]7]7"I/M8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N7K&H]7]7]7]7]7]7]7]7]8&48@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NR9!7]7]7]7]7]7]7]7]7]7]7]7&=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@69]7]7]7]7]7]7]7]7]7]7]7]7]7]9,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7B!7]7]7]7]7]7]7]7]7]7]7]7]7]7]7\%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AK%7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C\I7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7^0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D.W]7]7]7]7]7]8"H"H"H"G]7]7]7]7]7]7]7]7]38@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M0'']7]7]7]7^H&;-N;.;.;.;\.;&G]7]7]7]7]7]7]7,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@69]7]7]7]8 +3^8@@@@@@@@@@@@@;\JG]7]7]7]7]7]7!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C[%7]7]7^B/M8@@@@@@@@@@@@@@@@@@@C\I7]7]7]7]7]7^M@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.W]7]8&;S @@@@@@@@@@@@@@@@@@@@@@@@AI]7]7]7]7]7];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AB]7^I/M8@@@@@@@@@@@@@@@@@@@@@@@@@@@@MM7]7]7]7]7]94@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MI7 +3^@@@@@@@@;.R;0@@@@@@@@@@@@@@@@@@@AG]7]7]7]7]70@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A)F48@@@@@@N;$.;&H]7_P@@@@@@@@@@@@@@@@@@@EE7]7]7]7]7(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C]@@@@@@@@P("G]7]7]7_@@@@@@@@@@@@@@@@@@@@@ZG]7]7]7]7'' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Q7]7]7]7]7^ @@@@@@@@@@@@@@@@@@@@CG]7]7]7]7# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'']7]7]7]7^^@@@@@@@@@@@@@@@@@@@@CY]7]7]7]7# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AW]7]7]7]7^M@@@@@@@@@@@@@@@@@@@@@K]7]7]7]7# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B]7]7]7]7]<@@@@@@@@@@@@@@@@@@@@@L]7]7]7]7# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E]7]7]7]7]:@@@@@@@@@@@@@@@@@@@@@L]7]7]7]7'' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M7]7]7]7]98@@@@@@@@@@@@@@@@@@@@K]7]7]7]7(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:W]7]7]7]84@@@@@@@@@@@@@@@@@@@@I]7]7]7]70@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B7]7]7]7]70@@@@@@@@@@@@@@@@@@@AG]7]7]7]84@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CY]7]7]7]7K @@@@@@@@@@@@@@@@@@6G]7]7]7]4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@K]7]7]7]7# @@@@@@@@@@@@@@@@@@17]7]7]7\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M%7]7]7]7]@@@@@@@@@@@@@@@@@@F!7]7]7]7L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-7]7]7]7^0@@@@@@@@@@@@@@@@@A]7]7]7]3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@6W]7]7]7\.@@@@@@@@@@@@@@@@@7]7]7]7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B7]7]7]7^N@@@@@@@@@@@@@@@@Q7]7]7]7]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CX]7]7]7]4@@@@@@@@@@@@@@@D]7]7]7]2T@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D]7]7]7];@@@@@@@@@@@@@@AG]7]7]7\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@I7]7]7]28@@@@@@@@@@@@@Q7]7]7]9P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@U7]7]7]88@@@@@@@@@@@@D]7]7]7\=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'']7]7]7T@@@@@@@@@@@AG]7]7]9,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AW]7]7]7(@@@@@@@@@@@M7]7]7\=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B]7]7]7'' @@@@@@@@@C]7]7]2P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E]7]7]7#P@@@@@@@@@7]7]7I@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@I7]7]7_@@@@@@@@EI7]7\$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@U7]7]7^ @@@@@@AG]7^BP@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7]7]7^^@@@@@@Q7]9/P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C)]7]7^M@@@@@D]8KM@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@K]7]7]<@@@@8(KM@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M%7]7]:@@@@;M@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-7]7]9@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@6W]7]7P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B7]7]7,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CY]7]7K @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@K]7]7# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7P@@@M!7]7]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@9J%P@@@@Q7]7^0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AK%7P@@@@@@'']7\.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C\I7]4@@@@@@AW]7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M.W]7IP@@@@@@@B]7]5@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@R9]7]3@@@@@@@@@E]7]:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AB]7]7\0@@@@@@@@@@I7]98@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MM7]7]7L@@@@@@@@@@@U7]84@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@69]7]7]4@@@@@@@@@@@@@'']70@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D%7]7]7]@@@@@@@@@@@@@AW]7(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@47]7]7]7P@@@@@@@@@@@@@@C]7'' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D%7]7]7]4@@@@@@@@@@@@@@@N%7#P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@47]7]7]7]@@@@@@@@@@@@@@@@@-7_@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D%7]7]7]7P@@@@@@@@@@@@@@@@@6W^ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AG]7]7]7]4@@@@@@@@@@@@@@@@@@B7^P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Q7]7]7]7!@@@@@@@@@@@@@@@@@@@CY]4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D]7]7]7]7,@@@@@@@@@@@@@@@@@@@@K];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C(]7]7]7]18@@@@@@@@@@@@@@@@@@@@M%28@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@7]7]7]7^F@@@@@@@@@@@@@@@@@@@@@@-88@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M7]7]7]7_@@@@@@@@@@@@@@@@@@@@@@@6GT@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E]7]7]7]7''P@@@@@@@@@@@@@@@@@@@@@@AG,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A]7]7]7]7,@@@@@@@@@@@@@@@@@@@@@@@@AD@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CW]7]7]7]84@@@@@@@@@@@@@@@@@@@@@@@@E_ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CG]7]7]7]88@@@@@@@@@@@@@@@@@@@@@@@@@I@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B7]7]7]7]88@@@@@@@@@@@@@@@@@@@@@@@@@R0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B7]7]7]7]9@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B7]7]7]7]7T@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B7]7]7]7]7(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B7]7]7]7]7! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CG]7]7]7]7\]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@9J0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CW]7]7]7]7]9P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NR2!1P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B]7]7]7]7]7^0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;\,(]7%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L]7]7]7]7]7]2T@@@@@@@@@@@@@@@@@@@@@@@@@@N7K&G]7^[4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M!7]7]7]7]7]7^=@@@@@@@@@@@@@@@@@@@@@@;$.9!7]7]9/P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RG]7]7]7]7]7]8KM@@@@@@@@@@@@@@@@C.R;&G]7]7]7&=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B7]7]7]7]7]7]7]8J<7.8@@@@@@@C.7K.X]7]7]7]7^[4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C#]7]7]7]7]7]7]7]7"H +.;.;.;JH!7]7]7]7]7]23P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]9-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7KM@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D%7]7]7]7]7]7]7]7]7]7]7]7]7]7]7]7&4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@47]7]7]7]7]7]7]7]7]7]7]7]7]7]7 ,4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DI7]7]7]7]7]7]7]7]7]7]7]7]7 ,4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AK&G]7]7]7]7]7]7]7]7]7]8 ,4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;\JH]7]7]7]7]7]7]8"[/M8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C-22"H"H"H"HJ;-N; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;.;.;.;.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@5P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C.R2"N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@V;.;.;.;.;.;.;S @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@V;.;.;.;.;.;.;S @@@E*X]7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-7]7]7]7]7]7]7^[4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-7]7]7]7]7]7]7^[4@@K^G]7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;$,'']7^I.;.9]7]7%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;-0'']7^I.;.9!7]7%@@N;$E7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C(]7#^@@@NP'']7]6@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C)]7^.@@@N67]7]4@@@@17^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C(]7# @@@@@D]7]2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@K]7_@@@@@@D]7]84@@@-7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C(]7# @@@@@@M7]7P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L]7^0@@@@@@Q7]70@@@-7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C(]7# @@@@@@97]7(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@K]7^0@@@@@@BW]7(@@@-7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C(]7# @@@@@@@'']7,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@K]7^0@@@@@@B7]7'' @@-7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C(]7# @@@@@@CG]7,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@K]7^0@@@@@@CG]7'' @@-7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C(]7# @@@@@@CG]7(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@K]7^0@@@@@@B7]7,@@@-7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C(]7# @@@@@@B7]7P@@@@@@N;.@@@@@@@@@@@@C @@C.@@@@@@@@@@;.@@@@@@@K]7^0@@@@@@CG]7,@@@-7^N@@@@@@@@@N; @@@@@@@@@@@@@@C.; @@@@@@@@@@;.@@@@@@@@@@@@@@@@C(]7# @@@@@@BW]9@@@@@NR9"HJ4@@@@@@@@C$J0@E.XIP@@@@@@R2"HJ4@@@@@K]7^0@@@@@@B7]7P@@@-7^N@@@@@@@D,("B-@@@@@@@@@@@C\.X"[S @@@@@@7B"HJ4@@@@@@@@@@@@@@C(]7# @@@@@@U7];@@@@B9]7]7]7O @@@N9KJG^0AG]7^ @@@@AB]7]7]7I@@@@K]7^0@@@@@@:W]2@@@@-7^N@@@@@@P'']7]7]3@@@@@@@@@DJG]7]7^U@@@@CS!7"G]7OP@@@@@@@@@@@@C(]7# @@@@@@E7\^@@@EI7"H!7]7^0@@@L!7]7^0Q7]7^0@@@EI7^H!7]7]@@@@K]7^0@@@@@@M7]6@@@@-7^N@@@@AR]8"H]7]7L@@@@@@@47]8"G]7]:@@@@.W\$;$I7^T@@@@@@@@@@@@C(]7# @@@@@C]7] @@C(^D;.7B]7^]@@@L"H]7_F]7]7^0@@B7]2S.9K%7$@@@@K]7^0@@@@@D]7]@@@@@-7^N@@@@:G^=;-0'']7]P@@@@@D%7KM;$.W]<@@@C]7P@@@@W]88@@@@@@@@@@@C(]7# ; @NP'']2T@@@C(_@@@@@M7]<@@@N;-]7\X^[M7^0@@M7!@@@@@4''# @@@K]7^0;P@@47]7P@@@@@-7^N@@@@:GH@@@@C]7^ @@@@AG]3@@@@CS^M@@87]4@@@@AW]7L@@@@@@@@@@@C(]7# 2J.9]7 0@@@@C''#P@@@@:W]28@@@@@I7]7OPAG_@@D]7,@@@@@CG'' @@@K]7^02J.2!7\%@@@@@@-7^N@@@@:GT@@@@@I7^^@@@@Y7\0@@@@@N"N@@-7\ @@@@@B]7_P@@@@@@@@@@C(]7# 2G]7"[4@@@@@C),@@@@@B'']74@@@@@17]1@@@E/ CX]28@@@@@CW(@@@@K]7^06W]7"[P@@@@@@@-7^N@@@@:S@@@@@@17^N@@@@I7_ @@@@@N]>@@%7_@@@@@@L]7_@@@@@@@@@@@C(]7# ;$.4; @@@@@@@M@@@@@@A(]88@@@@@-7]5@@@@@@B7];@@@@@@C(0@@@@K]7^0C-24; @@@@@@@@-7^N@@@@CP@@@@@@:G^N@@@E]7H@@@@@@N&^@D]7#P@@@@@M!7^0@@@@@@@@@@C(]7# @@@@@@@@@@@@@@@@@@@N9X]88@@@@@-7^P@@@@@@BW]4@@@@@@@N8@@@@K]7^0@@@@@@@@@@@@@@-7^N@@@@@@@@@@C.RG^N@@@J]70@@@@@@@; @K]7$@@@@@@@%7^0@@@@@@@@@@C(]7# @@@@@@@@@@@@@@@@;$.)!7]88@@@@@-7^0@@@@@@Q7^P@@@@@@@@@@@@@K]7^0@@@@@@@@@@@@@@-7^N@@@@@@@@9K.X]7^N@@C)]7,@@@@@@@@@C"]7^;S.;.;[]7^0@@@@@@@@@@C(]7# @@@@@@@@@@@@@@AK&G]8 X]88@@@@@-7_@@@@@@@)7^N@@@@@@@@@@@@@K]7^0@@@@@@@@@@@@@@-7^N@@@@@@7B!7^HFG^N@@@H]7,@@@@@@@@@CW]7]7^H"H]7]7_@@@@@@@@@@@C(]7# @@@@@@@@@@@@@EI7]9-N;)]88@@@@@-7^0@@@@@@-7^N@@@@@@@@@@@@@K]7^0@@@@@@@@@@@@@@-7^N@@@@CS!7^[3^:W^N@@AG]7,@@@@@@@@@C(]7^H"H"HJ;.;3 @@@@@@@@@@C(]7# @@@@@@@@@@@@AG]7IN@@C(]88@@@@@-7^0@@@@@@-7^M@@@@@@@@@@@@@K]7^0@@@@@@@@@@@@@@-7^N@@@@RW]2S @@:G^N@@B'']70@@@@@@@@@C(]7#^;.;.@@@@@@@@@@@@@@@@C(]7# @@@@@@@@@@@@U7]3@@@@C(]88@@@@@-7^0@@@@@@-7]<@@@@@@@@@@@@@K]7^0@@@@@@@@@@@@@@-7^N@@@M!7\0@@@@:G^N@@CG]7,@@@@@@@@@C(]7'' @@@@@@@@@@@@@@@@@@@@C(]7# @@@@@@@@@@@@)7^^@@@@C(]88@@@@@-7^0@@@@@@)7]:@@@@@@@@@@@@@K]7^0@@@@@@@@@@@@@@-7^N@@@K]7_ @@@@:G^N@@CX]7$@@@@@@@@@C)]7#P@@@@@@@@@@@@@@@@@@@@C(]7# @@@@@@@@@@@N%7^0@@@@@I]88@@@@@-7^0@@@@@@Q7]9@@@@@@@@@@@@@K]7^0@@@@@@@@@@@@@@-7^N@@C)]7H@@@@@:G^N@@C'']7]P@@@@@@@@@J]7^0@@@@@@@@@@@@@@@@@@@@C(]7# @@@@@@@@@@@N!7_@@@@@A'']88@@@@@-7^0@@@@@@BW]7P@@@@@@@@@@@@K]7^0@@@@@@@@@@@@@@-7^N@@C(]70@@@@@:G^N@@C"]7\ @@@@@@@@@L]7^]@@@@@@@@@@@@@@@@@@@@C(]7# @@@@@@@@@@@N!7_@@@@@@W]88@@@@@-7^0@@@@@@B7]7# @@@@@@@@@@@K]7^0@@@@@@@@@@@@@@-7^N@@C(]7,@@@@@M7^N@@@L]7]4@@@@@@@@@M%7]<@@@@@@@@@@@@@@@@@@@@C(]7$@@@@@@@@@@@@N!7\ @@@EI7]88@@@@@17_@@@@@@@CY]7\0@@@@@@@@@@@L]7^0@@@@@@@@@@@@@@-7^N@@CW]7'' @@AR]7^N@@@NE7]7P@@@@@@@@@-7]8P@@@@@@MT@@@@@@@@@@@@I]7] @@@@@@@@@@@N%7]34@67^(]9@@@@@@I7\ @@@@@@@K]7]2P@@@@M3P@@@C]7_@@@@@@@@@@@@@@@17^P@@C"]7\=@M-7*G^M@@@@Y7]7]@@@@@A]@@6G]7^0@@@@B9'' @@@@@@@@;.9G]7\]; @@@@@@@@@@-7]7&;%2YG]7S.8N;-]7]=;.@@@@@NM7]7\,7.R9_@C.9G]7\-;.@@@@@@@@@@;-I7]4; @L]7]9.9^TBW];;.@@AG]7]2-N9KI<@@AG]7]2-N;\I7,@@@@@@@@@2H!7]7]8"C8@@@@@@@@@6G]7]7\0B7]7^H0L"H]7]8"IP@@@@@B7]7]7"H]7GPRX!7]7]8"I8@@@@@@@@D&H]7]7"C8NM7]7]7OP6G]7"L@@@D%7]7]8!7^M@@@D%7]7]8"G]38@@@@@@@@@2H"H"H"H"I8@@@@@@@@@AR]7]9P@CH"H"H0L"H"H"H"H,@@@@@@EJG]7]7^BX@.H"H"H"H"I8@@@@@@@@K"H"H"H"I8@@7]7^T@@2X"H"L@@@@69]7]7]8IP@@@@69]7]7]8I@@@@@@@@@@@;.;.;.;.;.@@@@@@@@@@@@R;/M@@C.;.;.8N;.;.;.;.8@@@@@@@C\,(J;3P@@;.;.;.;.;.@@@@@@@@@N;.;.;.;.@@@D.;3P@@;^;.;.@@@@@M2; +/M@@@@@@@M2;&B/M@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8@@@@@@@@@@@@@; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@9KT@@@@@@NR5@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C.;.;.;.;.;.;.;.@@@@@@@@@@@@@N@@@@@@@@@@@@@@@@@@@@@@@@@@C @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C-22!7(@@@;\,(]:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B8"H"H"H"H"H"H"I.48@@@@@@@@@B9)P@@@@@@@@@@@@@@@@@@@@@@@EJK@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:X]7]7,@@N&G]7];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AI"G]7]7]8"H]7]7]7&=@@@@@@@NM7^M@@@@@@@@@@@@@@@@@@@@@@CX]7O @@@@@@@@@@@@@@@@@@@@@@@@@@@@:X!7]7,@@N&H]7];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N;+]7];-N;-2;.X]7]9,@@@@@@M]7]<@@@@@@@@@@@@@@@@@@@@@@CG]7_P@@@@@@@@@@@@@@@@@@@@@@@@@@@@C.9G]7,@@@;.Q7];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M!7^P@@@@@@C-.W]7\0@@@@@M]7]:@@@@@@@@@@@@@@@@@@@@@@B'']7_P@@@@@@AD@@@@@@@@@@@@@@@@@@@@@@@I]7,@@@@@BW];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@C[]7]3@@@@@NM7]5@@@@@@@@@@@@@@@@@@@@@@AW]7O @@@@C$I88@@@@@@@@@@@@@@@@@@@@@C(]7,@@@@@:G];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@Q7]7L@@@@@@8IP@@@@@@@@@@@@@@@@@@@@@@@D&C@@@@@@:W]74@@@@@@@@@@@@@@@@@@@@@C(]7,@@@@@:G];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@AH]7\0@@@@@N@@@@@@@@@@@@@@@@@@@@@@@@@@; @@@@@@:G]28@@@@@@@@@@@@@@@@@@@@@C(]7,@@@@@:G];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@L]7]5@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:G]<@@@@@@@@@@@@@@@@@@@@@@C(]7,@@@@@:G];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@M%7]1@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:G];@@@@@@@@@@@@@@@@@@@@@@C(]7,@@@@@:G];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@)7]74@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:G];@@@@@@@@@@@@@@@@@@@@@@C(]7,@@@@@:G];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@U7]70@@@@@; @@@@@@@@@N7L7 @@@@@@@@@@@N8@@@@@:G];@@@@@@@@@@9K3^@@@@@@@@C(]7,@@@@@:G];@@@@@@C.;.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@BG]7(@@@9K&^@@@@@@@M0(]7"B0@@@@@@@C-0(0@@@@@BW]<@@@@@@@@7B!7^HI@@@@@@@C(]7,@@@@@:G];@@@@@@NH"I8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@:W]7'' 22!7^N@@@@@@B9]9*W]7\+.;.<A+.X]7,@@@@NQ7]1.;.<8@@K%7]7]7]3@@@@@@C(]7,@@@@@:G];@@@@@C]7^I8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@B7]7#.]7]7^N@@@@@EI7O^C$I7]7]7]7B'']7]7,@@@:9]7]7]7]78@T''\+.9]7]7P@@@@@C(]7,@@@@@:G];@@@@@7]9/^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@CG]7# 2;!7^N@@@@C(]1@@@@@W]7]7];A[.7]7,@@@-7]7]7]7]:@@)7L@@NP'']7 @@@@@C(]7,@@@@@:G];@@@@M7\=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@B7]7# @@-7^N@@@@@7]5@@@@AW]7F;/N@@@I]7,@@@V;RW]1.;.6@@-98@@@@A]7]@@@@@C(]7,@@@@@:G];@@@C]7P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@B7]7_P@@17^N@@@@Q7^P@@@@@C]7$@@@@@@K]7,@@@@@BG]<@@@@@@);@@@@@E]7^ @@@@C(]7,@@@@@:G];@@T''^T@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@CG]7K @@-7^N@@@@)7^0@@@@@L]7# @@@@@L]7,@@@@@:G];@@@@@@V>@@@@@@M7^0@@@@C(]7,@@@@@:G];@D]7OP@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@B7]70@@@-7^N@@@@-7^0@@@@@K]7# @@@@@K]7,@@@@@:G];@@@@@@@@@@@@@@17^0@@@@C(]7,@@@@@:G]<AG];@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@:W]70@@@-7^N@@@@-7^^@@@@@K]7'' @@@@@K]7,@@@@@:G];@@@@@@@@@@@N7KE7^0@@@@C(]7,@@@@@:G]:17!P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@BG]74@@@-7^N@@@@-7^M@@@@@L]7(@@@@@@K]7,@@@@@:G];@@@@@@@@C$,(!7]7^0@@@@C(]7,@@@@@:G]7]7!P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@U7]2@@@@-7^N@@@@17]<@@@@@C]8T@@@@@@K]7,@@@@@:G];@@@@@@@DJG]8&;E7^0@@@@C(]7,@@@@@:G]7]7]4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@@)7]<@@@@-7^N@@@@6W]8P@@@AG];@@@@@@@K]7,@@@@@:G];@@@@@@47]7KM8@17^0@@@@C(]7,@@@@@:G]7]7]88@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@M%7^]@@@@-7^N@@@@B7]7]N@M-7^>@@@@@@@K]7,@@@@@:G];@@@@@N%7\$@@@@-7^0@@@@C(]7,@@@@@:G];M7]7L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@L]7^0@@@@-7^N@@@@C#]7]8L8]2T@@@@@@@@K]7,@@@@@:G];@@@@@C]7'' @@@@-7^0@@@@C(]7,@@@@@:G]<@7]7\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@A(]7#P@@@@-7^N@@@@@@T9]7]8I@@@@@@@@@@K]7,@@@@@:G];@@@@CW]7,@@@@@-7^0@@@@C(]7,@@@@@:G];@D]7]3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@@W]8P@@@@@-7^N@@@@@@AQ\+3^@@@@@@@@@@@K]7,@@@@@:G];@@@@CG]84@@@@@17^0@@@@C(]7,@@@@@:G];@@Q7]7IP@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@@@M7];@@@@@@-7^N@@@@@@RGL@@@@@@@@@@@@@@K]7,@@@@@:G];@@@@B7]98@@@@@I7^0@@@@C(]7,@@@@@:G];@@AG]7]4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N!7^N@@@@@@@@AR]7\>@@@@@@-7^N@@@@@C]8@@@@@@@@@@@@@@@L]70@@@@@:G]<@@@@B7]88@@@@C]7^0@@@@C(]7,@@@@@:G];@@@D]7]7P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%7^N@@@@@@@M-7]7L@@@@@@@-7^N@@@@AG]8P@@@@@@@@@@@@@@K]7,@@@@@:G]3@@C B'']7L@@@T'']7_@@@@@C(]7,@@@@@:G];@@@@Q7]7]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D]7^M;.;.;-0(]7^T@@@@@@@@17^N@@@@B'']7\+.;.;.;3P@@@@@I]7$@@@@@:W]7)U*TAG]7\=;[]<)7\0@@@@C(]70@@@@@:G]<@@@@AG]7];4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@9G]7]8"H"H"H]7]9/P@@@@@N;\E7]23^@@CG]7]7]7]7]7^C@@C.R7]7^4; @@B7]7]7]4@B]7]8"G%@17];7 C-0'']7GM8@;\I7]13^@@@D]7]7%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-7]7]7]7]7]7]8KM@@@@@@@K]7]7]7]88@C#]7]7]7]7]7]7L@B7]7]7]7^0@@CX]7]7]@@F%7]7]34NE7]7^N:G]7]7]7_@!7]7]7]88@@@Q7]7"0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@V;.;.;.;.;.;-N@@@@@@@@@E.;.;.;.<8@@@)7]7^H"G]7]7]PA[.;.;.;-P@@@EJH"IP@@@69"H%@@N.;.;/@CK.;.;.;-P2;.;.;.<8@@@AI ,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D%7J;S.;\,'']7^ @@@@@@@@@@@@@@C.;.@@@@@N;.8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@T'']4@@@@@@@D!7^^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M!7!@@@@@@@@@)7^N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L]7(@@@@@@@@@VG]=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C"]70@@@@@@@@@:G\.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CW]84@@@@@@@@@17_@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C"]70@@@@@@@@@I7''P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@K]7(@@@@@@@@E]7,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E!7! @@@@@@@A]38@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-7\]@@@@@@P''\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@87]7)-@@5A]7L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D.;+F@@2:.4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'))
logoMap "UIHotRegionEditor new openOnClass: self andSelector: #logoMap" <resource: #hotRegions> ^HotRegions selectorArray: #(#anA #aP #theLogo #anR #aC #anL #anE #aD #anI #aG #aT #aK #tbd #ouch nil) copy mapImage: (Image extent: 216@216 depth: 3 bitsPerPixel: 4 palette: (Graphics.CoveragePalette maxPixelValue: 3) usingBits: (ByteArray fromPackedString: '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3;.83L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L>;.;#L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3O.;.;.L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3O.;.;.L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3O.;.;.L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3O.;.;.L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L>;.;#L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3;.83L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L3L3L3L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L3L3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@3L3L3L3L3L3L3L3L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL3L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@QDQDQDQDQDQDQDQDP@@@@@@@@@@@@"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@QDQDQDQDQDQDQDQDP@@@@@@@@@@@@"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@QDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@EUUUUUUUUUUUUUU@@@@@@@@@@@@@@@@@@@@@@H"H"H"H"H"H"H"H"H"H"H"@@@@@@@@@@@@QDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@EUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQQDQDQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"JH"H"H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&DQDQDQDQDQDQDQDEUUUUUUUUUUUUUU@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"JH"H"H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G]7]7]7]7]7]7]7]7@@@@H"H"H"H"H"JH"H"H"H"H"H"H"H"H"H"H"H"H"DQDQDQDQDQDQUUUUUUUUUUUUUUUURH"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@Y&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@H"H"H"H"H"JH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&Y$@@@@@@@@@@@@@@@@"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&@@@@@@Y&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&Y$@@@@@@@@@@@@@@@@)&Y&Y&Y&Y&YH"H"H"H"I&Y&Y&Y&Y&@@@@@@Y&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&Y$@@@@@@@@@@@@@@@@I&Y&Y&Y&Y.;.;.;.;.;.;.0@@@@@@@@@@@@Y&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&Y$@@@@@@@@@@@@@@@@I&Y&Y&Y&Y.;.;.;.;.;.;.0@@@@@@@@@@@@Y&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&Y$@@@@@@@@@@@@@@@@I&Y&Y&Y&Y.;.;.;.;.;.;.0@@@@@@@@@@@@Y&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&Y$@@@@@@@@@@@@@@@@I&Y&Y&Y&Y.;.;.;.;.;.;.0@@@@@@@@@@@@Y&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&Y$@@@@@@@@@@@@@@@@I&Y&Y&Y&Y.;.;.;.;.;.;.0@@@@@@@@@@@@Y&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&Y$@@@@@@@@@@@@@@@@I&Y&Y&Y&Y.;.;.;.;.;.;.0@@@@@@@@@@@@Y&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&Y$@@@@@@@@@@@@@@@@I&Y&Y&Y&Y.;.;.;.;.;.;.0@@@@@@@@@@@@Y&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQY&Y&Y&Y&Y&XL3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQDQD@@@@@@@@L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"I&Y&Y&Y&Y&********************Y&Y&Y&Y.;.;.;.;.;.;.1DQDQDQDQDQDQDQD@@@@@@@@L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"H"@@@@@@@B*******************(@@@@@@@.;.;.;.;.;.;.1DQDQDQDQDQDQDQD@@@@@@@@L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"H"@@@@@@@B*******************(@@@@@@@.;.;.;.;.;.;.0@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"H"@@@@@@@B*******************(@@@@@@@.;.;.;.;.;.;.0@@@@@@@@@@@@@@@@@@@@@@@L3L3L3L3L3L3L3L3L3L@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"H"@@@@@@@B*******************(@@@@@@@.;.;.;.;.;.;.0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H"H"H"H"H"H"H"H"H"@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B*******************(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'))
</methods> <methods> Examples.ClickWidgetEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Click Widget Event Tester' #min: #(#{Core.Point} 586 391 ) #max: #(#{Core.Point} 586 391 ) #bounds: #(#{Graphics.Rectangle} 800 600 1386 991 ) #isEventDriven: true ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.MappedClickWidgetSpec} #layout: #(#{Graphics.Rectangle} 24 10 242 228 ) #name: #logoImage #flags: 0 #visualSelector: #logo #mappingsSelector: #logoMap ) #(#{UI.TextEditorSpec} #layout: #(#{Graphics.Rectangle} 22 237 242 375 ) #name: #TextEditor1 #flags: 4 #model: #helpText #isReadOnly: true ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 356 63 582 90 ) #name: #InputField1 #model: #clicked #type: #text ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 288 108 ) #name: #Label1 #label: 'Hits:' ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 272 151 ) #name: #Label2 #label: 'Misses:' ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 356 106 456 131 ) #name: #InputField2 #model: #hits #type: #number #formatString: '0' ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 356 149 456 174 ) #name: #InputField3 #model: #misses #type: #number #formatString: '0' ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 257 65 ) #name: #Label3 #label: 'Selection:' ) ) ) )
</methods> <methods> Examples.TreeViewEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Tree View Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1069 1026 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.TreeViewSpec} #properties: #(#{UI.PropertyListDictionary} #openedEmphasis #openedEmphasis #leafEmphasis #leafEmphasis: #closedEmphasis #closedEmphasis ) #layout: #(#{Graphics.LayoutFrame} 20 0 40 0 -20 1 187 0 ) #name: #singleSelect #model: #singleSelect #callbacksSpec: #(#{UI.UIEventCallbackSubSpec} #valueChangeSelector: #notification #requestValueChangeSelector: #validate ) #multipleSelections: false #useModifierKeys: true #selectionType: #highlight #displayStringSelector: #name #useIcons: #none #rootExpander: true ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 20 13 ) #name: #Label1 #label: 'Single Select' ) #(#{UI.TreeViewSpec} #layout: #(#{Graphics.LayoutFrame} 20 0 215 0 -20 1 388 0 ) #name: #multiSelect #flags: 15 #model: #multiSelect #callbacksSpec: #(#{UI.UIEventCallbackSubSpec} #valueChangeSelector: #notification #requestValueChangeSelector: #validate ) #multipleSelections: true #useModifierKeys: true #selectionType: #highlight #displayStringSelector: #name #useIcons: #folder #inPlaceEditedSelector: #editMe: #useChildImages: false #useLines: false ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 20 190 ) #name: #Label2 #label: 'Multi Select (Editable)' ) #(#{UI.RegionSpec} #layout: #(#{Graphics.Rectangle} 32 397 82 420 ) #name: #validate #lineWidth: 1 ) #(#{UI.RegionSpec} #layout: #(#{Graphics.Rectangle} 93 397 143 420 ) #name: #notification #lineWidth: 1 ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 40 395 ) #name: #Label3 #label: 'V' ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 99 395 ) #name: #Label4 #label: 'N' ) ) ) )
</methods> <methods> Examples.LabelEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Label Event Test' #bounds: #(#{Graphics.Rectangle} 800 600 1000 800 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.LabelSpec} #layout: #(#{Core.Point} 43 62 ) #name: #Label1d #label: 'Label' ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 25 121 164 147 ) #name: #ActionButton1 #model: #changeText #label: 'Change Label Text' #defaultable: true ) ) ) )
</methods> <methods> Examples.ToolBarEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Tool Bar Event Tester' #bounds: #(#{Graphics.Rectangle} 799 612 1100 698 ) #toolBar: #toolbarMenu ) #component: #(#{UI.SpecCollection} #collection: #() ) )
</methods> <methods> Examples.ToolBarEventTester class <category>resources</category>
toolbarMenu "MenuEditor new openOnClass: self andSelector: #toolbarMenu" <resource: #menu> ^#(#{UI.Menu} #( #(#{UI.MenuItem} #rawLabel: 'First Button' #nameKey: #firstButton #value: #firstButton #labelImage: #(#{UI.ResourceRetriever} #{Tools.ToolbarIconLibrary} #browseAClass ) #helpText: 'First Button' ) #(#{UI.MenuItem} #rawLabel: 'Second Button' #nameKey: #secondButton #value: #secondButton #labelImage: #(#{UI.ResourceRetriever} #{Tools.ToolbarIconLibrary} #cardfile ) #helpText: 'Second Button' ) #(#{UI.MenuItem} #rawLabel: 'Third Button' #nameKey: #thirdButton #value: #thirdButton #labelImage: #(#{UI.ResourceRetriever} #{Tools.ToolbarIconLibrary} #help ) #helpText: 'Third Button' ) ) #(3 ) nil ) decodeAsLiteralArray
</methods> <methods> Examples.DialogEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Dialog Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1180 806 ) #flags: 3 ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 12 16 93 39 ) #name: #ActionButton1 #model: #close #label: 'Close Me' #defaultable: true ) #(#{UI.RegionSpec} #layout: #(#{Graphics.Rectangle} 101 6 594 447 ) #name: #Region1 #colors: #(#{UI.LookPreferences} #setForegroundColor: #(#{Graphics.ColorValue} 8191 0 4096 ) #setBackgroundColor: #(#{Graphics.ColorValue} #cyan ) ) #lineWidth: 4 ) ) ) )
</methods> <methods> Examples.MenuEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Menu Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1143 872 ) #flags: 4 #menu: #mainMenu ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.TextEditorSpec} #layout: #(#{Graphics.Rectangle} 1 29 340 83 ) #name: #popupEditTest #menu: #mainMenu #tabRequiresControl: true ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 3 94 109 117 ) #name: #popupInputTest #menu: #mainMenu ) #(#{UI.SequenceViewSpec} #layout: #(#{Graphics.Rectangle} 231 94 337 145 ) #name: #popupListTest #menu: #mainMenu #useModifierKeys: true #selectionType: #highlight ) #(#{UI.ComboBoxSpec} #layout: #(#{Graphics.Rectangle} 3 125 109 150 ) #name: #popupComboTest #menu: #mainMenu ) #(#{UI.HierarchicalViewSpec} #layout: #(#{Graphics.Rectangle} 112 94 225 136 ) #name: #popupHierarchicalListTest #menu: #mainMenu #useModifierKeys: true #selectionType: #highlight ) #(#{UI.TreeViewSpec} #layout: #(#{Graphics.Rectangle} 3 158 109 241 ) #name: #popupTreeViewTest #menu: #mainMenu #useModifierKeys: true #selectionType: #highlight ) #(#{UI.TableViewSpec} #layout: #(#{Graphics.Rectangle} 108 177 226 239 ) #name: #popupTableTest #menu: #mainMenu ) #(#{UI.DataSetSpec} #layout: #(#{Graphics.Rectangle} 231 158 337 241 ) #name: #popupDatasetTest #menu: #mainMenu ) #(#{UI.SpinButtonSpec} #layout: #(#{Graphics.Rectangle} 113 148 226 171 ) #name: #popupSpinTest #menu: #mainMenu ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 8 1 ) #name: #Label1 #label: 'Right Click Below To Test Widget Popup Menu Events' ) ) ) )
</methods> <methods> Examples.MenuEventTester class <category>resources</category>
mainMenu "MenuEditor new openOnClass: self andSelector: #mainMenu" <resource: #menu> ^#(#{UI.Menu} #( #(#{UI.MenuItem} #rawLabel: '&File' #nameKey: #file #value: #file #submenu: #(#{UI.Menu} #( #(#{UI.MenuItem} #rawLabel: '&Open' #nameKey: #fileOpen #value: #fileOpen ) #(#{UI.MenuItem} #rawLabel: '&Close' #nameKey: #fileClose #value: #fileClose ) #(#{UI.MenuItem} #rawLabel: '&New' #nameKey: #newFile #value: #newFile ) ) #(3 ) nil ) ) #(#{UI.MenuItem} #rawLabel: '&Edit' #nameKey: #edit #value: #edit #submenu: #(#{UI.Menu} #( #(#{UI.MenuItem} #rawLabel: '&Copy' #nameKey: #editCopy #value: #editCopy #shortcutKeyCharacter: $C #shortcutModifiers: 2 ) #(#{UI.MenuItem} #rawLabel: 'C&ut' #nameKey: #editCut #value: #editCut #shortcutKeyCharacter: $X #shortcutModifiers: 2 ) #(#{UI.MenuItem} #rawLabel: '&Special' #nameKey: #editSpecial #value: #editSpecial #submenu: #(#{UI.Menu} #( #(#{UI.MenuItem} #rawLabel: '&Punt' #nameKey: #editSpecialPunt #value: #editSpecialPunt #shortcutKeyCharacter: $J #shortcutModifiers: 10 ) #(#{UI.MenuItem} #rawLabel: 'P&ass' #nameKey: #editSpecialPass #value: #editSpecialPass #shortcutKeyCharacter: $K #shortcutModifiers: 10 ) #(#{UI.MenuItem} #rawLabel: '&Kick' #nameKey: #editSpecialKick #value: #editSpecialKick #shortcutKeyCharacter: $L #shortcutModifiers: 10 #submenu: #(#{UI.Menu} #( #(#{UI.MenuItem} #rawLabel: '&Touchdown' #nameKey: #editSpecialKickTouchdown #value: #editSpecialKickTouchdown ) #(#{UI.MenuItem} #rawLabel: 'Point A&fter' #nameKey: #editSpecialKickPointAfter #value: #editSpecialKickPointAfter ) ) #(2 ) nil ) ) ) #(3 ) nil ) ) ) #(3 ) nil ) ) ) #(2 ) nil ) decodeAsLiteralArray
</methods> <methods> Examples.RegionEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Region Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1169 824 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.RegionSpec} #layout: #(#{Graphics.Rectangle} 106 13 251 100 ) #name: #region #colors: #(#{UI.LookPreferences} #setForegroundColor: #(#{Graphics.ColorValue} #blue ) #setBackgroundColor: #(#{Graphics.ColorValue} 8191 8191 1024 ) ) #lineWidth: 4 ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 7 130 163 153 ) #name: #ActionButton1 #model: #changeBorderColor #label: 'Change Border Color' #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 7 172 163 195 ) #name: #ActionButton2 #model: #changeInsideColor #label: 'Change Inside Color' #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 185 130 341 153 ) #name: #ActionButton3 #model: #changeBorderSize #label: 'Change Border Size' #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 185 172 341 195 ) #name: #ActionButton4 #model: #changeSize #label: 'Change Size' #defaultable: true ) ) ) )
</methods> <methods> Examples.MenuButtonEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'MenuButton Event Test' #bounds: #(#{Graphics.Rectangle} 800 600 1106 794 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.MenuButtonSpec} #layout: #(#{Graphics.LayoutFrame} 3 0 24 0 -3 1 52 0 ) #name: #popDownMenu #menu: #anotherMenu #isPopUp: false ) #(#{UI.ActionButtonSpec} #layout: #(#{UI.AlignmentOrigin} 0 0.5 74 0 0.5 0 ) #name: #ActionButton1 #model: #changeBottomMenu #label: 'Change Bottom Menu' #defaultable: true ) #(#{UI.MenuButtonSpec} #layout: #(#{Graphics.LayoutFrame} 3 0 127 0 -3 1 155 0 ) #name: #popUpMenu #menu: #menuModel #isPopUp: true ) ) ) )
</methods> <methods> Examples.WindowEventTester class <category>resources</category>
menuBar "Tools.MenuEditor new openOnClass: self andSelector: #menuBar" <resource: #menu> ^#(#{UI.Menu} #( #(#{UI.MenuItem} #rawLabel: 'File' #submenu: #(#{UI.Menu} #( #(#{UI.MenuItem} #rawLabel: 'Ring bell' #value: #talk ) #(#{UI.MenuItem} #rawLabel: 'Quit' #value: #closeRequest ) ) #(2 ) nil ) ) ) #(1 ) nil ) decodeAsLiteralArray
</methods> <methods> Examples.WindowEventTester class <category>interface specs</category>
windowSpec "Tools.UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Window Event Tester' #bounds: #(#{Graphics.Rectangle} 640 512 916 732 ) #flags: 15 #menu: #menuBar ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.RegionSpec} #layout: #(#{Graphics.Rectangle} 105 8 451 399 ) #name: #Region1 #colors: #(#{UI.LookPreferences} #setForegroundColor: #(#{Graphics.ColorValue} #red ) #setBackgroundColor: #(#{Graphics.ColorValue} 8191 8191 6143 ) ) #lineWidth: 4 #regionType: #ellipse ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 5 4 86 27 ) #name: #ActionButton1 #model: #closeRequest #label: 'Close Me' #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 6 34 87 57 ) #name: #ActionButton2 #model: #moveMe #label: 'Move Me' #defaultable: true ) ) ) )
</methods> <methods> Examples.ListBoxEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'List Box Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1102 1078 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.SequenceViewSpec} #layout: #(#{Graphics.LayoutFrame} 7 0 30 0 -7 1 186 0 ) #name: #singleSelectList #model: #singleSelectList #useModifierKeys: true #selectionType: #highlight ) #(#{UI.ActionButtonSpec} #layout: #(#{UI.AlignmentOrigin} 0 0.5 196 0 0.5 0 ) #name: #addItemToTopList #model: #addItemToTopList #label: 'Add Item To Top List' #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{UI.AlignmentOrigin} 0 0.5 237 0 0.5 0 ) #name: #addItemToBottomList #model: #addItemToBottomList #label: 'Add Item To Bottom List' #defaultable: true ) #(#{UI.SequenceViewSpec} #layout: #(#{Graphics.LayoutFrame} 7 0 265 0 -7 1 -30 1 ) #name: #multiSelectList #flags: 15 #model: #multiSelectList #multipleSelections: true #useModifierKeys: true #selectionType: #highlight ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 7 4 ) #name: #Label1 #label: 'Single Select' ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 13 453 ) #name: #Label2 #label: 'Multi Select' ) ) ) )
</methods> <methods> Examples.PercentSliderEventTester class <category>interface specs</category>
windowSpec "Tools.UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Percent and Slider Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1127 800 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.SliderSpec} #layout: #(#{Graphics.LayoutFrame} 7 0 30 0 -6 1 54 0 ) #name: #slider #model: #sliderValue #orientation: #horizontal #start: 0 #stop: 100 #step: 5 ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.LayoutFrame} 7 0 60 0 -7 1 83 0 ) #name: #ActionButton1 #model: #setSliderTo0 #label: 'Set Slider To ''0''' #defaultable: true ) #(#{UI.ProgressWidgetSpec} #layout: #(#{Graphics.LayoutFrame} 7 0 97 0 -7 1 149 0 ) #name: #percentDone #isOpaque: true #model: #percentDoneValue #direction: #horizontal #position: #topLeft #area: false #reverse: false ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.LayoutFrame} 7 0 166 0 -7 1 189 0 ) #name: #ActionButton2 #model: #setProgressTo100 #label: 'Set Progress To 100%' #defaultable: true ) #(#{UI.LabelSpec} #layout: #(#{Graphics.LayoutFrame} -20 0.5 1 0 20 0.5 27 0 ) #name: #sliderValue ) ) ) )
</methods> <methods> Examples.SubCanvasEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'SubCanvas Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1088 831 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.SubCanvasSpec} #layout: #(#{Graphics.Rectangle} 69 22 201 165 ) #name: #sub #flags: 11 #majorKey: #{ButtonsEventTester} #minorKey: #windowSpec #clientKey: #client ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 14 191 165 217 ) #name: #ActionButton1 #model: #changeSubcanvas #label: 'Change Subcanvas' #defaultable: true ) ) ) )
</methods> <methods> Examples.ComboBoxEventTester class <category>interface specs</category>
windowSpec "Tools.UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Combo Box Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1193 800 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.ComboBoxSpec} #layout: #(#{Graphics.LayoutFrame} 13 0 19 0 -13 1 45 0 ) #name: #topBox #model: #topValue #comboList: #topChoices ) #(#{UI.ActionButtonSpec} #layout: #(#{UI.AlignmentOrigin} 0 0.5 63 0 0.5 0 ) #name: #ActionButton1 #model: #buttonAction #label: 'Press me' ) #(#{UI.ComboBoxSpec} #layout: #(#{Graphics.LayoutFrame} 13 0 105 0 -13 1 131 0 ) #name: #bottomBox #model: #bottomValue #comboList: #bottomChoices ) #(#{UI.ComboBoxSpec} #layout: #(#{Graphics.LayoutFrame} 13 0 156 0 -13 1 182 0 ) #name: #editableBox #model: #editableValue #isReadOnly: false #comboList: #editableChoices ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 13 135 ) #name: #Label1 #label: 'Editable' ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 13 -4 ) #name: #Label2 #label: 'Read Only' ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 13 82 ) #name: #Label3 #label: 'Read Only' ) ) ) )
</methods> <methods> Examples.ButtonsEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Button Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1048 858 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 31 5 214 29 ) #name: #changeButtonLabel #model: #changeButtonLabel #label: 'Change Button Label ' #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 31 34 214 58 ) #name: #changeCheckBoxLabel #model: #changeCheckBoxLabel #label: 'Change Check Box Label' #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 31 65 214 89 ) #name: #changeRadioButtonLabel #model: #changeRadioButtonLabel #label: 'Change Radio Button Label' #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 82 107 163 130 ) #name: #ActionButton1 #label: 'Action' #defaultable: true ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 80 152 ) #name: #CheckBox1 #label: 'Check Box' ) #(#{UI.RadioButtonSpec} #layout: #(#{Core.Point} 73 192 ) #name: #RadioButton1 #model: #rads #label: 'Radio Button' #select: #moosha ) #(#{UI.RadioButtonSpec} #layout: #(#{Core.Point} 73 218 ) #name: #RadioButton2 #model: #rads #label: 'Radio Button' #select: #misha ) ) ) )
</methods> <methods> Examples.NotebookEventTester class <category>interface specs</category>
leftFirst "UIPainter new openOnClass: self andSelector: #leftFirst" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Unlabeled Canvas' #bounds: #(#{Graphics.Rectangle} 800 600 1000 800 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.LayoutFrame} 10 0 25 0 -10 1 47 0 ) #name: #ActionButton1 #label: 'A Couple Of Buttons On' #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.LayoutFrame} 10 0 56 0 -10 1 79 0 ) #name: #ActionButton2 #label: 'The First Page' #defaultable: true ) ) ) )
leftLast "UIPainter new openOnClass: self andSelector: #leftLast" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Unlabeled Canvas' #bounds: #(#{Graphics.Rectangle} 800 600 1000 800 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 5 14 ) #name: #CheckBox1 #label: 'A Couple Of Check Boxes' ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 5 43 ) #name: #CheckBox2 #label: 'On The Last Page' ) ) ) )
leftSecond "UIPainter new openOnClass: self andSelector: #leftSecond" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Unlabeled Canvas' #bounds: #(#{Graphics.Rectangle} 800 600 1000 800 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.LabelSpec} #layout: #(#{Graphics.LayoutFrame} 10 0 53 0 -10 1 78 0 ) #name: #Label2 #label: 'On The Second Page' ) #(#{UI.LabelSpec} #layout: #(#{Graphics.LayoutFrame} 10 0 19 0 -10 1 44 0 ) #name: #Label1 #label: 'A Couple Of Labels On' ) ) ) )
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Notebook Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1543 797 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.NoteBookSpec} #layout: #(#{Graphics.Rectangle} 13 16 326 189 ) #name: #leftBook #model: #leftBookMajor #tabable: true #secondModel: #leftBookMinor #binderSide: #top #rightInset: 110 #bottomInset: 30 ) #(#{UI.NoteBookSpec} #layout: #(#{Graphics.Rectangle} 328 21 739 173 ) #name: #rightBook #model: #rightBookMajor #tabable: true #secondModel: #rightBookMinor #majorTabsOnRight: false #rightInset: 110 #bottomInset: 30 #tabsOnTop: true ) ) ) )
</methods> <methods> Examples.TabControlEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'TabControl Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1290 962 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.TabControlSpec} #layout: #(#{Graphics.Rectangle} 22 18 312 321 ) #name: #tabControl #labels: #('First' 'Second' 'Third' 'Forth' 'Fifth' 'Sixth' 'Seventh' 'Last' ) ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 349 137 454 160 ) #name: #ActionButton1 #label: 'Focus Getter' #defaultable: true ) ) ) )
</methods> <methods> Examples.HierarchicalListEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Hierarcical List Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1141 1013 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.HierarchicalViewSpec} #layout: #(#{Graphics.LayoutFrame} 10 0 30 0 -10 1 180 0 ) #name: #singleList #model: #singleList #useModifierKeys: true #selectionType: #highlight ) #(#{UI.ActionButtonSpec} #layout: #(#{UI.AlignmentOrigin} 0 0.5 197 0 0.5 0 ) #name: #ActionButton1 #model: #changeTopList #label: 'Change Top List' #defaultable: true ) #(#{UI.HierarchicalViewSpec} #layout: #(#{Graphics.LayoutFrame} 10 0 236 0 -10 1 -10 1 ) #name: #multiList #flags: 15 #model: #multiList #multipleSelections: true #useModifierKeys: true #selectionType: #checkMark ) ) ) )
</methods> <methods> Examples.EditInputEventTests class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Input/Edit Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1058 962 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 37 16 216 40 ) #name: #topInputField #model: #text1 ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 37 55 216 79 ) #name: #secondInputField #model: #text2 ) #(#{UI.TextEditorSpec} #layout: #(#{Graphics.LayoutFrame} 20 0 90 0 -20 1 304 0 ) #name: #textEditor #flags: 15 #model: #text3 #tabRequiresControl: true #isWrapped: false ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 37 322 216 346 ) #name: #readOnlyField #model: #text1 #isReadOnly: true ) ) ) )
</methods> <methods> Examples.SpinEventTriggerTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Spin Event Test' #bounds: #(#{Graphics.Rectangle} 800 600 1000 800 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.SpinButtonSpec} #layout: #(#{Graphics.Rectangle} 29 26 170 51 ) #name: #SpinButton1 #model: #stringAspect #formatString: '#@@@-@@-@@@@' #low: -5 #interval: 10 ) #(#{UI.SpinButtonSpec} #layout: #(#{Graphics.Rectangle} 29 61 170 86 ) #name: #SpinButton2 #model: #dateAspect #type: #date #formatString: 'm/d/yy' #lowDate: #(#Date 347 2000 ) #highDate: #(#Date 355 2000 ) #interval: 2 ) #(#{UI.SpinButtonSpec} #layout: #(#{Graphics.Rectangle} 29 98 170 123 ) #name: #SpinButton3 #model: #timeAspect #type: #time #formatString: 'h:mm:ss AM/PM' #lowTime: #(#Time 50400 ) #highTime: #(#Time 61200 ) #interval: 10 ) #(#{UI.SpinButtonSpec} #layout: #(#{Graphics.Rectangle} 29 135 170 160 ) #name: #bumpSpinner #model: #numberAspect #type: #number #formatString: '#,##0' #low: 3 #high: 33 #interval: 3 ) #(#{UI.SpinButtonSpec} #layout: #(#{Graphics.Rectangle} 29 168 170 193 ) #name: #wrapSpinner #model: #numberNoLow #isReadOnly: false #type: #fixedpoint #formatString: '#,##0.00' #low: 22.02 #high: 25.02 #interval: 0.02 #isWrapAround: true ) ) ) )
</methods> <methods> Examples.TableEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Table Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1350 1053 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.TableViewSpec} #layout: #(#{Graphics.Rectangle} 5 22 532 145 ) #name: #cellSelection #model: #cellSelection #showHGrid: true #showVGrid: true ) #(#{UI.TableViewSpec} #layout: #(#{Graphics.Rectangle} 5 171 532 294 ) #name: #rowSelection #model: #rowSelection #showHGrid: true #selectionStyle: #row ) #(#{UI.TableViewSpec} #layout: #(#{Graphics.Rectangle} 7 319 534 442 ) #name: #columnSelection #model: #columnSelection #showVGrid: true #selectionStyle: #column ) ) ) )
</methods> <methods> Examples.ViewHolderEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'View Holder Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1213 839 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.ArbitraryComponentSpec} #layout: #(#{Graphics.Rectangle} 80 15 314 99 ) #name: #logoView #component: #canvasView ) #(#{UI.ArbitraryComponentSpec} #layout: #(#{Graphics.Rectangle} 80 111 314 225 ) #name: #screenView #flags: 11 #component: #logoView ) ) ) )
</methods> <methods> Examples.GroupBoxEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Group Box Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1072 800 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.GroupBoxSpec} #layout: #(#{Graphics.LayoutFrame} 14 0 14 0 -14 1 138 0 ) #name: #groupBox #label: 'Group Box Label' ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.LayoutFrame} 14 0 147 0 -14 1 170 0 ) #name: #ActionButton1 #model: #changeGroupBoxLabel #label: 'Change Group Box Label' #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.LayoutFrame} 14 0 174 0 -14 1 197 0 ) #name: #ActionButton2 #model: #removeGroupBoxLabel #label: 'Remove Group Box Label' #defaultable: true ) ) ) )
</methods> <methods> Examples.DatasetEventTester class <category>interface specs</category>
windowSpec "Tools.UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Dataset Event Tester' #min: #(#{Core.Point} 20 20 ) #max: #(#{Core.Point} 1600 1200 ) #bounds: #(#{Graphics.Rectangle} 800 600 1215 1070 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.DataSetSpec} #properties: #(#{UI.PropertyListDictionary} #allowSorting false #allowColumnReordering true #showLineNumbers true #allowColumnResizing true #showVerticalLines true #rowSize 30 #showHorizontalLines true ) #layout: #(#{Graphics.LayoutFrame} 10 0 29 0 -10 1 170 0 ) #name: #singleSelect #model: #singleSelectList #columns: #( #(#{UI.DataSetColumnSpec} #properties: #(#{UI.PropertyListDictionary} #allowSorting true ) #labelIsImage: false #width: 30 #rendererType: #rowSelector #editorType: #rowSelector #noScroll: false ) #(#{UI.DataSetColumnSpec} #properties: #(#{UI.PropertyListDictionary} #allowSorting true ) #model: #'singleSelectRowHolder name' #label: 'Class Name' #labelIsImage: false #width: 200 #editorType: #InputField #noScroll: false ) #(#{UI.DataSetColumnSpec} #properties: #(#{UI.PropertyListDictionary} #allowSorting true ) #model: #'singleSelectRowHolder ivarName' #label: 'Ivar Names' #labelIsImage: false #width: 150 #rendererType: #Text #editorType: #ComboBox #choices: #ivarNames #noScroll: false ) #(#{UI.DataSetColumnSpec} #properties: #(#{UI.PropertyListDictionary} #allowSorting true ) #model: #'singleSelectRowHolder checkBox' #label: 'Check Box' #labelIsImage: false #width: 80 #rendererType: #CheckBox #editorType: #CheckBox #type: #boolean #noScroll: false #formatString: '' ) ) ) #(#{UI.DataSetSpec} #properties: #(#{UI.PropertyListDictionary} #allowSorting true #allowColumnReordering true #allowColumnResizing true #showLineNumbers false #showVerticalLines false #showHorizontalLines true #rowSize 26 #rowLabelsAsButtons true ) #layout: #(#{Graphics.LayoutFrame} 10 0 284 0 -10 1 -10 1 ) #name: #multiSelect #model: #multiSelectList #columns: #( #(#{UI.DataSetColumnSpec} #properties: #(#{UI.PropertyListDictionary} #allowSorting true ) #labelIsImage: false #width: 30 #rendererType: #rowSelector #editorType: #rowSelector #noScroll: false #labelsAsButtons: true ) #(#{UI.DataSetColumnSpec} #properties: #(#{UI.PropertyListDictionary} #allowSorting true ) #model: #'multiSelectRowHolder name' #label: 'Class Name' #labelIsImage: false #width: 200 #rendererType: #Text #editorType: #None #noScroll: false #labelsAsButtons: true ) #(#{UI.DataSetColumnSpec} #properties: #(#{UI.PropertyListDictionary} #allowSorting true ) #model: #'multiSelectRowHolder ivarName' #label: 'Ivar Names' #labelIsImage: false #width: 150 #rendererType: #Text #editorType: #ComboBox #choices: #multiIvarNames #noScroll: false #labelsAsButtons: true ) #(#{UI.DataSetColumnSpec} #properties: #(#{UI.PropertyListDictionary} #allowSorting false ) #model: #'multiSelectRowHolder checkBox' #label: 'Check Box' #labelIsImage: false #width: 80 #rendererType: #CheckBox #editorType: #CheckBox #noScroll: false #labelsAsButtons: true ) ) #multipleSelections: true #labelsAsButtons: true ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 10 5 ) #name: #Label1 #label: 'Single Select' ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 10 255 ) #name: #Label2 #label: 'Multi Select' ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 183 224 ) #name: #CheckBox1 #model: #columnSorting #label: 'Column Sorting' ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 183 243 ) #name: #CheckBox3 #model: #columnResizing #label: 'Column Resizing' ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 183 262 ) #name: #CheckBox2 #model: #columnReordering #label: 'Column Reordering' ) #(#{UI.DividerSpec} #layout: #(#{Graphics.LayoutFrame} -1 0 222 0 1 1 226 0 ) #name: #Divider1 ) #(#{UI.ActionButtonSpec} #layout: #(#{UI.AlignmentOrigin} 10 0 183 0 0 0 ) #name: #ActionButton1 #model: #addRowToSingleSelectDataset #label: 'Add Row' #isDefault: false #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{UI.AlignmentOrigin} -10 1 183 0 1 0 ) #name: #ActionButton2 #model: #removeRowToSingleSelectDataset #label: 'Remove Selection' #isDefault: false #defaultable: true ) ) ) )
</methods> <methods> Examples.ResizingSplitterEventTester class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Resizing Splitter Event Tester' #bounds: #(#{Graphics.Rectangle} 800 600 1190 871 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.TextEditorSpec} #layout: #(#{Graphics.Rectangle} 9 150 109 250 ) #name: #TextEditor1 #tabRequiresControl: true ) #(#{UI.ResizingSplitterSpec} #layout: #(#{Graphics.Rectangle} 8 124 108 128 ) #name: #horizontalSplitter #flags: 8 #horizontal: true #minAboveSize: 30 #minBelowSize: 30 #aboveWidgets: 'TextEditor2' #belowWidgets: 'TextEditor1' ) #(#{UI.TextEditorSpec} #layout: #(#{Graphics.Rectangle} 8 1 108 101 ) #name: #TextEditor2 #tabRequiresControl: true ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 153 114 253 137 ) #name: #InputField1 ) #(#{UI.ResizingSplitterSpec} #layout: #(#{Graphics.Rectangle} 261 62 265 197.5 ) #name: #verticalSplitter #flags: 8 #horizontal: false #minAboveSize: 30 #minBelowSize: 30 #aboveWidgets: 'InputField1' #belowWidgets: 'InputField2' ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 274 114 374 137 ) #name: #InputField2 ) ) ) )
</methods> "Imported Classes:" self error: 'Attempting to file-in parcel imports. Choose terminate or close' <class> <name>Object</name> <environment>Core</environment> <super></super> <private>false</private> none <imports></imports> <category>Kernel-Objects</category> <attributes> <package>Kernel-Objects</package> </attributes> </class> <class> <name>ApplicationModel</name> <environment>UI</environment> <super>UI.Model</super> <private>false</private> none builder uiSession eventHandlers savedWindowInformation <imports></imports> <category>UIBuilder-Framework</category> <attributes> <package>UIBuilder-Framework</package> </attributes> </class> <class> <name>SimpleDialog</name> <environment>UI</environment> <super>UI.ApplicationModel</super> <private>false</private> none close accept cancel preBuildBlock postBuildBlock postOpenBlock escapeIsCancel parentView <imports></imports> <category>Interface-Dialogs</category> <attributes> <package>Interface-Dialogs</package> </attributes> </class>