removeAllBut
authorClaus Gittinger <cg@exept.de>
Thu, 19 Aug 2004 18:24:46 +0200
changeset 5979 5ac378fa7c95
parent 5978 16b86696ef81
child 5980 3b212684d2d8
removeAllBut
NewSystemBrowser.st
Tools__NewSystemBrowser.st
--- a/NewSystemBrowser.st	Thu Aug 19 12:11:50 2004 +0200
+++ b/NewSystemBrowser.st	Thu Aug 19 18:24:46 2004 +0200
@@ -8350,71 +8350,6 @@
       )
 !
 
-tabMenuWithRemove
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-    "
-     MenuEditor new openOnClass:NewSystemBrowser andSelector:#tabMenu
-     (Menu new fromLiteralArrayEncoding:(NewSystemBrowser tabMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(#Menu
-        #(
-         #(#MenuItem
-            #label: 'Add Buffer'
-            #translateLabel: true
-            #nameKey: #CreateBuffer
-            #value: #bufferMenuCreateBuffer
-          )
-         #(#MenuItem
-            #label: 'Remove Buffer'
-            #translateLabel: true
-            #nameKey: #RemoveBuffer
-            #value: #'bufferMenuRemoveBuffer:'
-            #argument: 0
-          )
-         )
-        nil
-        nil
-      )
-!
-
-tabMenuWithoutRemove
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-    "
-     MenuEditor new openOnClass:NewSystemBrowser andSelector:#tabMenu
-     (Menu new fromLiteralArrayEncoding:(NewSystemBrowser tabMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(#Menu
-        #(
-         #(#MenuItem
-            #label: 'Add buffer'
-            #translateLabel: true
-            #nameKey: #CreateBuffer
-            #value: #bufferMenuCreateBuffer
-          )
-         )
-        nil
-        nil
-      )
-!
-
 variablesMenu
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -9266,6 +9201,78 @@
     ^ self refactoringMenu
 !
 
+tabMenuWithRemove
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+    "
+     MenuEditor new openOnClass:NewSystemBrowser andSelector:#tabMenu
+     (Menu new fromLiteralArrayEncoding:(NewSystemBrowser tabMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(#Menu
+        #(
+         #(#MenuItem
+            #label: 'Add Buffer'
+            #translateLabel: true
+            #nameKey: #CreateBuffer
+            #value: #bufferMenuCreateBuffer
+          )
+         #(#MenuItem
+            #label: 'Remove Buffer <%1>'
+            #translateLabel: true
+            #nameKey: #RemoveBuffer
+            #value: #'bufferMenuRemoveBuffer:'
+            #argument: 0
+          )
+         #(#MenuItem
+            #label: 'Remove all but this Buffer <%1>'
+            #translateLabel: true
+            #nameKey: #RemoveAllButBuffer
+            #value: #'bufferMenuRemoveAllButBuffer:'
+            #argument: 0
+          )
+         )
+        nil
+        nil
+      )
+!
+
+tabMenuWithoutRemove
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+    "
+     MenuEditor new openOnClass:NewSystemBrowser andSelector:#tabMenu
+     (Menu new fromLiteralArrayEncoding:(NewSystemBrowser tabMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(#Menu
+        #(
+         #(#MenuItem
+            #label: 'Add buffer'
+            #translateLabel: true
+            #nameKey: #CreateBuffer
+            #value: #bufferMenuCreateBuffer
+          )
+         )
+        nil
+        nil
+      )
+!
+
 variablesPopUpMenu
     "return the popUpMenu for the variable-list view"
 
@@ -10009,8 +10016,9 @@
 
     m := self class tabMenuWithRemove.
     m := m decodeAsLiteralArray.
