#FEATURE
authorClaus Gittinger <cg@exept.de>
Wed, 18 Nov 2015 11:36:07 +0100
changeset 3241 1fca4b63f4bf
parent 3240 28a65ccd21cc
child 3242 ba12e8799b02
#FEATURE class: UIPainter added: #openSubSpecBrowser #withSpecClassAndSelectorDo: changed: #openSubSpecGUIPainter
UIPainter.st
--- a/UIPainter.st	Wed Nov 18 11:34:57 2015 +0100
+++ b/UIPainter.st	Wed Nov 18 11:36:07 2015 +0100
@@ -3780,35 +3780,22 @@
     "Modified: / 16.7.1998 / 18:15:46 / cg"
 !
 
+openSubSpecBrowser
+    "opens a browser on the current subspecification"
+
+    self withSpecClassAndSelectorDo:[:cls :sel |
+        cls theMetaclass browse:sel.
+    ].
+!
+
 openSubSpecGUIPainter
     "opens a GUI Painter on the current subspecification"
 
-    |spec cls meta sel|
-
-    (self resolveName:specClassName) isNil ifTrue:[
-        self askForSaving ifFalse: [^self]
-    ]. 
-
-    spec := self specTool specification.
-    cls := spec majorKey.
-    cls isNil ifTrue:[
-        cls := specClassName.
-    ].
-    (cls := self resolveName:cls inClass:(Smalltalk at: specClassName asSymbol)) isNil ifTrue:[
-        spec majorKey isNil ifTrue:[
-            ^ self warn:'Cannot find class (no majorKey specified).'.
-        ].
-        ^ self warn:('Cannot find class ', spec majorKey asBoldText, '.').
-    ].
-    sel := spec minorKey.
-    meta := cls class whichClassIncludesSelector:sel.
-    meta isNil ifTrue:[
-        ^ self warn:'Cannot find selector #', (sel ? '') asBoldText, ' in class ', cls name asBoldText, '!!'
-    ].
-
-    self class 
-        openOnClass:meta soleInstance 
-        andSelector:spec minorKey.
+    self withSpecClassAndSelectorDo:[:cls :sel |
+        self class 
+            openOnClass:cls theMetaclass soleInstance 
+            andSelector:sel.
+    ].        
 
     "Modified: / 5.11.2001 / 16:51:46 / cg"
 !
@@ -3843,6 +3830,35 @@
     ].
 
     "Modified: / 12-01-2008 / 10:31:34 / cg"
+!
+
+withSpecClassAndSelectorDo:aTwoArgBlock
+    "helper for open GUI Painter/open Browser on the current subspecification"
+
+    |spec cls meta sel|
+
+    (self resolveName:specClassName) isNil ifTrue:[
+        self askForSaving ifFalse: [^self]
+    ]. 
+
+    spec := self specTool specification.
+    cls := spec majorKey.
+    cls isNil ifTrue:[
+        cls := specClassName.
+    ].
+    (cls := self resolveName:cls inClass:(Smalltalk at: specClassName asSymbol)) isNil ifTrue:[
+        spec majorKey isNil ifTrue:[
+            ^ self warn:'Cannot find class (no majorKey specified).'.
+        ].
+        ^ self warn:('Cannot find class ', spec majorKey asBoldText, '.').
+    ].
+    sel := spec minorKey.
+    meta := cls class whichClassIncludesSelector:sel.
+    meta isNil ifTrue:[
+        ^ self warn:'Cannot find selector #', (sel ? '') asBoldText, ' in class ', cls name asBoldText, '!!'
+    ].
+
+    aTwoArgBlock value:meta value:spec minorKey.
 ! !
 
 !UIPainter methodsFor:'change & update'!