use more functionality provided by base class
authorca
Tue, 02 Sep 1997 14:21:17 +0200
changeset 298 cec1f174397e
parent 297 14db1276218c
child 299 62009576ca33
use more functionality provided by base class
MenuEditor.st
--- a/MenuEditor.st	Wed Aug 27 17:04:54 1997 +0200
+++ b/MenuEditor.st	Tue Sep 02 14:21:17 1997 +0200
@@ -1319,6 +1319,14 @@
     ^ self class menuPainter
 
 
+!
+
+menuPullDown
+    "this window spec was automatically generated by the ST/X MenuEditor"
+
+    ^ self class menuPullDown
+
+
 ! !
 
 !MenuEditor methodsFor:'actions'!
@@ -1435,9 +1443,14 @@
 tabList
     "automatically generated by UIPainter ..."
 
-    ^ builder nilValueAspectFor:#tabList
-
-    "Modified: 28.7.1997 / 13:11:17 / cg"
+    |holder|
+
+    (holder := builder bindingAt:#tabList) isNil ifTrue:[
+        builder aspectAt:#tabList put:(holder := #('Properties') asValue).
+    ].
+    ^ holder
+
+
 !
 
 tabModel
@@ -1511,140 +1524,6 @@
 
 ! !
 
-!MenuEditor methodsFor:'interface specs'!
-
-menuPullDown
-    "this window spec was automatically generated by the ST/X MenuEditor"
-
-    "do not manually edit this - the builder may not be able to
-     handle the specification if its corrupted."
-
-    "
-     MenuEditor new openOnClass:MenuEditor andSelector:#menuPullDown
-     (Menu new fromLiteralArrayEncoding:(MenuEditor menuPullDown)) startUp
-    "
-
-    <resource: #menu>
-
-    ^
-     
-       #(#Menu
-          
-           #(
-             #(#MenuItem
-                #'label:' 'file'
-                #'value:' #file
-                #'submenu:' 
-                 #(#Menu
-                    
-                     #(
-                       #(#MenuItem
-                          #'label:' 'new'
-                          #'value:' #doNew
-                      )
-                       #(#MenuItem
-                          #'label:' 'from class ...'
-                          #'value:' #doFromClass
-                          #'enabled:' #isStandAlone
-                      )
-                       #(#MenuItem
-                          #'label:' 'pick a menu'
-                          #'value:' #doPickAMenu
-                          #'enabled:' #isStandAlone
-                      )
-                       #(#MenuItem
-                          #'label:' '='
-                      )
-                       #(#MenuItem
-                          #'label:' 'quit'
-                          #'value:' #closeRequest
-                      )
-                    ) nil
-                    nil
-                )
-            )
-             #(#MenuItem
-                #'label:' 'edit'
-                #'submenu:' 
-                 #(#Menu
-                    
-                     #(
-                       #(#MenuItem
-                          #'label:' 'cut'
-                          #'value:' #doCut
-                      )
-                       #(#MenuItem
-                          #'label:' '='
-                      )
-                       #(#MenuItem
-                          #'label:' 'create submenu static'
-                          #'value:' #doCreateMenu
-                      )
-                       #(#MenuItem
-                          #'label:' 'create summenu dynamic'
-                          #'value:' #doCreateLink
-                      )
-                       #(#MenuItem
-                          #'label:' '-'
-                      )
-                       #(#MenuItem
-                          #'label:' 'create item'
-                          #'value:' #doCreateItem
-                      )
-                       #(#MenuItem
-                          #'label:' 'create separator'
-                          #'value:' #doCreateSep
-                      )
-                    ) nil
-                    nil
-                )
-            )
-             #(#MenuItem
-                #'label:' 'code'
-                #'value:' #code
-                #'submenu:' 
-                 #(#Menu
-                    
-                     #(
-                       #(#MenuItem
-                          #'label:' 'class'
-                          #'value:' #doDefineClass
-                          #'enabled:' #isStandAlone
-                      )
-                       #(#MenuItem
-                          #'label:' '-'
-                      )
-                       #(#MenuItem
-                          #'label:' 'install menu spec.'
-                          #'value:' #doInstallSpec
-                      )
-                       #(#MenuItem
-                          #'label:' 'install help spec.'
-                          #'value:' #doInstallHelp
-                          #'enabled:' #isStandAlone
-                      )
-                       #(#MenuItem
-                          #'label:' '='
-                      )
-                       #(#MenuItem
-                          #'label:' 'browse application'
-                          #'value:' #doBrowseAppClass
-                      )
-                    ) nil
-                    nil
-                )
-            )
-             #(#MenuItem
-                #'label:' 'test'
-                #'submenuChannel:' #submenuTest
-            )
-          ) nil
-          nil
-      )
-
-    "Modified: 28.7.1997 / 18:12:10 / cg"
-! !
-
 !MenuEditor methodsFor:'private'!
 
 helpKey
@@ -1747,7 +1626,9 @@
     tabSelection = aSelection ifTrue:[
         ^ self
     ].
