MenuEditor.st
changeset 1737 de6abd3c55d2
parent 1730 96674f49b8d7
child 1749 817e1191a4fc
--- a/MenuEditor.st	Fri Aug 29 20:31:23 2003 +0200
+++ b/MenuEditor.st	Thu Sep 04 20:59:42 2003 +0200
@@ -470,87 +470,86 @@
     <resource: #canvas>
 
     ^ 
-     #(#FullSpec
-        #name: #windowSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'Menu Editor'
-          #name: 'Menu Editor'
-          #min: #(#Point 550 385)
-          #max: #(#Point 1152 900)
-          #bounds: #(#Rectangle 12 22 588 497)
-          #menu: #menu
-          #returnIsOKInDialog: false
-          #escapeIsCancelInDialog: false
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'Menu Editor'
+          name: 'Menu Editor'
+          min: (Point 550 385)
+          bounds: (Rectangle 14 46 590 521)
+          menu: menu
+          returnIsOKInDialog: false
+          escapeIsCancelInDialog: false
         )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#MenuPanelSpec
-              #name: 'toolbar'
-              #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 32 0)
-              #tabable: true
-              #menu: #toolbar
-              #showSeparatingLines: true
+        component: 
+       (SpecCollection
+          collection: (
+           (MenuPanelSpec
+              name: 'toolbar'
+              layout: (LayoutFrame 0 0.0 0 0 0 1.0 32 0)
+              tabable: true
+              menu: toolbar
+              showSeparatingLines: true
             )
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel'
-              #layout: #(#LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#HierarchicalListViewSpec
-                    #name: 'ListOfItemsView'
-                    #model: #selectionHolder
-                    #menu: #editMenu
-                    #hasHorizontalScrollBar: true
-                    #hasVerticalScrollBar: true
-                    #miniScrollerHorizontal: true
-                    #miniScrollerVertical: true
-                    #listModel: #listOfItems
-                    #multipleSelectOk: true
-                    #useIndex: false
-                    #highlightMode: #label
-                    #doubleClickSelector: #indicatorClickedAt:
-                    #selectConditionSelector: #canSelect:
-                    #showLeftIndicators: false
-                    #indicatorSelector: #indicatorClickedAt:
-                    #properties: 
-                   #(#PropertyListDictionary
-                      #dropSelector: #doDrop:
-                      #dragArgument: nil
-                      #dropObjectSelector: #dropObjects
-                      #dropArgument: nil
-                      #canDropSelector: #canDrop:
-                      #leaveSelector: #dropLeave:
-                      #enterSelector: #dropEnter:
-                      #overSelector: #dropOver:
+           (VariableHorizontalPanelSpec
+              name: 'VariableHorizontalPanel'
+              layout: (LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0)
+              component: 
+             (SpecCollection
+                collection: (
+                 (HierarchicalListViewSpec
+                    name: 'ListOfItemsView'
+                    model: selectionHolder
+                    menu: editMenu
+                    hasHorizontalScrollBar: true
+                    hasVerticalScrollBar: true
+                    miniScrollerHorizontal: true
+                    miniScrollerVertical: true
+                    listModel: listOfItems
+                    multipleSelectOk: true
+                    useIndex: false
+                    highlightMode: label
+                    doubleClickSelector: indicatorClickedAt:
+                    selectConditionSelector: canSelect:
+                    showLeftIndicators: false
+                    indicatorSelector: indicatorClickedAt:
+                    properties: 
+                   (PropertyListDictionary
+                      overSelector: dropOver:
+                      dragArgument: nil
+                      dropObjectSelector: dropObjects
+                      dropArgument: nil
+                      canDropSelector: canDrop:
+                      leaveSelector: dropLeave:
+                      enterSelector: dropEnter:
+                      dropSelector: doDrop:
                     )
-                    #postBuildCallback: #postBuildListOfItemsView:
+                    postBuildCallback: postBuildListOfItemsView:
                   )
-                 #(#ViewSpec
-                    #name: 'Box'
-                    #level: -1
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#NoteBookViewSpec
-                          #name: 'NoteBook'
-                          #layout: #(#LayoutFrame 1 0.0 0 0.0 1 1.0 -30 1.0)
-                          #enableChannel: #hasSingleSelectionChannel
-                          #tabable: true
-                          #model: #tabHolder
-                          #menu: #listOfTabs
-                          #fitLastRow: false
-                          #canvas: #wizardHolder
-                          #keepCanvasAlive: true
-                          #postBuildCallback: #postBuildNoteBook:
+                 (ViewSpec
+                    name: 'Box'
+                    level: -1
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (NoteBookViewSpec
+                          name: 'NoteBook'
+                          layout: (LayoutFrame 1 0.0 0 0.0 1 1.0 -30 1.0)
+                          enableChannel: hasSingleSelectionChannel
+                          tabable: true
+                          model: tabHolder
+                          menu: listOfTabs
+                          fitLastRow: false
+                          canvas: wizardHolder
+                          keepCanvasAlive: true
+                          postBuildCallback: postBuildNoteBook:
                         )
-                       #(#UISubSpecification
-                          #name: 'SubSpecification'
-                          #layout: #(#LayoutFrame 2 0.0 -26 1 -2 1.0 -2 1.0)
-                          #majorKey: #ToolApplicationModel
-                          #minorKey: #windowSpecForCommit
+                       (UISubSpecification
+                          name: 'SubSpecification'
+                          layout: (LayoutFrame 2 0.0 -26 1 -2 1.0 -2 1.0)
+                          majorKey: ToolApplicationModel
+                          minorKey: windowSpecForCommit
                         )
                        )
                      
@@ -559,13 +558,13 @@
                  )
                
               )
-              #handles: #(#Any 0.300493 1.0)
+              handles: (Any 0.300493 1.0)
             )
-           #(#UISubSpecification
-              #name: 'InfoBarSubSpec'
-              #layout: #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
-              #majorKey: #ToolApplicationModel
-              #minorKey: #windowSpecForInfoBar
+           (UISubSpecification
+              name: 'InfoBarSubSpec'
+              layout: (LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
+              majorKey: ToolApplicationModel
+              minorKey: windowSpecForInfoBar
             )
            )
          
@@ -2910,171 +2909,170 @@
     <resource: #canvas>
 
     ^ 
-     #(#FullSpec
-        #name: #detailsEditSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'Details Edit'
-          #name: 'Details Edit'
-          #min: #(#Point 10 10)
-          #max: #(#Point 1280 1024)
-          #bounds: #(#Rectangle 43 153 303 398)
+     #(FullSpec
+        name: detailsEditSpec
+        window: 
+       (WindowSpec
+          label: 'Details Edit'
+          name: 'Details Edit'
+          min: (Point 10 10)
+          bounds: (Rectangle 14 46 274 291)
         )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#LabelSpec
-              #label: 'Accelerator:'
-              #name: 'shortcutKeyLabel'
-              #layout: #(#AlignmentOrigin 107 0 26 0 1 0.5)
-              #activeHelpKey: #detailsAccelerator
-              #resizeForLabel: true
-              #adjust: #right
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Accelerator:'
+              name: 'shortcutKeyLabel'
+              layout: (AlignmentOrigin 107 0 26 0 1 0.5)
+              activeHelpKey: detailsAccelerator
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'shortcutKeyField'
-              #layout: #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
-              #activeHelpKey: #detailsAccelerator
-              #tabable: true
-              #model: #shortcutKeyCharacter
-              #group: #inputGroup
-              #type: #symbolOrNil
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'shortcutKeyField'
+              layout: (LayoutFrame 110 0 15 0 -5 1.0 37 0)
+              activeHelpKey: detailsAccelerator
+              tabable: true
+              model: shortcutKeyCharacter
+              group: inputGroup
+              type: symbolOrNil
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Enabled:'
-              #name: 'enabledLabel'
-              #layout: #(#AlignmentOrigin 107 0 51 0 1 0.5)
-              #activeHelpKey: #detailsEnabled
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Enabled:'
+              name: 'enabledLabel'
+              layout: (AlignmentOrigin 107 0 51 0 1 0.5)
+              activeHelpKey: detailsEnabled
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'enabledField'
-              #layout: #(#LayoutFrame 110 0 40 0 -5 1.0 62 0)
-              #activeHelpKey: #detailsEnabled
-              #tabable: true
-              #model: #enabled
-              #group: #inputGroup
-              #type: #symbolOrBooleanOrNil
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'enabledField'
+              layout: (LayoutFrame 110 0 40 0 -5 1.0 62 0)
+              activeHelpKey: detailsEnabled
+              tabable: true
+              model: enabled
+              group: inputGroup
+              type: symbolOrBooleanOrNil
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Visibility:'
-              #name: 'visibilityLabel'
-              #layout: #(#AlignmentOrigin 107 0 76 0 1 0.5)
-              #activeHelpKey: #detailsVisibility
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Visibility:'
+              name: 'visibilityLabel'
+              layout: (AlignmentOrigin 107 0 76 0 1 0.5)
+              activeHelpKey: detailsVisibility
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'isVisibleInputField'
-              #layout: #(#LayoutFrame 110 0 65 0 -5 1.0 87 0)
-              #activeHelpKey: #detailsVisibility
-              #tabable: true
-              #model: #isVisible
-              #group: #inputGroup
-              #type: #symbolOrBooleanOrNil
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'isVisibleInputField'
+              layout: (LayoutFrame 110 0 65 0 -5 1.0 87 0)
+              activeHelpKey: detailsVisibility
+              tabable: true
+              model: isVisible
+              group: inputGroup
+              type: symbolOrBooleanOrNil
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Aux Value'
-              #name: 'auxLabel'
-              #layout: #(#AlignmentOrigin 107 0 101 0 1 0.5)
-              #activeHelpKey: #detailsAuxValue
-              #translateLabel: true
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Aux Value'
+              name: 'auxLabel'
+              layout: (AlignmentOrigin 107 0 101 0 1 0.5)
+              activeHelpKey: detailsAuxValue
+              translateLabel: true
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'auxInputField'
-              #layout: #(#LayoutFrame 110 0 90 0 -5 1.0 112 0)
-              #activeHelpKey: #detailsAuxValue
-              #tabable: true
-              #model: #auxValue
-              #group: #inputGroup
-              #type: #smalltalkObject
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'auxInputField'
+              layout: (LayoutFrame 110 0 90 0 -5 1.0 112 0)
+              activeHelpKey: detailsAuxValue
+              tabable: true
+              model: auxValue
+              group: inputGroup
+              type: smalltalkObject
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Start Group:'
-              #name: 'StartGroupLabel'
-              #layout: #(#AlignmentOrigin 107 0 139 0 1 0.5)
-              #activeHelpKey: #detailsStartGroup
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Start Group:'
+              name: 'StartGroupLabel'
+              layout: (AlignmentOrigin 107 0 139 0 1 0.5)
+              activeHelpKey: detailsStartGroup
+              resizeForLabel: true
+              adjust: right
             )
-           #(#PopUpListSpec
-              #label: 'left'
-              #name: 'StartGroupPopUp'
-              #layout: #(#LayoutFrame 110 0 128 0 -5 1.0 150 0)
-              #activeHelpKey: #detailsStartGroup
-              #tabable: true
-              #model: #startGroup
-              #menu: 
-             #(#left
-                #right
+           (PopUpListSpec
+              label: 'left'
+              name: 'StartGroupPopUp'
+              layout: (LayoutFrame 110 0 128 0 -5 1.0 150 0)
+              activeHelpKey: detailsStartGroup
+              tabable: true
+              model: startGroup
+              menu: 
+             (left
+                right
               )
             )
-           #(#LabelSpec
-              #label: 'Access Character Position:'
-              #name: 'accessCharLabel'
-              #layout: #(#AlignmentOrigin 217 0 170 0 1 0.5)
-              #activeHelpKey: #detailsAccessCharaterPosition
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Access Character Position:'
+              name: 'accessCharLabel'
+              layout: (AlignmentOrigin 217 0 170 0 1 0.5)
+              activeHelpKey: detailsAccessCharaterPosition
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'accessCharField'
-              #layout: #(#LayoutFrame 220 0 159 0 -5 1.0 181 0)
-              #activeHelpKey: #detailsAccessCharaterPosition
-              #tabable: true
-              #model: #accessCharacterPosition
-              #group: #inputGroup
-              #type: #numberOrNil
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'accessCharField'
+              layout: (LayoutFrame 220 0 159 0 -5 1.0 181 0)
+              activeHelpKey: detailsAccessCharaterPosition
+              tabable: true
+              model: accessCharacterPosition
+              group: inputGroup
+              type: numberOrNil
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Font:'
-              #name: 'fontLabel'
-              #layout: #(#AlignmentOrigin 75 0 219 0 1 0.5)
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Font:'
+              name: 'fontLabel'
+              layout: (AlignmentOrigin 75 0 219 0 1 0.5)
+              resizeForLabel: true
+              adjust: right
             )
