--- a/extensions.st Mon Apr 28 08:36:50 2014 +0100
+++ b/extensions.st Tue Apr 29 00:11:40 2014 +0100
@@ -502,6 +502,96 @@
"Created: / 06-04-2012 / 12:56:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!Tools::NewSystemBrowser class methodsFor:'utilities'!
+
+smallsense_askForClassToSearch:doWhatByDefault single:singleClass msgTail:msgTail resources:resourcesOrNil filter:filterOrNil forBrowser:aBrowserOrNil thenDo:aBlock
+ "utility common code for both opening a new browser on a class and
+ to search for a class in an existing browser.
+ If singleClass is true, a single class will be asked for and browsed,
+ otherwise, a match pattern is allowed and a multi-class browser is opened.
+ Moved from instance protocol for better reusability."
+
+ <swizzle: #askForClassToSearch:single:msgTail:resources:filter:forBrowser:thenDo:>
+
+ |classes box boxLabel title okText okText2 okText3 className canFind doWhat doWhat2 doWhat3 resources showFullNameHolder onlyShowJavaClassesHolder|
+
+ resources := resourcesOrNil ? self classResources.
+ showFullNameHolder := (LastClassSearchBoxShowedFullName ? false) asValue.
+ onlyShowJavaClassesHolder := (LastClassSearchBoxShowedJavaOnly ? false) asValue.
+
+ doWhat := doWhatByDefault.
+ canFind := aBrowserOrNil notNil
+ and:[aBrowserOrNil navigationState notNil and:[ aBrowserOrNil navigationState isFullBrowser ]].
+
+ (doWhat isNil or:[aBrowserOrNil isNil]) ifTrue:[
+ title := 'Select a class'.
+ boxLabel := (resources string:'Select a class').
+ okText := 'OK'.
+ okText2 := nil. doWhat2 := nil.
+ okText3 := nil. doWhat3 := nil.
+ ] ifFalse:[
+ title := (singleClass ifTrue:[ 'Class to browse' ] ifFalse:[ 'Class(es) to browse' ]).
+ boxLabel := (resources string:'Browse or Search').
+
+ (doWhat isNil and:[canFind not]) ifTrue:[
+ doWhat := #newBuffer.
+ ].
+
+ doWhat == #newBrowser ifTrue:[
+ okText := 'Open New Window'.
+ okText2 := 'Open New Buffer'. doWhat2 := #newBuffer.
+ okText3 := 'Open'. doWhat3 := nil.
+ ] ifFalse:[ doWhat == #newBuffer ifTrue:[
+ okText := 'Open New Buffer'.
+ okText2 := 'Open New Window'. doWhat2 := #newBrowser.
+ okText3 := 'Open'. doWhat3 := nil.
+ ] ifFalse:[
+ title := (singleClass ifTrue:[ 'Class to find' ] ifFalse:[ 'Class(es) to find' ]).
+ okText := 'Open'.
+ okText2 := 'Open New Window'. doWhat2 := #newBrowser.
+ okText3 := 'Open New Buffer'. doWhat3 := #newBuffer.
+ ]].
+ ].
+
+ box := SmallSense::ClassSearchDialog new.
+
+ "button3" "okButton" "button2" "cancel"
+
+ box addButtonCancel.
+ doWhat notNil ifTrue:[
+ box addButtonWithLabel: (resources string:okText) action: [ box doAccept ] enablement: box acceptEnabledHolder.
+ (aBrowserOrNil notNil and:[aBrowserOrNil navigationState isFullBrowser]) "singleClass" ifTrue:[
+ box addButtonWithLabel: (resources string:okText3) action: [ doWhat := doWhat3. box doAccept ] enablement: box acceptEnabledHolder.
+ ].
+ box addButtonWithLabel: (resources string:okText2) action: [ doWhat := doWhat2. box doAccept ] enablement: box acceptEnabledHolder.
+ ] ifFalse:[
+ box addButtonAccept.
+ ].
+
+
+
+ classes := box open.
+ classes isEmptyOrNil ifTrue:[ ^ nil ].
+ self assert: classes size == 1.
+ className := classes anElement name.
+
+
+ LastClassSearchBoxShowedFullName := showFullNameHolder value.
+ LastClassSearchBoxShowedJavaOnly := onlyShowJavaClassesHolder value.
+
+ (doWhat isNil or:[aBrowserOrNil isNil]) ifTrue:[
+ aBlock notNil ifTrue:[aBlock value:className optionalArgument:singleClass and:doWhat].
+ ^ className
+ ].
+
+ aBrowserOrNil withSearchCursorDo:[
+ aBlock value:className value:singleClass value:doWhat.
+ ].
+ ^ className
+
+ "Created: / 28-04-2014 / 23:41:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!UserPreferences methodsFor:'accessing-SmallSense'!
smallSenseBackgroundLintEnabled