-
+    (aSelection ~~ 0 and:[slices isNil]) ifTrue:[
+        ^ self
+    ].
     (tabSelection := aSelection) == 0 ifTrue:[
         slices isNil ifTrue:[
             specCanvas client:nil.
@@ -1765,6 +1646,7 @@
         specCanvas client:self spec:(self class perform:sel) builder:builder.
         specCanvas raise.
     ]    
+
 ! !
 
 !MenuEditor methodsFor:'startup / release'!
@@ -2013,22 +1895,22 @@
 doStepDown
     "move selected child after next child
     "
-    self painter doStepOver:1
+    self painter selectedNodeChangeSequenceOrder:1
 !
 
 doStepIn
-    self painter doStepIn
+    self painter selectedNodeBecomeChildOfNext
 
 !
 
 doStepOut
-    self painter doStepOut
+    self painter selectedNodeBecomeSisterOfParent
 !
 
 doStepUp
     "move selected child after next child
     "
-    self painter doStepOver:-1
+    self painter selectedNodeChangeSequenceOrder:-1
 ! !
 
 !MenuEditor methodsFor:'values'!
@@ -2179,6 +2061,14 @@
         shortcutKey         := (aspects at:#shortcutKey) value.
         accessCharaterPos   := (aspects at:#accessCharaterPos) value.
         argument            := (aspects at:#argument) value.
+
+        argument isString ifTrue:[
+            argument size > 1 ifTrue:[
+                (argument at:1) == $# ifTrue:[
+                    argument := (argument copyFrom:2) asSymbol
+                ]
+            ]
+        ].
         submenuChannel      := (aspects at:#submenuChannel)    value.
         retriever           := (aspects at:#retriever) value.
         icon                := (aspects at:#icon) value.
@@ -2239,7 +2129,12 @@
         (aspects at:#indication)            value:indication.
         (aspects at:#shortcutKey)           value:shortcutKey.
         (aspects at:#accessCharaterPos)     value:accessCharaterPos.
-        (aspects at:#argument)              value:argument.
+
+        argument isSymbol ifTrue:[
+            (aspects at:#argument) value:'#', argument
+        ] ifFalse:[
+            (aspects at:#argument) value:argument.
+        ].
         (aspects at:#submenuChannel)        value:submenuChannel.
         (aspects at:#retriever)             value:retriever.
         (aspects at:#icon)                  value:icon.
@@ -2334,10 +2229,6 @@
 
 !MenuEditor::Painter methodsFor:'accessing'!
 
-root
-    ^ listOfNodes first
-!
-
 selectorName
     ^ (listOfNodes first contents label) asSymbol
 ! !
@@ -2356,7 +2247,11 @@
         ]
     ].
     spec isNil ifFalse:[
-        menu := Menu new fromLiteralArrayEncoding:spec.
+        (spec isMemberOf:Menu) ifFalse:[
+            menu := Menu new fromLiteralArrayEncoding:spec.
+        ] ifTrue:[
+            menu := spec.
+        ].
         node := self nodeLabel:(aSelector asString).
         self subMenu:menu parent:node.
     ] ifTrue:[
@@ -2575,10 +2470,7 @@
 
 doCut
     self doCopy.
-    model removeSelection.
-    self selection:nil.
-
-
+    self selectedNodesRemove.
 !
 
 doPaste
@@ -2586,79 +2478,6 @@
     (CopyBuffer notNil and:[self selectedNode notNil]) ifTrue:[
         self addElement:(CopyBuffer collect:[:el| el copy])
     ].
-!
-
-doStepIn
-    |idx node cprt nprt|
-
-    (    (node := self selectedNode) isNil
-     or:[(cprt := node parent) isNil]
-    ) ifTrue:[
-        ^ self
-    ].
-
-    idx := cprt indexOfChild:node.
-
-    idx == cprt children size ifTrue:[
-        ^ self
-    ].
-    nprt := cprt childAt:(idx + 1).
-
-    (nprt notNil and:[nprt hasChildren]) ifFalse:[
-       ^ self
-    ].
-
-    model removeDependent:self.
-    model removeSelection.
-    selection := nil.
-    model expand:nprt.
-    model addDependent:self.
-
-    model add:node beforeIndex:1 below:nprt.
-    self selectNode:node.
-!
-
-doStepOut
-    |node cprt nprt|
-
-    (    (node := self selectedNode) isNil
-     or:[(cprt := node parent) isNil
-     or:[(nprt := cprt parent) isNil]]
-    ) ifFalse:[
-        model removeDependent:self.
-        model removeSelection.
-        selection := nil.
-        model addDependent:self.
-
-        model add:node afterIndex:(nprt indexOfChild:cprt) below:nprt.
-        self selectNode:node.
-    ]
-!
-
-doStepOver:anOffset
-    "move child 'anOffset' forward or backward in list of children
-    "
-    |idx node size parent|
-
-    (      (node   := self selectedNode) notNil
-      and:[(parent := node parent) notNil
-      and:[(size   := parent children size) > 1]]
-    ) ifTrue:[
-        idx := parent indexOfChild:node.
-
-        model removeDependent:self.
-        model removeSelection.
-        selection := nil.
-        model addDependent:self.
-
-        (idx := idx + anOffset) < 1 ifTrue:[
-            idx := size
-        ] ifFalse:[
-            idx > size ifTrue:[idx := 1]
-        ].
-        model add:node beforeIndex:idx below:parent.
-        self selectNode:node.
-    ]
 ! !
 
 !MenuEditor::Painter methodsFor:'private'!
@@ -2666,19 +2485,7 @@
 addElement:something
     "add something after selection
     "
-    |node|
-
-    (node := self selectedNode) notNil ifTrue:[
-        node parent notNil ifTrue:[
-            node isCollapsable ifTrue:[
-                model add:something beforeIndex:1 below:node
-            ] ifFalse:[
-                model add:something after:node
-            ]
-        ] ifFalse:[
-            model add:something beforeIndex:1 below:(self root)
-        ]
-    ]
+    self selectedNodeAdd:something
 !
 
 nodeLabel:aLabel