-           #(#FontMenuSpec
-              #attributes: 
-             #(#tabable
+           (FontMenuSpec
+              attributes: 
+             (tabable
                 true
               )
-              #name: 'fontMenu'
-              #layout: #(#LayoutFrame 78 0 208 0 -5 1.0 230 0)
-              #activeHelpKey: #fontMenu
-              #model: #font
+              name: 'fontMenu'
+              layout: (LayoutFrame 78 0 208 0 -5 1.0 230 0)
+              activeHelpKey: fontMenu
+              model: font
             )
            )
          
@@ -3408,244 +3406,243 @@
     <resource: #canvas>
 
     ^ 
-     #(#FullSpec
-        #name: #basicsEditSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'basicsEditSpec'
-          #name: 'basicsEditSpec'
-          #min: #(#Point 10 10)
-          #max: #(#Point 1160 870)
-          #bounds: #(#Rectangle 314 340 654 680)
+     #(FullSpec
+        name: basicsEditSpec
+        window: 
+       (WindowSpec
+          label: 'basicsEditSpec'
+          name: 'basicsEditSpec'
+          min: (Point 10 10)
+          bounds: (Rectangle 14 46 354 386)
         )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#LabelSpec
-              #label: 'Name Key:'
-              #name: 'nameKeyLabel'
-              #layout: #(#AlignmentOrigin 107 0 25 0 1 0.5)
-              #activeHelpKey: #basicsKey
-              #resizeForLabel: true
-              #adjust: #right
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Name Key:'
+              name: 'nameKeyLabel'
+              layout: (AlignmentOrigin 107 0 25 0 1 0.5)
+              activeHelpKey: basicsKey
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'nameKeyField'
-              #layout: #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
-              #activeHelpKey: #basicsKey
-              #tabable: true
-              #model: #nameKey
-              #group: #inputGroup
-              #type: #symbolOrNil
-              #immediateAccept: false
-              #acceptOnLeave: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: false
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'nameKeyField'
+              layout: (LayoutFrame 110 0 15 0 -5 1.0 37 0)
+              activeHelpKey: basicsKey
+              tabable: true
+              model: nameKey
+              group: inputGroup
+              type: symbolOrNil
+              immediateAccept: false
+              acceptOnLeave: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: false
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Label:'
-              #name: 'labelLabel'
-              #layout: #(#AlignmentOrigin 107 0 51 0 1 0.5)
-              #activeHelpKey: #basicsLabel
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Label:'
+              name: 'labelLabel'
+              layout: (AlignmentOrigin 107 0 51 0 1 0.5)
+              activeHelpKey: basicsLabel
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'labelField'
-              #layout: #(#LayoutFrame 110 0 40 0 -5 1.0 62 0)
-              #activeHelpKey: #basicsLabel
-              #tabable: true
-              #model: #rawLabel
-              #group: #inputGroup
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: false
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'labelField'
+              layout: (LayoutFrame 110 0 40 0 -5 1.0 62 0)
+              activeHelpKey: basicsLabel
+              tabable: true
+              model: rawLabel
+              group: inputGroup
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: false
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Action:'
-              #name: 'valueLabel'
-              #layout: #(#AlignmentOrigin 107 0 82 0 1 0.5)
-              #activeHelpKey: #basicsAction
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Action:'
+              name: 'valueLabel'
+              layout: (AlignmentOrigin 107 0 82 0 1 0.5)
+              activeHelpKey: basicsAction
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'valueField'
-              #layout: #(#LayoutFrame 110 0 71 0 -5 1.0 93 0)
-              #activeHelpKey: #basicsAction
-              #tabable: true
-              #model: #itemValue
-              #group: #inputGroup
-              #type: #symbolOrNil
-              #immediateAccept: false
-              #acceptOnLeave: true
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: true
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: true
+           (InputFieldSpec
+              name: 'valueField'
+              layout: (LayoutFrame 110 0 71 0 -5 1.0 93 0)
+              activeHelpKey: basicsAction
+              tabable: true
+              model: itemValue
+              group: inputGroup
+              type: symbolOrNil
+              immediateAccept: false
+              acceptOnLeave: true
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: true
             )
