TabListEditor.st
changeset 1374 635e878e5c09
parent 1373 623e692f53fc
child 1375 bab043fa81fa
--- a/TabListEditor.st	Thu Apr 13 14:32:20 2000 +0200
+++ b/TabListEditor.st	Thu Apr 13 18:12:48 2000 +0200
@@ -652,7 +652,7 @@
           #name: 'Tab List Editor'
           #min: #(#Point 440 280)
           #max: #(#Point 1152 900)
-          #bounds: #(#Rectangle 17 449 488 816)
+          #bounds: #(#Rectangle 12 22 548 391)
           #menu: #menu
         )
         #component: 
@@ -675,6 +675,8 @@
                    #(#vpext
                       
                      #(#Array
+                        #Array #Array
+                        #Array #Array
                         #Point 0.264414
                         1.0
                       )
@@ -699,6 +701,8 @@
                        #(#NoteBookViewSpec
                           #name: 'NoteBook'
                           #layout: #(#LayoutFrame 1 0.0 0 0.0 0 1.0 -30 1.0)
+                          #visibilityChannel: #hasSelectionHolder
+                          #tabable: true
                           #model: #noteBookModel
                           #menu: #noteBookTabList
                           #useIndex: true
@@ -714,6 +718,7 @@
                           #name: 'TestNoteBook'
                           #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
                           #visibilityChannel: #testMode
+                          #tabable: true
                           #menu: #testItemList
                           #useIndex: true
                         )
@@ -941,56 +946,71 @@
 
     <resource: #menu>
 
-    ^
-     
-       #(#Menu
-          
-           #(
-             #(#MenuItem
-                #label: 'Cut'
-                #value: #doCut
-                #activeHelpKey: #editCut
-                #enabled: #valueOfCanCut
-            )
-             #(#MenuItem
-                #label: 'Copy'
-                #value: #doCopy
-                #activeHelpKey: #editCopy
-                #enabled: #valueOfCanCopy
-            )
-             #(#MenuItem
-                #label: 'Paste'
-                #value: #doPaste
-                #activeHelpKey: #editPaste
-                #enabled: #valueOfCanPaste
-            )
-             #(#MenuItem
-                #label: 'Delete'
-                #value: #doDelete
-                #activeHelpKey: #editPaste
-                #enabled: #valueOfCanCut
-            )
-             #(#MenuItem
-                #label: '-'
-            )
-             #(#MenuItem
-                #label: 'Move Up'
-                #value: #doMoveTabUpOrDown:
-                #activeHelpKey: #editMoveUp
-                #enabled: #canMoveTabItemUpOrDown
-                #argument: #up
-                #labelImage: #(#ResourceRetriever #Icon #upIcon 'Move Up')
-            )
-             #(#MenuItem
-                #label: 'Move Down'
-                #value: #doMoveTabUpOrDown:
-                #activeHelpKey: #editMoveDown
-                #enabled: #canMoveTabItemUpOrDown
-                #argument: #down
-                #labelImage: #(#ResourceRetriever #Icon #downIcon 'Move Down')
-            )
-          ) nil
-          nil
+    ^ 
+     #(#Menu
+        #(
+         #(#MenuItem
+            #label: 'Cut'
+            #value: #doCut
+            #activeHelpKey: #editCut
+            #enabled: #hasSelectionHolder
+            #shortcutKeyCharacter: #Cut
+          )
+         #(#MenuItem
+            #label: 'Copy'
+            #value: #doCopy
+            #activeHelpKey: #editCopy
+            #enabled: #hasSelectionHolder
+            #shortcutKeyCharacter: #Copy
+          )
+         #(#MenuItem
+            #label: 'Paste'
+            #value: #doPaste
+            #activeHelpKey: #editPaste
+            #enabled: #valueOfCanPaste
+            #shortcutKeyCharacter: #Paste
+          )
+         #(#MenuItem
+            #label: 'Delete'
+            #value: #doDelete
+            #activeHelpKey: #editPaste
+            #enabled: #hasSelectionHolder
+            #shortcutKeyCharacter: #Delete
+          )
+         #(#MenuItem
+            #label: '-'
+          )
+         #(#MenuItem
+            #label: 'Move Up'
+            #value: #doMoveTabUpOrDown:
+            #activeHelpKey: #editMoveUp
+            #enabled: #canMoveTabItemUpOrDown
+            #argument: #up
+            #labelImage: #(#ResourceRetriever #Icon #upIcon 'Move Up')
+          )
+         #(#MenuItem
+            #label: 'Move Down'
+            #value: #doMoveTabUpOrDown:
+            #activeHelpKey: #editMoveDown
+            #enabled: #canMoveTabItemUpOrDown
+            #argument: #down
+            #labelImage: #(#ResourceRetriever #Icon #downIcon 'Move Down')
+          )
+         #(#MenuItem
+            #label: '-'
+            #isVisible: #hiddenAccelerator
+          )
+         #(#MenuItem
+            #label: 'Accept'
+            #translateLabel: true
+            #isVisible: #hiddenAccelerator
+            #value: #accept
+            #enabled: #valueOfEnablingCommitButtons
+            #shortcutKeyCharacter: #Accept
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -1040,7 +1060,7 @@
             #isButton: true
             #value: #doCut
             #activeHelpKey: #editCut
