BrowserView.st
changeset 1155 c37cb25bed62
parent 1149 33fcc586c309
child 1161 4130c98f3268
--- a/BrowserView.st	Sat Apr 19 09:25:11 1997 +0200
+++ b/BrowserView.st	Sat Apr 19 11:22:13 1997 +0200
@@ -8432,9 +8432,17 @@
 askForSearchTitle:title openWith:aSelector isSelector:isSelector searchArea:whereDefault
     "convenient method: setup enterBox with text from codeView or selected
      method for browsing based on a selector. Set action and launch box.
-     SearchArea may be one of #everywhere, #classCategory, #class or #classHierarchy"
-
-    |box grp panel selectorHolder where whereChannel b sel classes|
+     SearchArea may be one of #everywhere, #classCategory, #class, #classWithPrivateClasses,
+     #classHierarchy or #classHierarchyWithPrivateClasses"
+
+    |box grp panel selectorHolder where whereChannel b sel classes areas toSearch cls|
+
+    areas := #(everywhere 
+               classCategory 
+               class 
+               classHierarchy 
+               classWithPrivateClasses 
+               classHierarchyWithPrivateClasses).
 
     isSelector ifTrue:[
         sel := self selectorToSearchFor.
@@ -8476,10 +8484,35 @@
             b := CheckBox "RadioButton" label:(resources string:'class & subclasses').
             panel add:b. grp add:b.
             box makeTabable:b.
+
+            currentClass subclasses size == 0 ifTrue:[
+                b disable.
+            ].
+
+            b := CheckBox "RadioButton" label:(resources string:'class & private classes').
+            panel add:b.grp add:b.
+            box makeTabable:b.
+
+            currentClass privateClasses size == 0 ifTrue:[
+                b disable
+            ].
+
+            b := CheckBox "RadioButton" label:(resources string:'class & subclasses & all private classes').
+            panel add:b. grp add:b.
+            box makeTabable:b.
+
+            currentClass subclasses size == 0 ifTrue:[
+                b disable.
+            ] ifFalse:[
+                toSearch := IdentitySet new.
+                currentClass withAllSubclasses do:[:cls | toSearch add:cls privateClasses].
+                toSearch size == 0 ifTrue:[
+                    b disable
+                ]
+            ]
         ].
         whereDefault notNil ifTrue:[
-            where := (#(everywhere classCategory class classHierarchy)
-                      indexOf:whereDefault).
+            where := areas indexOf:whereDefault.
             where == 0 ifTrue:[where := 1].
         ] ifFalse:[
             where := 1.
@@ -8504,19 +8537,35 @@
         sel := selectorHolder value.
         where := whereChannel value.
 
-        where == 1 ifTrue:[
+        where := areas at:where ifAbsent:#class.
+
+        where == #everywhere ifTrue:[
             classes := Smalltalk allClasses.
         ] ifFalse:[
-            where == 2 ifTrue:[
+            where == #classCategory ifTrue:[
                 classes := Smalltalk allClassesInCategory:currentClassCategory
             ] ifFalse:[
-                where == 3 ifTrue:[
+                (where == #class or:[where == #classWithPrivateClasses]) ifTrue:[
                     classes := Array with:currentClass
                 ] ifFalse:[
-                    classes := currentClass withAllSubclasses
+                    (where == #classHierarchy or:[where == #classHierarchyWithPrivateClasses]) ifTrue:[
+                        classes := currentClass withAllSubclasses
+                    ]
                 ]
             ]
         ].
+        (where == #classWithPrivateClasses or:[where == #classHierarchyWithPrivateClasses]) ifTrue:[
+            toSearch := IdentitySet withAll:classes.
+            classes := IdentitySet withAll:toSearch.
+
+            [toSearch notEmpty] whileTrue:[
+                cls := toSearch removeFirst.
+                toSearch addAll:cls privateClasses.
+                classes addAll:cls privateClasses.
+            ].
+            classes := classes asOrderedCollection.
+        ].
+
         self withSearchCursorDo:[
             SystemBrowser perform:aSelector with:sel with:classes
         ]
@@ -10003,6 +10052,6 @@
 !BrowserView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/BrowserView.st,v 1.293 1997-04-18 13:25:17 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/BrowserView.st,v 1.294 1997-04-19 09:22:13 ca Exp $'
 ! !
 BrowserView initialize!