-           #(#LabelSpec
-              #label: 'Argument:'
-              #name: 'argumentLabel'
-              #layout: #(#AlignmentOrigin 107 0 107 0 1 0.5)
-              #activeHelpKey: #basicsArgument
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Argument:'
+              name: 'argumentLabel'
+              layout: (AlignmentOrigin 107 0 107 0 1 0.5)
+              activeHelpKey: basicsArgument
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'argumentField'
-              #layout: #(#LayoutFrame 110 0 96 0 -5 1.0 118 0)
-              #activeHelpKey: #basicsArgument
-              #tabable: true
-              #model: #argument
-              #group: #inputGroup
-              #type: #smalltalkObject
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: false
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'argumentField'
+              layout: (LayoutFrame 110 0 96 0 -5 1.0 118 0)
+              activeHelpKey: basicsArgument
+              tabable: true
+              model: argument
+              group: inputGroup
+              type: smalltalkObject
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: false
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Indication:'
-              #name: 'indicationLabel'
-              #layout: #(#AlignmentOrigin 107 0 138 0 1 0.5)
-              #activeHelpKey: #basicsIndication
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Indication:'
+              name: 'indicationLabel'
+              layout: (AlignmentOrigin 107 0 138 0 1 0.5)
+              activeHelpKey: basicsIndication
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'indicationField'
-              #layout: #(#LayoutFrame 110 0 127 0 -5 1.0 149 0)
-              #activeHelpKey: #basicsIndication
-              #enableChannel: #indicationEnabled
-              #tabable: true
-              #model: #indication
-              #group: #inputGroup
-              #type: #symbolOrNil
-              #immediateAccept: true
-              #acceptOnReturn: false
-              #acceptOnTab: false
-              #acceptOnLostFocus: false
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'indicationField'
+              layout: (LayoutFrame 110 0 127 0 -5 1.0 149 0)
+              activeHelpKey: basicsIndication
+              enableChannel: indicationEnabled
+              tabable: true
+              model: indication
+              group: inputGroup
+              type: symbolOrNil
+              immediateAccept: true
+              acceptOnReturn: false
+              acceptOnTab: false
+              acceptOnLostFocus: false
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Choice:'
-              #name: 'choiceLabel'
-              #layout: #(#AlignmentOrigin 107 0 163 0 1 0.5)
-              #activeHelpKey: #basicsChoice
-              #translateLabel: true
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Choice:'
+              name: 'choiceLabel'
+              layout: (AlignmentOrigin 107 0 163 0 1 0.5)
+              activeHelpKey: basicsChoice
+              translateLabel: true
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'choiceField'
-              #layout: #(#LayoutFrame 110 0 152 0 -5 1.0 174 0)
-              #activeHelpKey: #basicsChoice
-              #enableChannel: #choiceEnabled
-              #tabable: true
-              #model: #choice
-              #group: #inputGroup
-              #type: #symbolOrNil
-              #immediateAccept: true
-              #acceptOnReturn: false
-              #acceptOnTab: false
-              #acceptOnLostFocus: false
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'choiceField'
+              layout: (LayoutFrame 110 0 152 0 -5 1.0 174 0)
+              activeHelpKey: basicsChoice
+              enableChannel: choiceEnabled
+              tabable: true
+              model: choice
+              group: inputGroup
+              type: symbolOrNil
+              immediateAccept: true
+              acceptOnReturn: false
+              acceptOnTab: false
+              acceptOnLostFocus: false
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Value:'
-              #name: 'choiceValueLabel'
-              #layout: #(#AlignmentOrigin 107 0 188 0 1 0.5)
-              #activeHelpKey: #basicsChoiceValue
-              #translateLabel: true
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Value:'
+              name: 'choiceValueLabel'
+              layout: (AlignmentOrigin 107 0 188 0 1 0.5)
+              activeHelpKey: basicsChoiceValue
+              translateLabel: true
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'choiceValueField'
-              #layout: #(#LayoutFrame 110 0 177 0 -5 1.0 199 0)
-              #activeHelpKey: #basicsChoiceValue
-              #enableChannel: #choiceValueEnabled
-              #tabable: true
-              #model: #choiceValue
-              #group: #inputGroup
-              #type: #smalltalkObjectOrNil
-              #immediateAccept: false
-              #acceptOnLeave: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: false
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'choiceValueField'
+              layout: (LayoutFrame 110 0 177 0 -5 1.0 199 0)
+              activeHelpKey: basicsChoiceValue
+              enableChannel: choiceValueEnabled
+              tabable: true
+              model: choiceValue
+              group: inputGroup
+              type: smalltalkObjectOrNil
+              immediateAccept: false
+              acceptOnLeave: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: false
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#CheckBoxSpec
-              #label: 'Translate Label'
-              #name: 'translateLabelCheckBox'
-              #layout: #(#AlignmentOrigin 7 0 213 0 0 0)
-              #activeHelpKey: #basicsTranslateLabel
-              #tabable: true
-              #model: #translateLabel
+           (CheckBoxSpec
+              label: 'Translate Label'
+              name: 'translateLabelCheckBox'
+              layout: (AlignmentOrigin 7 0 213 0 0 0)
+              activeHelpKey: basicsTranslateLabel
+              tabable: true
+              model: translateLabel
             )