-            #enabled: #valueOfCanCut
+            #enabled: #hasSelectionHolder
             #labelImage: #(#ResourceRetriever #Icon #cutIcon)
           )
          #(#MenuItem
@@ -1048,7 +1068,7 @@
             #isButton: true
             #value: #doCopy
             #activeHelpKey: #editCopy
-            #enabled: #valueOfCanCopy
+            #enabled: #hasSelectionHolder
             #labelImage: #(#ResourceRetriever #Icon #copyIcon)
           )
          #(#MenuItem
@@ -1064,7 +1084,7 @@
             #isButton: true
             #value: #doDelete
             #activeHelpKey: #editDelete
-            #enabled: #valueOfCanCut
+            #enabled: #hasSelectionHolder
             #labelImage: #(#ResourceRetriever #Icon #deleteIcon)
           )
          #(#MenuItem
@@ -1137,6 +1157,10 @@
     ^ holder.
 !
 
+hasSelectionHolder
+    ^ builder booleanValueAspectFor:#hasSelectionHolder
+!
+
 hasVerticalScrollBar
     "automatically generated by UIPainter ..."
 
@@ -1154,6 +1178,12 @@
     ^ holder.
 !
 
+hiddenAccelerator
+    "used to set menu entries with an accelerator not visible to the operator
+    "
+    ^ false
+!
+
 inputGroup
 
     |holder|
@@ -1331,12 +1361,7 @@
     ].
 
     modified := false.
-
-    listOfTabs notEmpty ifTrue:[
-        self selection:1
-    ].
-
-    self updateInfoLabel
+    listOfTabs notEmpty ifTrue:[ self selection:1 ].
 !
 
 buildFromResourceSpec:aListSpec
@@ -1349,16 +1374,10 @@
     self selection:0.
     listOfTabs removeAll.
 
-    aTabList do:[:aTabItem|
-        listOfTabs add: aTabItem.
-    ].
+    aTabList do:[:aTabItem| listOfTabs add: aTabItem ].
     modified := false.
+    listOfTabs notEmpty ifTrue:[ self selection:1 ].
 
-    listOfTabs notEmpty ifTrue:[
-        self selection:1
-    ].
-
-    self updateInfoLabel
 ! !
 
 !TabListEditor methodsFor:'change & update'!
@@ -1366,7 +1385,7 @@
 update:something with:aParameter from:someObject
     "one of my aspects has changed; update modified channel
     "
-    |list size index|
+    |list|
 
     someObject = self selectionHolder ifTrue:[
         ^ self selectionChanged
@@ -1376,22 +1395,16 @@
         ^ super update:something with:aParameter from:someObject.
     ].
 
-    size := listOfTabs size.
-
     someObject value ifTrue:[
-        index := 0.
-
-        size ~~ 0 ifTrue:[
+        listOfTabs notEmpty ifTrue:[
             list := listOfTabs collect:[:aTab| |tab|
                 tab := aTab copy.
                 tab setAttributesFromClass:specClass.
                 tab
-            ].
-        ]
-    ] ifFalse:[
-        index := 1 min:size
+            ]
+        ].
+        self selection:0.
     ].
-    self selectionHolder value:index.
     self testItemList value:list.
     self updateInfoLabel.
 
@@ -1449,13 +1462,15 @@
         noteBookModel value:0
     ].
     self cancel.
-    self valueOfCanCut  value:hasSelection.
-    self valueOfCanCopy value:hasSelection.
+    self hasSelectionHolder value:hasSelection.
     self valueOfCanPaste.
 !
 
 setSelection:anIndex
-    self selectionHolder value:(anIndex ? 0) withoutNotifying:self
+    |index|
+
+    index := anIndex ? 0.
+    self selectionHolder value:index withoutNotifying:self
 ! !
 
 !TabListEditor methodsFor:'startup / release'!
@@ -1562,13 +1577,20 @@
 doDelete
     "delete selected tab
     "
-    |index|
+    |index size|
 
     (index := self selection) ~~ 0 ifTrue:[
         self testMode value: false.
-        self setSelection:0.
+
+        (size := listOfTabs size) == 1 ifTrue:[
+            self selection:0
+        ] ifFalse:[
+            self setSelection:0
+        ].
         listOfTabs removeIndex:index.
-        index > listOfTabs size ifTrue:[index := index - 1].
+        index < size ifFalse:[
+            index := index - 1
+        ].
         self selection:index.
         self updateAllToolInstances.
         modified := true.