-    i := m detectItem:[:item | item itemValue == #bufferMenuRemoveBuffer:] ifNone:nil.
+    i := m detectItem:[:item | item nameKey == #RemoveBuffer] ifNone:nil.
     i notNil ifTrue:[
+        i label:(i label bindWith:index printString).
         i argument:index.
         index ~~ self selectedBuffer value ifTrue:[
             "/ for now: if that buffer is modified,
@@ -10021,6 +10029,11 @@
             ].
         ].
     ].
+    i := m detectItem:[:item | item nameKey == #RemoveAllButBuffer] ifNone:nil.
+    i notNil ifTrue:[
+        i label:(i label bindWith:index printString).
+        i argument:index.
+    ].
     m findGuiResourcesIn:self.
     ^ m
 
@@ -14678,11 +14691,39 @@
     self createBufferForCurrentClassOrSelectionInCodeView.
 !
 
-bufferMenuRemoveBuffer:nr
-    "remove the current buffer"
+bufferMenuRemoveAllButBuffer:nr
+    "remove all other than the numbered buffer"
 
     buffers size > 0 ifTrue:[
-        (self askIfModified:'Code was modified.\\Remove buffer anyway ?')
+        buffers size to:(nr + 1) by:-1 do:[:nr |   "/ buffers after nr
+            (self 
+                askIfModified:'Code was modified.\\Remove buffer anyway ?'
+                in:(buffers at:nr))
+            ifTrue:[
+                self removeBuffer:nr.
+            ].
+        ].
+        nr-1 to:1 by:-1 do:[:nr |   "/ buffers before nr
+            (self 
+                askIfModified:'Code was modified.\\Remove buffer anyway ?'
+                in:(buffers at:nr))
+            ifTrue:[
+                self removeBuffer:nr.
+            ].
+        ].
+    ]
+
+    "Modified: / 11.2.2000 / 10:55:02 / cg"
+!
+
+bufferMenuRemoveBuffer:nr
+    "remove the numbered buffer"
+
+    buffers size > 0 ifTrue:[
+        (self 
+            askIfModified:'Code was modified.\\Remove buffer anyway ?'
+            in:(buffers at:nr)
+        )
         ifTrue:[
             self removeBuffer:nr.
         ].
@@ -14694,9 +14735,7 @@
 bufferMenuRemoveCurrentBuffer
     "remove the current buffer"
 
-    buffers size > 0 ifTrue:[
-        self bufferMenuRemoveBuffer:(selectedBuffer value)
-    ]
+    self bufferMenuRemoveBuffer:(selectedBuffer value)
 !
 
 bufferSelectionChanged
@@ -31456,6 +31495,21 @@
     "Modified: / 11.2.2000 / 12:37:34 / cg"
 !
 
+askIfModified:question default:default in:aNavigationState
+    "if codeView was modified, return the answer from asking question;
+     otherwise, return true"
+
+    ^ self 
+        askIfModified:question 
+        default:default 
+        withAccept:(self canAcceptCode) 
+        withCompare:(self canCompareCode)
+        in:aNavigationState
+
+    "Created: / 11.2.2000 / 10:52:28 / cg"
+    "Modified: / 11.2.2000 / 12:37:34 / cg"
+!
+
 askIfModified:question default:default withAccept:acceptOffered withCompare:compareOffered
     "if codeView was not modified, return true.
      If it was, return the answer from asking question, which can be
@@ -31553,6 +31607,13 @@
     "Modified: / 23.2.2000 / 00:02:29 / cg"
 !
 
+askIfModified:question in:aNavigationState
+    "if codeView was modified, return the answer from asking question;
+     otherwise, return true"
+
+    ^ self askIfModified:question default:false in:aNavigationState
+!
+
 enterBoxForClassWithCodeSelectionTitle:title withList:listOrNil okText:okText
     "convenient method: setup an enterBox with initial text taken 
      from the codeviews selection."
@@ -35869,7 +35930,7 @@
 !NewSystemBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Attic/NewSystemBrowser.st,v 1.769 2004-08-19 10:11:50 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Attic/NewSystemBrowser.st,v 1.770 2004-08-19 16:24:46 cg Exp $'
 ! !
 
 NewSystemBrowser initialize!
--- a/Tools__NewSystemBrowser.st	Thu Aug 19 12:11:50 2004 +0200
+++ b/Tools__NewSystemBrowser.st	Thu Aug 19 18:24:46 2004 +0200
@@ -8350,71 +8350,6 @@
       )
 !
 
-tabMenuWithRemove
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-    "
-     MenuEditor new openOnClass:NewSystemBrowser andSelector:#tabMenu
-     (Menu new fromLiteralArrayEncoding:(NewSystemBrowser tabMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(#Menu
-        #(
-         #(#MenuItem
-            #label: 'Add Buffer'
-            #translateLabel: true
-            #nameKey: #CreateBuffer
-            #value: #bufferMenuCreateBuffer
-          )
-         #(#MenuItem
-            #label: 'Remove Buffer'
-            #translateLabel: true
-            #nameKey: #RemoveBuffer
-            #value: #'bufferMenuRemoveBuffer:'
-            #argument: 0
-          )
-         )
-        nil
-        nil
-      )
-!
-
-tabMenuWithoutRemove
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-    "
-     MenuEditor new openOnClass:NewSystemBrowser andSelector:#tabMenu
-     (Menu new fromLiteralArrayEncoding:(NewSystemBrowser tabMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(#Menu
-        #(
-         #(#MenuItem
-            #label: 'Add buffer'
-            #translateLabel: true
-            #nameKey: #CreateBuffer
-            #value: #bufferMenuCreateBuffer
-          )
-         )
-        nil
-        nil
-      )
-!
-
 variablesMenu
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -9266,6 +9201,78 @@
     ^ self refactoringMenu
 !
 
+tabMenuWithRemove
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+    "
+     MenuEditor new openOnClass:NewSystemBrowser andSelector:#tabMenu
+     (Menu new fromLiteralArrayEncoding:(NewSystemBrowser tabMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(#Menu
+        #(
+         #(#MenuItem
+            #label: 'Add Buffer'
+            #translateLabel: true
+            #nameKey: #CreateBuffer
+            #value: #bufferMenuCreateBuffer
+          )
+         #(#MenuItem
+            #label: 'Remove Buffer <%1>'
+            #translateLabel: true
+            #nameKey: #RemoveBuffer
+            #value: #'bufferMenuRemoveBuffer:'
+            #argument: 0
+          )
+         #(#MenuItem
+            #label: 'Remove all but this Buffer <%1>'
+            #translateLabel: true
+            #nameKey: #RemoveAllButBuffer
+            #value: #'bufferMenuRemoveAllButBuffer:'
+            #argument: 0
+          )
+         )
+        nil
+        nil
+      )
+!
+
+tabMenuWithoutRemove
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+    "
+     MenuEditor new openOnClass:NewSystemBrowser andSelector:#tabMenu
+     (Menu new fromLiteralArrayEncoding:(NewSystemBrowser tabMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(#Menu
+        #(
+         #(#MenuItem
+            #label: 'Add buffer'
+            #translateLabel: true
+            #nameKey: #CreateBuffer
+            #value: #bufferMenuCreateBuffer
+          )
+         )
+        nil
+        nil
+      )
+!
+
 variablesPopUpMenu
     "return the popUpMenu for the variable-list view"
 