-           #(#CheckBoxSpec
-              #label: 'Is Button'
-              #name: 'isButtonCheckBox'
-              #layout: #(#AlignmentOrigin 7 0 238 0 0 0)
-              #activeHelpKey: #basicsIsButton
-              #tabable: true
-              #model: #isButton
+           (CheckBoxSpec
+              label: 'Is Button'
+              name: 'isButtonCheckBox'
+              layout: (AlignmentOrigin 7 0 238 0 0 0)
+              activeHelpKey: basicsIsButton
+              tabable: true
+              model: isButton
             )
-           #(#CheckBoxSpec
-              #label: 'Hide Menu after Activation'
-              #name: 'hideMenuOnActivated'
-              #layout: #(#AlignmentOrigin 7 0 263 0 0 0)
-              #activeHelpKey: #hideMenuOnActivated
-              #tabable: true
-              #model: #hideMenuOnActivated
+           (CheckBoxSpec
+              label: 'Hide Menu after Activation'
+              name: 'hideMenuOnActivated'
+              layout: (AlignmentOrigin 7 0 263 0 0 0)
+              activeHelpKey: hideMenuOnActivated
+              tabable: true
+              model: hideMenuOnActivated
             )
-           #(#CheckBoxSpec
-              #label: 'BusyCursor while Active'
-              #name: 'showBusyCursorWhilePerforming'
-              #layout: #(#AlignmentOrigin 7 0 288 0 0 0)
-              #activeHelpKey: #showBusyCursorWhilePerforming
-              #tabable: true
-              #model: #showBusyCursorWhilePerforming
-              #translateLabel: true
+           (CheckBoxSpec
+              label: 'BusyCursor while Active'
+              name: 'showBusyCursorWhilePerforming'
+              layout: (AlignmentOrigin 7 0 288 0 0 0)
+              activeHelpKey: showBusyCursorWhilePerforming
+              tabable: true
+              model: showBusyCursorWhilePerforming
+              translateLabel: true
             )
-           #(#CheckBoxSpec
-              #label: 'Trigger On Down'
-              #name: 'triggerOnDown'
-              #layout: #(#AlignmentOrigin 25 0.5 238 0 0 0)
-              #activeHelpKey: #triggerOnDown
-              #enableChannel: #hasNoDelayedMenuValue
-              #tabable: true
-              #model: #triggerOnDown
-              #translateLabel: true
+           (CheckBoxSpec
+              label: 'Trigger On Down'
+              name: 'triggerOnDown'
+              layout: (AlignmentOrigin 25 0.5 238 0 0 0)
+              activeHelpKey: triggerOnDown
+              enableChannel: hasNoDelayedMenuValue
+              tabable: true
+              model: triggerOnDown
+              translateLabel: true
             )
-           #(#CheckBoxSpec
-              #label: 'Send To Originating Widget'
-              #name: 'sendToOriginator'
-              #layout: #(#AlignmentOrigin 7 0 313 0 0 0)
-              #activeHelpKey: #sendToOriginator
-              #enableChannel: #hasItemValue
-              #tabable: true
-              #model: #sendToOriginator
-              #translateLabel: true
+           (CheckBoxSpec
+              label: 'Send To Originating Widget'
+              name: 'sendToOriginator'
+              layout: (AlignmentOrigin 7 0 313 0 0 0)
+              activeHelpKey: sendToOriginator
+              enableChannel: hasItemValue
+              tabable: true
+              model: sendToOriginator
+              translateLabel: true
             )
            )
          
