#UI_ENHANCEMENT by exept
class: Tools::NewSystemBrowser
added:
#bufferMenuExtractBuffer:
#extractBuffer:
changed: #tabMenu:
class: Tools::NewSystemBrowser class
changed: #tabMenuWithRemove
--- a/Tools__NewSystemBrowser.st Wed Aug 14 16:44:17 2019 +0200
+++ b/Tools__NewSystemBrowser.st Fri Aug 16 11:15:30 2019 +0200
@@ -17870,6 +17870,16 @@
label: '-'
)
(MenuItem
+ label: 'Extract Buffer'
+ itemValue: bufferMenuExtractBuffer:
+ nameKey: ExtractBuffer
+ translateLabel: true
+ argument: 0
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
label: 'Remove Page'
itemValue: bufferMenuRemoveBuffer:
nameKey: RemoveBuffer
@@ -20152,16 +20162,20 @@
m := self class tabMenuWithRemove.
m := m decodeAsLiteralArray.
- i := m detectItem:[:item | item nameKey == #RemoveBuffer] ifNone:nil.
- i notNil ifTrue:[
- i label:(resources string:i label with:index printString).
- i argument:index.
- index ~~ self selectedBuffer value ifTrue:[
- "/ for now: if that buffer is modified,
- "/ do not allow removing.
- "/ (must be brought to front, in order for check-for-modification to work)
- (buffers at:index) modified ifTrue:[
- i disable
+ "/ 'patch' the menu items to pass the nr. of the current buffer as argument
+ "/ (and also disable, if the current buffer is modified)
+ #(RemoveBuffer ExtractBuffer) do:[:eachKey |
+ i := m detectItem:[:item | item nameKey == eachKey] ifNone:nil.
+ i notNil ifTrue:[
+ i label:(resources string:i label with:index printString).
+ i argument:index.
+ index ~~ self selectedBuffer value ifTrue:[
+ "/ for now: if that buffer is modified,
+ "/ do not allow removing.
+ "/ (must be brought to front, in order for check-for-modification to work)
+ (buffers at:index) modified ifTrue:[
+ i disable
+ ].
].
].
].
@@ -28965,6 +28979,23 @@
self createBufferForCurrentClassOrSelectionInCodeView.
!
+bufferMenuExtractBuffer:nr
+ "extract the numbered buffer into a separate browser"
+
+ buffers size ~~ 0 ifTrue:[
+ (self
+ askIfModified:'Code was modified.\\Extract anyway ?'
+ in:(buffers at:nr)
+ )
+ ifTrue:[
+ self extractBuffer:nr.
+ ].
+ ]
+
+ "Modified: / 11-02-2000 / 10:55:02 / cg"
+ "Modified: / 01-03-2019 / 16:20:40 / Claus Gittinger"
+!
+
bufferMenuRemoveAllButBuffer:bNrToLeaveOpen
"remove all other than the numbered buffer"
@@ -56948,6 +56979,22 @@
!NewSystemBrowser methodsFor:'private-buffers'!
+extractBuffer:nr
+ "extract the buffer into a new browser window"
+
+ |class selector state m|
+
+ state := buffers at:nr.
+
+ (m := state theSingleSelectedMethod) isNil ifTrue:[^ self].
+
+ class := m mclass.
+ selector := m selector.
+ self removeBuffer:nr.
+
+ self class openInClass:class selector:selector
+!
+
removeBuffer:nr
|prevBuffer previouslyUsedBuffer newIndex state m|