@@ -10009,8 +10016,9 @@
 
     m := self class tabMenuWithRemove.
     m := m decodeAsLiteralArray.
-    i := m detectItem:[:item | item itemValue == #bufferMenuRemoveBuffer:] ifNone:nil.
+    i := m detectItem:[:item | item nameKey == #RemoveBuffer] ifNone:nil.
     i notNil ifTrue:[
+        i label:(i label bindWith:index printString).
         i argument:index.
         index ~~ self selectedBuffer value ifTrue:[
             "/ for now: if that buffer is modified,
@@ -10021,6 +10029,11 @@
             ].
         ].
     ].
+    i := m detectItem:[:item | item nameKey == #RemoveAllButBuffer] ifNone:nil.
+    i notNil ifTrue:[
+        i label:(i label bindWith:index printString).
+        i argument:index.
+    ].
     m findGuiResourcesIn:self.
     ^ m
 
@@ -14678,11 +14691,39 @@
     self createBufferForCurrentClassOrSelectionInCodeView.
 !
 
-bufferMenuRemoveBuffer:nr
-    "remove the current buffer"
+bufferMenuRemoveAllButBuffer:nr
+    "remove all other than the numbered buffer"
 
     buffers size > 0 ifTrue:[
-        (self askIfModified:'Code was modified.\\Remove buffer anyway ?')
+        buffers size to:(nr + 1) by:-1 do:[:nr |   "/ buffers after nr
+            (self 
+                askIfModified:'Code was modified.\\Remove buffer anyway ?'
+                in:(buffers at:nr))
+            ifTrue:[
+                self removeBuffer:nr.
+            ].
+        ].
+        nr-1 to:1 by:-1 do:[:nr |   "/ buffers before nr
+            (self 
+                askIfModified:'Code was modified.\\Remove buffer anyway ?'
+                in:(buffers at:nr))
+            ifTrue:[
+                self removeBuffer:nr.
+            ].
+        ].
+    ]
+
+    "Modified: / 11.2.2000 / 10:55:02 / cg"
+!
+
+bufferMenuRemoveBuffer:nr
+    "remove the numbered buffer"
+
+    buffers size > 0 ifTrue:[
+        (self 
+            askIfModified:'Code was modified.\\Remove buffer anyway ?'
+            in:(buffers at:nr)
+        )
         ifTrue:[
             self removeBuffer:nr.
         ].
@@ -14694,9 +14735,7 @@
 bufferMenuRemoveCurrentBuffer
     "remove the current buffer"
 
-    buffers size > 0 ifTrue:[
-        self bufferMenuRemoveBuffer:(selectedBuffer value)
-    ]
+    self bufferMenuRemoveBuffer:(selectedBuffer value)
 !
 
 bufferSelectionChanged
@@ -31456,6 +31495,21 @@
     "Modified: / 11.2.2000 / 12:37:34 / cg"
 !
 
+askIfModified:question default:default in:aNavigationState
+    "if codeView was modified, return the answer from asking question;
+     otherwise, return true"
+
+    ^ self 
+        askIfModified:question 
+        default:default 
+        withAccept:(self canAcceptCode) 
+        withCompare:(self canCompareCode)
+        in:aNavigationState
+
+    "Created: / 11.2.2000 / 10:52:28 / cg"
+    "Modified: / 11.2.2000 / 12:37:34 / cg"
+!
+
 askIfModified:question default:default withAccept:acceptOffered withCompare:compareOffered
     "if codeView was not modified, return true.
      If it was, return the answer from asking question, which can be
@@ -31553,6 +31607,13 @@
     "Modified: / 23.2.2000 / 00:02:29 / cg"
 !
 
+askIfModified:question in:aNavigationState
+    "if codeView was modified, return the answer from asking question;
+     otherwise, return true"
+
+    ^ self askIfModified:question default:false in:aNavigationState
+!
+
 enterBoxForClassWithCodeSelectionTitle:title withList:listOrNil okText:okText
     "convenient method: setup an enterBox with initial text taken 
      from the codeviews selection."
@@ -35869,7 +35930,7 @@
 !NewSystemBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.769 2004-08-19 10:11:50 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.770 2004-08-19 16:24:46 cg Exp $'
 ! !
 
 NewSystemBrowser initialize!