@@ -3832,160 +3829,159 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:MenuEditor::ItemLinkedMenu andSelector:#basicsEditSpec
+     UIPainter new openOnClass:MenuEditor::LinkedMenuItem andSelector:#basicsEditSpec
     "
 
     <resource: #canvas>
 
     ^ 
-     #(#FullSpec
-        #name: #basicsEditSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'basicsEditSpec'
-          #name: 'basicsEditSpec'
-          #min: #(#Point 10 10)
-          #max: #(#Point 1160 870)
-          #bounds: #(#Rectangle 93 330 433 670)
+     #(FullSpec
+        name: basicsEditSpec
+        window: 
+       (WindowSpec
+          label: 'basicsEditSpec'
+          name: 'basicsEditSpec'
+          min: (Point 10 10)
+          bounds: (Rectangle 14 46 354 386)
         )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#LabelSpec
-              #label: 'Name Key:'
-              #name: 'nameKeyLabel'
-              #layout: #(#AlignmentOrigin 107 0 25 0 1 0.5)
-              #activeHelpKey: #basicsKey
-              #visibilityChannel: #notDelayedMenu
-              #resizeForLabel: true
-              #adjust: #right
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Name Key:'
+              name: 'nameKeyLabel'
+              layout: (AlignmentOrigin 107 0 25 0 1 0.5)
+              activeHelpKey: basicsKey
+              visibilityChannel: notDelayedMenu
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'nameKeyField'
-              #layout: #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
-              #activeHelpKey: #basicsKey
-              #visibilityChannel: #notDelayedMenu
-              #tabable: true
-              #model: #nameKey
-              #group: #inputGroup
-              #type: #symbolOrNil
-              #immediateAccept: false
-              #acceptOnLeave: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: false
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'nameKeyField'
+              layout: (LayoutFrame 110 0 15 0 -5 1.0 37 0)
+              activeHelpKey: basicsKey
+              visibilityChannel: notDelayedMenu
+              tabable: true
+              model: nameKey
+              group: inputGroup
+              type: symbolOrNil
+              immediateAccept: false
+              acceptOnLeave: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: false
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Label:'
-              #name: 'labelLabel'
-              #layout: #(#AlignmentOrigin 107 0 51 0 1 0.5)
-              #activeHelpKey: #basicsLabel
-              #visibilityChannel: #notDelayedMenu
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Label:'
+              name: 'labelLabel'
+              layout: (AlignmentOrigin 107 0 51 0 1 0.5)
+              activeHelpKey: basicsLabel
+              visibilityChannel: notDelayedMenu
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'labelField'
-              #layout: #(#LayoutFrame 110 0 40 0 -5 1.0 62 0)
-              #activeHelpKey: #basicsLabel
-              #visibilityChannel: #notDelayedMenu
-              #tabable: true
-              #model: #rawLabel
-              #group: #inputGroup
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: false
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'labelField'
+              layout: (LayoutFrame 110 0 40 0 -5 1.0 62 0)
+              activeHelpKey: basicsLabel
+              visibilityChannel: notDelayedMenu
+              tabable: true
+              model: rawLabel
+              group: inputGroup
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: false
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Menu:'
-              #name: 'menuLabel'
-              #layout: #(#AlignmentOrigin 107 0 90 0 1 0.5)
-              #activeHelpKey: #basicsLabel
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Menu:'
+              name: 'menuLabel'
+              layout: (AlignmentOrigin 107 0 90 0 1 0.5)
+              activeHelpKey: basicsLabel
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'menuField'
-              #layout: #(#LayoutFrame 110 0 79 0 -5 1.0 101 0)
-              #activeHelpKey: #basicsMenu
-              #tabable: true
-              #model: #submenuChannel
-              #group: #inputGroup
-              #type: #symbolOrNil
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: false
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'menuField'
+              layout: (LayoutFrame 110 0 79 0 -5 1.0 101 0)
+              activeHelpKey: basicsMenu
+              tabable: true
+              model: submenuChannel
+              group: inputGroup
+              type: symbolOrNil
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: false
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Argument:'
-              #name: 'argumentLabel'
-              #layout: #(#AlignmentOrigin 107 0 115 0 1 0.5)
-              #activeHelpKey: #basicsLabel
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Argument:'
+              name: 'argumentLabel'
+              layout: (AlignmentOrigin 107 0 115 0 1 0.5)
+              activeHelpKey: basicsLabel
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'argumentField'
-              #layout: #(#LayoutFrame 110 0 104 0 -5 1.0 126 0)
-              #activeHelpKey: #basicsMenuArgument
-              #enableChannel: #notDelayedMenu
-              #tabable: true
-              #model: #argument
-              #group: #inputGroup
-              #type: #smalltalkObject
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: false
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'argumentField'
+              layout: (LayoutFrame 110 0 104 0 -5 1.0 126 0)
+              activeHelpKey: basicsMenuArgument
+              enableChannel: notDelayedMenu
+              tabable: true
+              model: argument
+              group: inputGroup
+              type: smalltalkObject
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: false
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#CheckBoxSpec
-              #label: 'Translate Label'
-              #name: 'translateLabelCheckBox'
-              #layout: #(#Point 20 213)
-              #activeHelpKey: #basicsTranslateLabel
-              #visibilityChannel: #notDelayedMenu
-              #tabable: true
-              #model: #translateLabel
+           (CheckBoxSpec
+              label: 'Translate Label'
+              name: 'translateLabelCheckBox'
+              layout: (Point 20 213)
+              activeHelpKey: basicsTranslateLabel
+              visibilityChannel: notDelayedMenu
+              tabable: true
+              model: translateLabel
             )
-           #(#CheckBoxSpec
-              #label: 'Is Button'
-              #name: 'isButtonCheckBox'
-              #layout: #(#Point 20 238)
-              #activeHelpKey: #basicsIsButton
-              #visibilityChannel: #notDelayedMenu
-              #tabable: true
-              #model: #isButton
+           (CheckBoxSpec
+              label: 'Is Button'
+              name: 'isButtonCheckBox'
+              layout: (Point 20 238)
+              activeHelpKey: basicsIsButton
+              visibilityChannel: notDelayedMenu
+              tabable: true
+              model: isButton
             )
-           #(#CheckBoxSpec
-              #label: 'Horizontal Layout'
-              #name: 'horizontalLayout'
-              #layout: #(#Point 20 263)
-              #activeHelpKey: #horizontalLayout
-              #tabable: true
-              #model: #horizontalLayout
+           (CheckBoxSpec
+              label: 'Horizontal Layout'
+              name: 'horizontalLayout'
+              layout: (Point 20 263)
+              activeHelpKey: horizontalLayout
+              tabable: true
+              model: horizontalLayout
             )
