*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Thu, 17 May 2001 13:09:50 +0200
changeset 1468 94fcd912ef88
parent 1467 b46624bb6994
child 1469 b726d8a4b801
*** empty log message ***
MenuEditor.st
--- a/MenuEditor.st	Fri May 11 13:22:03 2001 +0200
+++ b/MenuEditor.st	Thu May 17 13:09:50 2001 +0200
@@ -196,16 +196,16 @@
     ^super helpSpec addPairsFrom:#(
 
 #addMenuItem
-'Adds a new menu item.'
+'Add a new menu item.'
 
 #addMenuSeparator
-'Adds a new menu separator.'
+'Add a new menu separator.'
 
 #addSubMenu
-'Adds a new sub menu.'
+'Add a new sub menu.'
 
 #addSubMenuLink
-'Adds a new linked sub menu.'
+'Add a new linked sub menu.'
 
 #basicsAction
 'An action selector with 0, 1 (the argument field), or 2 (the selected item) arguments.'
@@ -223,7 +223,7 @@
 'Aspect for boolean holder, block, or method, specifying the indication state (CheckToggle behavior).'
 
 #basicsIsButton
-'Turns on/off a button behavior.'
+'Enable/disable button-like behavior.'
 
 #basicsKey
 'Internal key of the item (optional, for programmed accesses).'
@@ -271,28 +271,28 @@
 'Aspect or binding providing a boolean value holder for the visibility-state of the menu item.'
 
 #fileLoad
-'Opens a dialog to select and load a menu spec from a class.'
+'Open a dialog to select and load a menu spec from a class.'
 
 #fileNew
-'Creates a new menu spec.'
+'Create a new menu spec.'
 
 #filePickAMenu
 'Select a menu from an open view and read its specification'
 
 #fileSave
-'Saves the menu spec (and the help spec, if modified).'
+'Save the menu spec (and the help spec, if modified).'
 
 #fileSaveAs
-'Opens a dialog to save the menu spec (and the help spec, if modified).'
+'Open a dialog to save the menu spec (and the help spec, if modified).'
 
 #hideMenuOnActivated
-'If on, the menu hides itself after an item was activated'
+'If on, the menu hides itself after the item was activated.'
 
 #imageImageAndLabel
-'Toggles display of both image and textual label.'
+'Toggle display of both image and textual label.'
 
 #imageImageEditor
-'Opens an Image Editor on the resource method defined by retriever and selector.'
+'Open an Image Editor on the resource method defined by retriever and selector.'
 
 #imageImageList
 'Currently existing image resources.'
@@ -304,13 +304,13 @@
 'Selector returning an image (sent to above or the application).'
 
 #keepLinkedMenu
-'Keep the linked menu after activation (do not destroy)'
+'Keep the linked menu after activation (do not destroy).'
 
 #showBusyCursorWhilePerforming
-'If on, a busy cursor is shown while an items action is performed'
+'If on, a busy cursor is shown while the items action is performing.'
 
 #triggerOnDown
-'If on, the items action is performed on mouse-button press (default is on button-release)'
+'If on, the items action is performed on mouse-button press (default is on button-release).'
 
 )
 ! !
@@ -889,6 +889,7 @@
               #layout: #(#AlignmentOrigin 107 0 26 0 1 0.5)
               #resizeForLabel: true
               #adjust: #right
+              #activeHelpKey: #basicsSelector
             )
            #(#InputFieldSpec
               #name: 'selectorField'
@@ -1947,6 +1948,14 @@
             #labelImage: #(#ResourceRetriever #Icon #downRightIcon)
           )
          #(#MenuItem
+            #label: 'Move In Above'
+            #isButton: true
+            #value: #doStepInAbove
+            #activeHelpKey: #editMoveInAbove
+            #enabled: #valueOfEnableMovingInAbove
+            #labelImage: #(#ResourceRetriever #Icon #upRightIcon)
+          )
+         #(#MenuItem
             #label: 'Move Out'
             #isButton: true
             #value: #doStepOut
@@ -2174,18 +2183,24 @@
 updateChannels
     "update channels"
 
-    |node parent next state canPaste|
+    |node parent next prev state canPaste selectedNodes firstParent
+     enableMovingOut enableMovingIn indices indexOfLast|
+
+    enableMovingOut := enableMovingIn := false.
 
     state := false.   
     node  := treeView selectedNode.
 
     node notNil ifTrue:[
+        "/ single node selected
         self hasAnySingleSelection value:true.
         canPaste := self valueOfCanPaste value.
 
         (parent := node parent) notNil ifTrue:[
             next := parent childAt:((parent indexOfChild:node) + 1).
+            prev := parent childAt:((parent indexOfChild:node) - 1).
             self valueOfEnableMovingIn       value:(next notNil and:[next hasChildren]).
+            self valueOfEnableMovingInAbove  value:(prev notNil and:[prev hasChildren]).
             self valueOfEnableMovingUpOrDown value:(parent children size > 1).
             self valueOfEnableMovingOut      value:parent parent notNil.
             self hasValidSelection           value:true.  
@@ -2193,21 +2208,39 @@
           ^ self
         ].
     ] ifFalse:[
+        "/ multiple nodes selected
         canPaste := false.
 
         self hasAnySingleSelection value:false.
 
         treeView numberOfSelections ~~ 0 ifTrue:[
             canPaste := false.
-            state    := (treeView isInSelection:1) not
+            state    := (treeView isInSelection:1) not.
+
+            selectedNodes := treeView selectedNodes.
+
+            "/ see if all selected nodes have a common parent.
+            firstParent := selectedNodes first parent.
+            (selectedNodes conform:[:eachNode | eachNode parent == firstParent]) ifTrue:[
+                "/ yes - they have
+"/               next := firstParent childAt:((firstParent indexOfChild:node) + 1).
+"/               self valueOfEnableMovingIn       value:(next notNil and:[next hasChildren]).
+                enableMovingOut := firstParent parent notNil.
+"/ self halt.
+
+                indexOfLast := (selectedNodes collect:[:eachNode | firstParent indexOfChild:eachNode]) max.
+                next := firstParent childAt:(indexOfLast + 1).
+                enableMovingIn := (next notNil and:[next hasChildren]).
+            ] ifFalse:[
+"/ self halt.
+            ].
         ]
     ].          
     self valueOfEnableMovingUpOrDown value:false.
-    self valueOfEnableMovingIn       value:false.
-    self valueOfEnableMovingOut      value:false.
+    self valueOfEnableMovingIn       value:enableMovingIn.
+    self valueOfEnableMovingOut      value:enableMovingOut.
     self hasValidSelection           value:state.     
     self valueOfCanPaste             value:canPaste. 
-
 !
 
 updateImageView
@@ -2701,19 +2734,22 @@
 doStepIn
     "move selected menu item into next submenu"
 
-    treeView selectedNodeBecomeChildOfNext.
+    "/ treeView selectedNodeBecomeChildOfNext.
+    treeView selectedNodesBecomeChildrenOfNext.
     modified := true.
-
-
-
-
-
+!
+
+doStepInAbove
+    "move selected menu item into previous submenu"
+
+    treeView selectedNodeBecomeChildOfPrevious.
+    modified := true.
 !
 
 doStepOut
-    "move selected menu item out from parent submenu"
-
-    treeView selectedNodeBecomeSisterOfParent.
+    "move selected menu item(s) out from parent submenu"
+
+    treeView selectedNodesBecomeSistersOfParent.
     modified := true.
 !