--- 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!