-           #(#CheckBoxSpec
-              #label: 'Do not Destroy Linked Menu'
-              #name: 'keepLinkedMenu'
-              #layout: #(#Point 20 288)
-              #activeHelpKey: #keepLinkedMenu
-              #tabable: true
-              #model: #keepLinkedMenu
-              #translateLabel: true
+           (CheckBoxSpec
+              label: 'Do not Destroy Linked Menu'
+              name: 'keepLinkedMenu'
+              layout: (Point 20 288)
+              activeHelpKey: keepLinkedMenu
+              tabable: true
+              model: keepLinkedMenu
+              translateLabel: true
             )
            )
          
@@ -4115,102 +4111,101 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:MenuEditor::ItemMenu andSelector:#basicsEditSpec
+     UIPainter new openOnClass:MenuEditor::RegularMenuItem andSelector:#basicsEditSpec
     "
 
     <resource: #canvas>
 
     ^ 
-     #(#FullSpec
-        #name: #basicsEditSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'basicsEditSpec'
-          #name: 'basicsEditSpec'
-          #min: #(#Point 10 10)
-          #max: #(#Point 1160 870)
-          #bounds: #(#Rectangle 810 135 1150 475)
+     #(FullSpec
+        name: basicsEditSpec
+        window: 
+       (WindowSpec
+          label: 'basicsEditSpec'
+          name: 'basicsEditSpec'
+          min: (Point 10 10)
+          bounds: (Rectangle 14 46 354 386)
         )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#LabelSpec
-              #label: 'Name Key:'
-              #name: 'nameKeyLabel'
-              #layout: #(#AlignmentOrigin 107 0 25 0 1 0.5)
-              #activeHelpKey: #basicsKey
-              #visibilityChannel: #notDelayedMenu
-              #resizeForLabel: true
-              #adjust: #right
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Name Key:'
+              name: 'nameKeyLabel'
+              layout: (AlignmentOrigin 107 0 25 0 1 0.5)
+              activeHelpKey: basicsKey
+              visibilityChannel: notDelayedMenu
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'nameKeyField'
-              #layout: #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
-              #activeHelpKey: #basicsKey
-              #visibilityChannel: #notDelayedMenu
-              #tabable: true
-              #model: #nameKey
-              #group: #inputGroup
-              #type: #symbolOrNil
-              #immediateAccept: false
-              #acceptOnLeave: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: false
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'nameKeyField'
+              layout: (LayoutFrame 110 0 15 0 -5 1.0 37 0)
+              activeHelpKey: basicsKey
+              visibilityChannel: notDelayedMenu
+              tabable: true
+              model: nameKey
+              group: inputGroup
+              type: symbolOrNil
+              immediateAccept: false
+              acceptOnLeave: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: false
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Label:'
-              #name: 'labelLabel'
-              #layout: #(#AlignmentOrigin 107 0 51 0 1 0.5)
-              #activeHelpKey: #basicsLabel
-              #visibilityChannel: #notDelayedMenu
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Label:'
+              name: 'labelLabel'
+              layout: (AlignmentOrigin 107 0 51 0 1 0.5)
+              activeHelpKey: basicsLabel
+              visibilityChannel: notDelayedMenu
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'labelField'
-              #layout: #(#LayoutFrame 110 0 40 0 -5 1.0 62 0)
-              #activeHelpKey: #basicsLabel
-              #visibilityChannel: #notDelayedMenu
-              #tabable: true
-              #model: #rawLabel
-              #group: #inputGroup
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: false
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'labelField'
+              layout: (LayoutFrame 110 0 40 0 -5 1.0 62 0)
+              activeHelpKey: basicsLabel
+              visibilityChannel: notDelayedMenu
+              tabable: true
+              model: rawLabel
+              group: inputGroup
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: false
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#CheckBoxSpec
-              #label: 'Translate Label'
-              #name: 'translateLabelCheckBox'
-              #layout: #(#Point 20 213)
-              #activeHelpKey: #basicsTranslateLabel
-              #visibilityChannel: #notDelayedMenu
-              #tabable: true
-              #model: #translateLabel
+           (CheckBoxSpec
+              label: 'Translate Label'
+              name: 'translateLabelCheckBox'
+              layout: (Point 20 213)
+              activeHelpKey: basicsTranslateLabel
+              visibilityChannel: notDelayedMenu
+              tabable: true
+              model: translateLabel
             )
-           #(#CheckBoxSpec
-              #label: 'Is Button'
-              #name: 'isButtonCheckBox'
-              #layout: #(#Point 20 238)
-              #activeHelpKey: #basicsIsButton
-              #visibilityChannel: #notDelayedMenu
-              #tabable: true
-              #model: #isButton
+           (CheckBoxSpec
+              label: 'Is Button'
+              name: 'isButtonCheckBox'
+              layout: (Point 20 238)
+              activeHelpKey: basicsIsButton
+              visibilityChannel: notDelayedMenu
+              tabable: true
+              model: isButton
             )
-           #(#CheckBoxSpec
-              #label: 'Horizontal Layout'
-              #name: 'horizontalLayout'
-              #layout: #(#Point 20 263)
-              #activeHelpKey: #horizontalLayout
-              #tabable: true
-              #model: #horizontalLayout
+           (CheckBoxSpec
+              label: 'Horizontal Layout'
+              name: 'horizontalLayout'
+              layout: (Point 20 263)
+              activeHelpKey: horizontalLayout
+              tabable: true
+              model: horizontalLayout
             )
            )
          
@@ -4375,115 +4370,114 @@
     <resource: #canvas>
 
     ^ 
