--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SmallSense__AbstractSearchDialog.st Mon Apr 28 08:36:50 2014 +0100
@@ -0,0 +1,769 @@
+"{ Package: 'jv:smallsense' }"
+
+"{ NameSpace: SmallSense }"
+
+SimpleDialog subclass:#AbstractSearchDialog
+ instanceVariableNames:'acceptEnabledHolder matchingObjectsView matchingObjectsTree
+ matchingObjectsSelectionHolder matchPatternHolder
+ matchingUpdateJob matchPatternView environmentHolder filterHolder
+ filter matchingLabelHolder'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'SmallSense-Core-Interface-Search'
+!
+
+AbstractSearchDialog class instanceVariableNames:'lastMatchPattern lastSearchedObjects'
+
+"
+ The following class instance variables are inherited by this class:
+
+ SimpleDialog -
+ ApplicationModel - ClassResources
+ Model -
+ Object -
+"
+!
+
+!AbstractSearchDialog class methodsFor:'accessing'!
+
+lastMatchPattern
+ ^ lastMatchPattern
+!
+
+lastMatchPattern:something
+ lastMatchPattern := something.
+!
+
+lastSearchedObjects
+ ^ lastSearchedObjects
+!
+
+lastSearchedObjects:something
+ lastSearchedObjects := something.
+! !
+
+!AbstractSearchDialog class methodsFor:'interface specs'!
+
+windowSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:SmallSense::AbstractSearchDialog andSelector:#windowSpec
+ SmallSense::AbstractSearchDialog new openInterface:#windowSpec
+ SmallSense::AbstractSearchDialog open
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: windowSpec
+ window:
+ (WindowSpec
+ label: 'Search...'
+ name: 'Search...'
+ min: (Point 10 10)
+ bounds: (Rectangle 0 0 708 404)
+ menu: mainMenuSpec
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (VerticalPanelViewSpec
+ name: 'ContentAndOptionsPanel'
+ layout: (LayoutFrame 10 0 0 0 -10 1 -40 1)
+ horizontalLayout: fit
+ verticalLayout: topSpaceFit
+ horizontalSpace: 3
+ verticalSpace: 3
+ component:
+ (SpecCollection
+ collection: (
+ (UISubSpecification
+ name: 'SubSpecification1'
+ minorKey: contentPaneSpec
+ extent: (Point 688 404)
+ )
+ (UISubSpecification
+ name: 'SubSpecification2'
+ minorKey: optionsPaneSpec
+ extent: (Point 688 1)
+ )
+ )
+
+ )
+ )
+ (UISubSpecification
+ name: 'ButtonsPane'
+ layout: (LayoutFrame 10 0 -40 1 -10 1 0 1)
+ minorKey: buttonsPaneSpec
+ )
+ )
+
+ )
+ )
+! !
+
+!AbstractSearchDialog class methodsFor:'interface specs-content'!
+
+buttonsPaneSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:SmallSense::AbstractSearchDialog andSelector:#buttonPaneSpec
+ SmallSense::AbstractSearchDialog new openInterface:#buttonPaneSpec
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: 'buttonPaneSpec'
+ window:
+ (WindowSpec
+ label: 'Search...'
+ name: 'Search...'
+ min: (Point 10 10)
+ bounds: (Rectangle 0 0 708 40)
+ menu: mainMenuSpec
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (HorizontalPanelViewSpec
+ name: 'Buttons'
+ layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ horizontalLayout: right
+ verticalLayout: center
+ horizontalSpace: 3
+ verticalSpace: 3
+ reverseOrderIfOKAtLeft: true
+ component:
+ (SpecCollection
+ collection: (
+ (ActionButtonSpec
+ label: 'Close'
+ name: 'Button2'
+ translateLabel: true
+ model: doCancel
+ extent: (Point 125 22)
+ )
+ (ActionButtonSpec
+ label: 'OK'
+ name: 'Button1'
+ translateLabel: true
+ model: doAccept
+ enableChannel: acceptEnabledHolder
+ extent: (Point 125 22)
+ )
+ )
+
+ )
+ )
+ )
+
+ )
+ )
+
+ "Created: / 27-04-2014 / 23:33:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+contentPaneSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:SmallSense::AbstractSearchDialog andSelector:#contentPaneSpec
+ SmallSense::AbstractSearchDialog new openInterface:#contentPaneSpec
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: 'contentPaneSpec'
+ window:
+ (WindowSpec
+ label: 'Search...'
+ name: 'Search...'
+ min: (Point 10 10)
+ bounds: (Rectangle 0 0 708 404)
+ menu: mainMenuSpec
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (VerticalPanelViewSpec
+ name: 'Content'
+ layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ horizontalLayout: fit
+ verticalLayout: topSpaceFit
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Enter name prefix or pattern (*):'
+ name: 'PatternLabel'
+ translateLabel: true
+ adjust: left
+ extent: (Point 708 30)
+ )
+ (InputFieldSpec
+ name: 'Pattern'
+ model: matchPatternHolder
+ immediateAccept: true
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnPointerLeave: true
+ extent: (Point 706 25)
+ postBuildCallback: postBuilderMatchPatternView:
+ usePreferredHeight: true
+ )
+ (LabelSpec
+ label: 'Matching items:'
+ name: 'MatchingLabel'
+ translateLabel: true
+ labelChannel: matchingLabelHolder
+ adjust: left
+ extent: (Point 708 25)
+ )
+ (HierarchicalListViewSpec
+ name: 'HierarchicalListView1'
+ model: matchingObjectsSelectionHolder
+ hasHorizontalScrollBar: true
+ hasVerticalScrollBar: true
+ listModel: matchingObjectsTree
+ multipleSelectOk: true
+ useIndex: false
+ highlightMode: line
+ doubleClickSelector: doAcceptByDoubleClick
+ selectConditionSelector: canSelect:
+ showLines: false
+ showIndicators: false
+ showLeftIndicators: false
+ useDefaultIcons: false
+ showRoot: false
+ extent: (Point 708 302)
+ postBuildCallback: postBuildMatchingObjectsView:
+ )
+ )
+
+ )
+ )
+ )
+
+ )
+ )
+!
+
+optionsPaneSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:SmallSense::AbstractSearchDialog andSelector:#optionsPaneSpec
+ SmallSense::AbstractSearchDialog new openInterface:#optionsPaneSpec
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: optionsPaneSpec
+ window:
+ (WindowSpec
+ label: 'Search Options...'
+ name: 'Search Options...'
+ min: (Point 10 10)
+ bounds: (Rectangle 0 0 634 40)
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'No options (override #optionsPaneSpec)'
+ name: 'NoOptionsLabel'
+ layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ translateLabel: true
+ )
+ )
+
+ )
+ )
+! !
+
+!AbstractSearchDialog class methodsFor:'queries'!
+
+isAbstract
+ "Return if this class is an abstract class.
+ True is returned here for myself only; false for subclasses.
+ Abstract subclasses must redefine again."
+
+ ^ self == SmallSense::AbstractSearchDialog.
+! !
+
+!AbstractSearchDialog methodsFor:'accessing'!
+
+environment
+ ^ self environmentHolder value
+
+ "Created: / 22-04-2014 / 10:45:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+environment: aJavaClassEnvironment
+ ^self environmentHolder value: aJavaClassEnvironment
+
+ "Created: / 22-04-2014 / 10:46:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+filter
+ ^self filterHolder value.
+
+ "Created: / 11-03-2013 / 17:37:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+lastMatchPattern
+ ^ self class lastMatchPattern
+
+ "Created: / 28-04-2014 / 00:08:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+lastMatchPattern: aString
+ self class lastMatchPattern: aString
+
+ "Created: / 28-04-2014 / 00:08:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+pattern
+ ^self matchPatternHolder value.
+
+ "Created: / 11-03-2013 / 14:39:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+pattern: aString
+ ^self matchPatternHolder value: aString
+
+ "Created: / 11-03-2013 / 15:21:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSearchDialog methodsFor:'aspects'!
+
+acceptEnabledHolder
+ <resource: #uiAspect>
+
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ acceptEnabledHolder isNil ifTrue:[
+ acceptEnabledHolder := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ acceptEnabledHolder addDependent:self.
+"/ acceptEnabledHolder onChangeSend:#acceptEnabledHolderChanged to:self.
+ ].
+ ^ acceptEnabledHolder.
+!
+
+environmentHolder
+ "return/create the 'registryHolder' value holder (automatically generated)"
+
+ environmentHolder isNil ifTrue:[
+ environmentHolder := Smalltalk asValue.
+ environmentHolder addDependent:self.
+ ].
+ ^ environmentHolder
+
+ "Created: / 22-04-2014 / 10:45:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-04-2014 / 00:04:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+environmentHolder:something
+ "set the 'registryHolder' value holder (automatically generated)"
+
+ |oldValue newValue|
+
+ environmentHolder notNil ifTrue:[
+ oldValue := environmentHolder value.
+ environmentHolder removeDependent:self.
+ ].
+ environmentHolder := something.
+ environmentHolder notNil ifTrue:[
+ environmentHolder addDependent:self.
+ ].
+ newValue := environmentHolder value.
+ oldValue ~~ newValue ifTrue:[
+ self update:#value with:newValue from:environmentHolder.
+ ].
+
+ "Created: / 22-04-2014 / 10:45:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+filterHolder
+ "return/create the 'filterHolder' value holder (automatically generated)"
+
+ filterHolder isNil ifTrue:[
+ filterHolder := ValueHolder new.
+ filterHolder addDependent:self.
+ ].
+ ^ filterHolder
+!
+
+filterHolder:something
+ "set the 'filterHolder' value holder (automatically generated)"
+
+ |oldValue newValue|
+
+ filterHolder notNil ifTrue:[
+ oldValue := filterHolder value.
+ filterHolder removeDependent:self.
+ ].
+ filterHolder := something.
+ filterHolder notNil ifTrue:[
+ filterHolder addDependent:self.
+ ].
+ newValue := filterHolder value.
+ oldValue ~~ newValue ifTrue:[
+ self update:#value with:newValue from:filterHolder.
+ ].
+!
+
+matchPatternHolder
+ <resource: #uiAspect>
+
+ matchPatternHolder isNil ifTrue:[
+ matchPatternHolder := ValueHolder new.
+ matchPatternHolder addDependent:self.
+ ].
+ ^ matchPatternHolder.
+
+ "Modified: / 08-03-2013 / 13:00:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 08-03-2013 / 14:05:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+matchingLabelHolder
+ <resource: #uiAspect>
+
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ matchingLabelHolder isNil ifTrue:[
+ matchingLabelHolder := ValueHolder with:(resources string:'Matching items:').
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ matchingLabelHolder addDependent:self.
+"/ matchingLabelHolder onChangeSend:#matchingLabelHolderChanged to:self.
+ ].
+ ^ matchingLabelHolder.
+
+ "Modified: / 18-03-2013 / 12:54:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+matchingObjectsSelectionHolder
+ "return/create the 'matchingClassesSelectionHolder' value holder (automatically generated)"
+
+ matchingObjectsSelectionHolder isNil ifTrue:[
+ matchingObjectsSelectionHolder := ValueHolder new.
+ matchingObjectsSelectionHolder addDependent:self.
+ ].
+ ^ matchingObjectsSelectionHolder
+
+ "Modified: / 08-03-2013 / 14:05:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+matchingObjectsSelectionHolder:something
+ "set the 'matchingClassesSelectionHolder' value holder (automatically generated)"
+
+ matchingObjectsSelectionHolder := something.
+!
+
+matchingObjectsTree
+ <resource: #uiAspect>
+ matchingObjectsTree isNil ifTrue:[
+ matchingObjectsTree := HierarchicalList new.
+ matchingObjectsTree showRoot:false.
+ matchingObjectsTree root:(HierarchicalItem new).
+ matchingObjectsTree application:self.
+ self updateNoResults:matchingObjectsTree root.
+ ].
+ ^ matchingObjectsTree.
+
+ "Created: / 08-03-2013 / 15:40:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 27-04-2014 / 23:41:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSearchDialog methodsFor:'aspects-queries'!
+
+hasFilter
+ ^self filterHolder value notNil
+
+ "Created: / 08-03-2013 / 15:43:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 11-03-2013 / 17:34:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSearchDialog methodsFor:'change & update'!
+
+savePattern
+ self lastMatchPattern: self pattern.
+
+ "Created: / 11-03-2013 / 15:45:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-04-2014 / 00:09:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+update:something with:aParameter from:changedObject
+ "Invoked when an object that I depend upon sends a change notification."
+
+ "stub code automatically generated - please change as required"
+
+ changedObject == matchPatternHolder ifTrue:[
+ matchingUpdateJob restart.
+ ^ self.
+ ].
+ changedObject == matchingObjectsSelectionHolder ifTrue:[
+ self updateAcceptEnabled.
+ ^ self.
+ ].
+ changedObject == accept ifTrue:[
+ accept value ifTrue:[
+ self savePattern.
+ acceptedValue := matchingObjectsSelectionHolder value collect:[:e|e subject].
+ ].
+ ^ self.
+ ].
+ changedObject == filterHolder ifTrue:[
+ filter notNil ifTrue:[filter removeDependent: self].
+ filter := filterHolder value.
+ filter notNil ifTrue:[filter addDependent: self].
+ ^ self.
+ ] .
+ changedObject == filter ifTrue:[
+ matchingObjectsView invalidate.
+ ].
+ super update:something with:aParameter from:changedObject
+
+ "Modified: / 28-04-2014 / 00:12:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateAcceptEnabled
+ self acceptEnabledHolder value: matchingObjectsSelectionHolder value notEmptyOrNil.
+
+ "Created: / 08-03-2013 / 14:06:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 15-03-2013 / 16:23:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateMatchingLabelToNormal
+ self matchingLabelHolder value: (resources string: 'Matching items:').
+
+ "Created: / 18-03-2013 / 14:02:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-04-2014 / 00:22:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateMatchingLabelToSearching
+ self matchingLabelHolder value: (resources string: 'Searching...').
+
+ "Created: / 18-03-2013 / 14:01:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateMatchingObjects
+ [
+ self updateMatchingLabelToSearching.
+ self computeMatchingObjects.
+ ] ensure:[
+ self updateMatchingLabelToNormal.
+ ]
+
+ "Created: / 27-04-2014 / 23:48:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateNoResults: root
+ root children:
+ (Array with: ((HierarchicalItemWithLabel new parent: root; label:((resources string:'No search results...') asText colorizeAllWith: Color gray)))).
+ root expand.
+ ^self
+
+ "Created: / 11-03-2013 / 14:33:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 27-04-2014 / 23:42:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSearchDialog methodsFor:'event processing'!
+
+keyPressCursorDownInPatternView
+
+ matchingObjectsView hasSelection ifFalse:[
+ matchingObjectsView selectFirst.
+ ] ifTrue:[
+ matchingObjectsView selectNext.
+ ].
+ matchingObjectsView windowGroup focusView:matchingObjectsView byTab:true.
+
+ "Created: / 22-04-2014 / 11:59:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSearchDialog methodsFor:'forced actions'!
+
+doAcceptByDoubleClick
+ self acceptEnabledHolder value ifTrue:[
+ self doAccept
+ ].
+
+ "Created: / 08-03-2013 / 14:20:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doAcceptByReturnKey
+ self acceptEnabledHolder value ifTrue:[
+ super doAcceptByReturnKey
+ ].
+
+ "Created: / 08-03-2013 / 14:14:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSearchDialog methodsFor:'hooks'!
+
+commonPostOpen
+"/ self updateMatching.
+ self pattern: self lastMatchPattern.
+ matchPatternView selectAll.
+ self updateAcceptEnabled.
+
+ "Created: / 08-03-2013 / 13:15:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-04-2014 / 00:22:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+postBuildMatchingObjectsView:aView
+ matchingObjectsView := aView scrolledView.
+ matchingObjectsView delegate: self.
+
+ "Created: / 22-04-2014 / 13:21:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+postBuilderMatchPatternView:aView
+ matchPatternView := aView scrolledView.
+"/ matchPatternView delegate: self.
+ matchPatternView onKey:#CursorDown leaveWith:[ self keyPressCursorDownInPatternView ]
+
+ "Modified: / 22-04-2014 / 11:59:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSearchDialog methodsFor:'initialization'!
+
+initialize
+ "Invoked when a new instance is created."
+
+ super initialize.
+
+ "/ please change as required (and remove this comment)
+ "/ acceptEnabledHolder := nil.
+ "/ allClassesHolder := nil.
+ "/ matchingClassesList := nil.
+ "/ matchingClassesHolder := nil.
+ "/ matchPatternHolder := nil.
+ "/ matchingUpdateJob := nil.
+
+ self accept addDependent: self.
+ self matchingObjectsTree. "/force its initialization
+ matchingUpdateJob := BackgroundJob named: 'SmallSense search dialog updater' on:[self updateMatchingObjects]
+
+ "Modified: / 27-04-2014 / 23:48:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSearchDialog methodsFor:'menu actions'!
+
+doCheck: doCheck
+ self matchingObjectsSelectionHolder value ? #() do:[:po|po isJIClassPO ifTrue:[po checked: doCheck]].
+
+ "Created: / 15-03-2013 / 16:34:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doCheckAll: doCheck
+ self matchingObjectsTree root recursiveDo:[:po|po isJIClassPO ifTrue:[po checked: doCheck]].
+
+ "Created: / 15-03-2013 / 16:34:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doSelect
+ self doCheck: true
+
+ "Modified: / 15-03-2013 / 16:35:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doSelectAll
+ self doCheckAll: true
+
+ "Modified: / 15-03-2013 / 16:35:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doUnselect
+ self doCheck: false
+
+ "Modified: / 15-03-2013 / 16:35:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doUnselectAll
+ self doCheckAll: false
+
+ "Modified: / 15-03-2013 / 16:35:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSearchDialog methodsFor:'queries'!
+
+canSelect: selection
+ "raise an error: must be redefined in concrete subclass(es)"
+
+ ^ self subclassResponsibility
+
+ "Modified (format): / 28-04-2014 / 00:11:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hasFilterAndClassNamedIsNotYetImported: binaryname
+ ^self hasFilter
+ and:[masterApplication isNil or:[masterApplication hasFilterAndClassNamedIsNotYetImported: binaryname]]
+
+ "Created: / 18-03-2013 / 14:40:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+searchingClasses
+ ^self modeHolder value == #classes
+
+ "Created: / 11-03-2013 / 14:38:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+searchingMethods
+ ^self modeHolder value == #methods
+
+ "Created: / 11-03-2013 / 14:38:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showOnlyInterfaces
+ ^self showOnlyInterfacesHolder value
+
+ "Created: / 18-03-2013 / 10:40:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-03-2013 / 13:32:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSearchDialog methodsFor:'searching'!
+
+computeMatchingObjects
+ self subclassResponsibility
+
+ "Created: / 27-04-2014 / 23:48:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+