-     #(#FullSpec
-	#name: #windowSpec
-	#window: 
-       #(#WindowSpec
-	  #label: 'Image Item'
-	  #name: 'Image Item'
-	  #min: #(#Point 10 10)
-	  #max: #(#Point 1280 1024)
-	  #bounds: #(#Rectangle 333 290 621 585)
-	)
-	#component: 
-       #(#SpecCollection
-	  #collection: #(
-	   #(#LabelSpec
-	      #label: 'Retriever:'
-	      #name: 'retrieverLabel'
-	      #layout: #(#AlignmentOrigin 107 0 26 0 1 0.5)
-	      #activeHelpKey: #imageRetriever
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#ComboBoxSpec
-	      #name: 'retrieverHolder'
-	      #layout: #(#LayoutFrame 110 0 15 0 -20 1.0 37 0)
-	      #activeHelpKey: #imageRetriever
-	      #tabable: true
-	      #model: #retrieverHolder
-	      #type: #symbolOrNil
-	      #immediateAccept: true
-	      #acceptOnReturn: false
-	      #acceptOnTab: false
-	      #acceptOnPointerLeave: false
-	      #comboList: #retrieverList
-	      #isFilenameBox: false
-	    )
-	   #(#LabelSpec
-	      #label: 'Selector:'
-	      #name: 'iconLabel'
-	      #layout: #(#AlignmentOrigin 107 0 51 0 1 0.5)
-	      #activeHelpKey: #imageSelector
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#InputFieldSpec
-	      #name: 'selectorHolder'
-	      #layout: #(#LayoutFrame 110 0 40 0 -42 1.0 62 0)
-	      #activeHelpKey: #imageSelector
-	      #tabable: true
-	      #model: #selectorHolder
-	      #group: #inputGroup
-	      #type: #symbolOrNil
-	      #immediateAccept: true
-	      #acceptOnReturn: false
-	      #acceptOnTab: false
-	      #modifiedChannel: #modifiedChannel
-	      #acceptOnPointerLeave: false
-	    )
-	   #(#ActionButtonSpec
-	      #label: '...'
-	      #name: 'browseButton'
-	      #layout: #(#LayoutFrame -40 1 40 0 -20 1 62 0)
-	      #activeHelpKey: #browseResource
-	      #tabable: true
-	      #model: #doBrowseForImageResource
-	    )
-	   #(#HierarchicalListViewSpec
-	      #name: 'imageList'
-	      #layout: #(#LayoutFrame 20 0.0 67 0 -20 1.0 -30 1.0)
-	      #activeHelpKey: #imageImageList
-	      #model: #imageHolder
-	      #menu: #menuEditImage
-	      #hasHorizontalScrollBar: true
-	      #hasVerticalScrollBar: true
-	      #miniScrollerHorizontal: true
-	      #listModel: #imageList
-	      #useIndex: false
-	      #highlightMode: #label
-	      #postBuildCallback: #postBuildImageViewer:
-	    )
-	   #(#ViewSpec
-	      #name: 'Box1'
-	      #layout: #(#LayoutFrame 20 0.0 -30 1.0 -20 1.0 0 1.0)
-	      #level: 0
-	      #component: 
-	     #(#SpecCollection
-		#collection: #(
-		 #(#CheckBoxSpec
-		    #label: 'Image & Label'
-		    #name: 'iconAndLabelCheckBox'
-		    #layout: #(#AlignmentOrigin 0 0 0 0.5 0 0.5)
-		    #activeHelpKey: #imageImageAndLabel
-		    #tabable: true
-		    #model: #iconAndLabelHolder
-		  )
-		 #(#ActionButtonSpec
-		    #label: 'Image Editor'
-		    #name: 'imageEditorButton'
-		    #layout: #(#AlignmentOrigin 0 1.0 0 0.5 1 0.5)
-		    #activeHelpKey: #imageImageEditor
-		    #tabable: true
-		    #model: #doEditImage
-		  )
-		 )
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'Image Item'
+          name: 'Image Item'
+          min: (Point 10 10)
+          bounds: (Rectangle 14 46 302 341)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Retriever:'
+              name: 'retrieverLabel'
+              layout: (AlignmentOrigin 107 0 26 0 1 0.5)
+              activeHelpKey: imageRetriever
+              resizeForLabel: true
+              adjust: right
+            )
+           (ComboBoxSpec
+              name: 'retrieverHolder'
+              layout: (LayoutFrame 110 0 15 0 -20 1.0 37 0)
+              activeHelpKey: imageRetriever
+              tabable: true
+              model: retrieverHolder
+              type: symbolOrNil
+              immediateAccept: true
+              acceptOnReturn: false
+              acceptOnTab: false
+              acceptOnPointerLeave: false
+              comboList: retrieverList
+              isFilenameBox: false
+            )
+           (LabelSpec
+              label: 'Selector:'
+              name: 'iconLabel'
+              layout: (AlignmentOrigin 107 0 51 0 1 0.5)
+              activeHelpKey: imageSelector
+              resizeForLabel: true
+              adjust: right
+            )
+           (InputFieldSpec
+              name: 'selectorHolder'
+              layout: (LayoutFrame 110 0 40 0 -42 1.0 62 0)
+              activeHelpKey: imageSelector
+              tabable: true
+              model: selectorHolder
+              group: inputGroup
+              type: symbolOrNil
+              immediateAccept: true
+              acceptOnReturn: false
+              acceptOnTab: false
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
+            )
+           (ActionButtonSpec
+              label: '...'
+              name: 'browseButton'
+              layout: (LayoutFrame -40 1 40 0 -20 1 62 0)
+              activeHelpKey: browseResource
+              tabable: true
+              model: doBrowseForImageResource
+            )
+           (HierarchicalListViewSpec
+              name: 'imageList'
+              layout: (LayoutFrame 20 0.0 67 0 -20 1.0 -30 1.0)
+              activeHelpKey: imageImageList
+              model: imageHolder
+              menu: menuEditImage
+              hasHorizontalScrollBar: true
+              hasVerticalScrollBar: true
+              miniScrollerHorizontal: true
+              listModel: imageList
+              useIndex: false
+              highlightMode: label
+              postBuildCallback: postBuildImageViewer:
+            )
+           (ViewSpec
+              name: 'Box1'
+              layout: (LayoutFrame 20 0.0 -30 1.0 -20 1.0 0 1.0)
+              level: 0
+              component: 
+             (SpecCollection
+                collection: (
+                 (CheckBoxSpec
+                    label: 'Image & Label'
+                    name: 'iconAndLabelCheckBox'
+                    layout: (AlignmentOrigin 0 0 0 0.5 0 0.5)
+                    activeHelpKey: imageImageAndLabel
+                    tabable: true
+                    model: iconAndLabelHolder
+                  )
+                 (ActionButtonSpec
+                    label: 'Image Editor'
+                    name: 'imageEditorButton'
+                    layout: (AlignmentOrigin 0 1.0 0 0.5 1 0.5)
+                    activeHelpKey: imageImageEditor
+                    tabable: true
+                    model: doEditImage
+                  )
+                 )
                
-	      )
-	    )
-	   )
+              )
+            )
+           )
          
-	)
+        )
       )
 ! !
 
@@ -4837,51 +4831,50 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:MenuEditor::ItemRoot andSelector:#basicsEditSpec
+     UIPainter new openOnClass:MenuEditor::RootItem andSelector:#basicsEditSpec
     "
 
     <resource: #canvas>
 
     ^ 
-     #(#FullSpec
-	#name: #basicsEditSpec
-	#window: 
-       #(#WindowSpec
-	  #label: 'basicsEditSpec'
-	  #name: 'basicsEditSpec'
-	  #min: #(#Point 10 10)
-	  #max: #(#Point 1280 1024)
-	  #bounds: #(#Rectangle 644 547 904 593)
-	)
-	#component: 
-       #(#SpecCollection
-	  #collection: #(
-	   #(#LabelSpec
-	      #label: 'Selector:'
-	      #name: 'selectorLabel'
-	      #layout: #(#AlignmentOrigin 107 0 26 0 1 0.5)
-	      #activeHelpKey: #basicsSelector
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#InputFieldSpec
-	      #name: 'selectorField'
-	      #layout: #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
-	      #activeHelpKey: #basicsSelector
-	      #tabable: true
-	      #model: #rawLabel
-	      #group: #inputGroup
-	      #type: #string
-	      #immediateAccept: false
-	      #acceptOnReturn: true
-	      #acceptOnTab: true
-	      #acceptChannel: #acceptChannel
-	      #modifiedChannel: #modifiedChannel
-	      #acceptOnPointerLeave: false
-	    )
-	   )
+     #(FullSpec
+        name: basicsEditSpec
+        window: 
+       (WindowSpec
+          label: 'basicsEditSpec'
+          name: 'basicsEditSpec'
+          min: (Point 10 10)
+          bounds: (Rectangle 14 46 274 92)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Selector:'
+              name: 'selectorLabel'
+              layout: (AlignmentOrigin 107 0 26 0 1 0.5)
+              activeHelpKey: basicsSelector
+              resizeForLabel: true
+              adjust: right
+            )
+           (InputFieldSpec
+              name: 'selectorField'
+              layout: (LayoutFrame 110 0 15 0 -5 1.0 37 0)
+              activeHelpKey: basicsSelector
+              tabable: true
+              model: rawLabel
+              group: inputGroup
+              type: string
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
+            )
+           )
          
-	)
+        )
       )
 ! !
 
@@ -5018,80 +5011,79 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:MenuEditor::ItemSeparator andSelector:#basicsEditSpec
+     UIPainter new openOnClass:MenuEditor::SeparatorItem andSelector:#basicsEditSpec
     "
 
     <resource: #canvas>
 
     ^ 
-     #(#FullSpec
-        #name: #basicsEditSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'basicsEditSpec'
-          #name: 'basicsEditSpec'
-          #min: #(#Point 10 10)
-          #max: #(#Point 1160 870)
-          #bounds: #(#Rectangle 160 398 420 643)
+     #(FullSpec
+        name: basicsEditSpec
+        window: 
+       (WindowSpec
+          label: 'basicsEditSpec'
+          name: 'basicsEditSpec'
+          min: (Point 10 10)
+          bounds: (Rectangle 14 46 274 291)
         )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#LabelSpec
-              #label: 'Separator:'
-              #name: 'separatorLabel'
-              #layout: #(#AlignmentOrigin 107 0 26 0 1 0.5)
-              #resizeForLabel: true
-              #adjust: #right
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Separator:'
+              name: 'separatorLabel'
+              layout: (AlignmentOrigin 107 0 26 0 1 0.5)
+              resizeForLabel: true
+              adjust: right
             )
-           #(#ComboListSpec
-              #name: 'seperatorList'
-              #layout: #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
-              #activeHelpKey: #basicsSeparatorType
-              #tabable: true
-              #model: #seperatorSelection
-              #comboList: #seperatorList
-              #useIndex: true
+           (ComboListSpec
+              name: 'seperatorList'
+              layout: (LayoutFrame 110 0 15 0 -5 1.0 37 0)
+              activeHelpKey: basicsSeparatorType
+              tabable: true
+              model: seperatorSelection
+              comboList: seperatorList
+              useIndex: true
             )
-           #(#LabelSpec
-              #label: 'Visibility:'
-              #name: 'visibilityLabel'
-              #layout: #(#AlignmentOrigin 107 0 51 0 1 0.5)
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Visibility:'
+              name: 'visibilityLabel'
+              layout: (AlignmentOrigin 107 0 51 0 1 0.5)
+              resizeForLabel: true
+              adjust: right
             )
-           #(#InputFieldSpec
-              #name: 'visibilityInputField'
-              #layout: #(#LayoutFrame 110 0 40 0 -5 1.0 62 0)
-              #activeHelpKey: #detailsVisibility
-              #tabable: true
-              #model: #isVisible
-              #group: #inputGroup
-              #type: #symbolOrBooleanOrNil
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptChannel: #acceptChannel
-              #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+           (InputFieldSpec
+              name: 'visibilityInputField'
+              layout: (LayoutFrame 110 0 40 0 -5 1.0 62 0)
+              activeHelpKey: detailsVisibility
+              tabable: true
+              model: isVisible
+              group: inputGroup
+              type: symbolOrBooleanOrNil
+              immediateAccept: false
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptChannel: acceptChannel
+              modifiedChannel: modifiedChannel
+              acceptOnPointerLeave: false
             )
-           #(#LabelSpec
-              #label: 'Start Group:'
-              #name: 'startGroupLabel'
-              #layout: #(#AlignmentOrigin 107 0 88 0 1 0.5)
-              #resizeForLabel: true
-              #adjust: #right
+           (LabelSpec
+              label: 'Start Group:'
+              name: 'startGroupLabel'
+              layout: (AlignmentOrigin 107 0 88 0 1 0.5)
+              resizeForLabel: true
+              adjust: right
             )
-           #(#PopUpListSpec
-              #label: 'left'
-              #name: 'startGroupPopUp'
-              #layout: #(#LayoutFrame 110 0 77 0 -5 1.0 99 0)
-              #activeHelpKey: #detailsStartGroup
-              #tabable: true
-              #model: #startGroup
-              #menu: 
-             #(#left
-                #right
+           (PopUpListSpec
+              label: 'left'
+              name: 'startGroupPopUp'
+              layout: (LayoutFrame 110 0 77 0 -5 1.0 99 0)
+              activeHelpKey: detailsStartGroup
+              tabable: true
+              model: startGroup
+              menu: 
+             (left
+                right
               )
             )
            )