Initial support for search steps in navigator. Navugator shortcut changed.
Now Ctrl-Shift-T (not yet configurable) opens a Navigator in browser. Ctrl-F opens either class search dialog
or text search.
--- a/Make.proto Fri Jan 23 19:19:02 2015 +0100
+++ b/Make.proto Sat Jan 24 01:58:51 2015 +0000
@@ -34,7 +34,7 @@
# add the path(es) here:,
# ********** OPTIONAL: MODIFY the next lines ***
# LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/helpers -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/lint -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/goodies/regex -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libbasic3 -I$(INCLUDE_TOP)/stx/libcomp -I$(INCLUDE_TOP)/stx/libhtml -I$(INCLUDE_TOP)/stx/libjava -I$(INCLUDE_TOP)/stx/libjava/tools -I$(INCLUDE_TOP)/stx/libtool -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libwidg -I$(INCLUDE_TOP)/stx/libwidg2
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/helpers -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/lint -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/goodies/regex -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libbasic3 -I$(INCLUDE_TOP)/stx/libcomp -I$(INCLUDE_TOP)/stx/libhtml -I$(INCLUDE_TOP)/stx/libjava -I$(INCLUDE_TOP)/stx/libjava/tools -I$(INCLUDE_TOP)/stx/libtool -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libwidg -I$(INCLUDE_TOP)/stx/libwidg2
# if you need any additional defines for embedded C code,
@@ -134,7 +134,6 @@
cd ../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../refactoryBrowser/browser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
- cd ../sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../refactoryBrowser/lint && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../libhtml && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
@@ -173,6 +172,7 @@
$(OUTDIR)SmallSense__EditSupport.$(O) SmallSense__EditSupport.$(H): SmallSense__EditSupport.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__Info.$(O) SmallSense__Info.$(H): SmallSense__Info.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__Manager.$(O) SmallSense__Manager.$(H): SmallSense__Manager.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__NavigatorStep.$(O) SmallSense__NavigatorStep.$(H): SmallSense__NavigatorStep.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__PO.$(O) SmallSense__PO.$(H): SmallSense__PO.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
$(OUTDIR)SmallSense__ParseTreeIndex.$(O) SmallSense__ParseTreeIndex.$(H): SmallSense__ParseTreeIndex.st $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(STCHDR)
$(OUTDIR)SmallSense__ParseTreeIndexEntry.$(O) SmallSense__ParseTreeIndexEntry.$(H): SmallSense__ParseTreeIndexEntry.st $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -212,6 +212,7 @@
$(OUTDIR)SmallSense__MethodPO.$(O) SmallSense__MethodPO.$(H): SmallSense__MethodPO.st $(INCLUDE_TOP)/stx/goodies/smallsense/SmallSense__PO.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
$(OUTDIR)SmallSense__PackagePO.$(O) SmallSense__PackagePO.$(H): SmallSense__PackagePO.st $(INCLUDE_TOP)/stx/goodies/smallsense/SmallSense__PO.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
$(OUTDIR)SmallSense__PluggablePO.$(O) SmallSense__PluggablePO.$(H): SmallSense__PluggablePO.st $(INCLUDE_TOP)/stx/goodies/smallsense/SmallSense__PO.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__PluggableSearchProcessor.$(O) SmallSense__PluggableSearchProcessor.$(H): SmallSense__PluggableSearchProcessor.st $(INCLUDE_TOP)/stx/goodies/smallsense/SmallSense__AbstractSearchProcessor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__SmalltalkCompletionEngine.$(O) SmallSense__SmalltalkCompletionEngine.$(H): SmallSense__SmalltalkCompletionEngine.st $(INCLUDE_TOP)/stx/goodies/smallsense/SmallSense__CompletionEngine.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__SmalltalkEditSupport.$(O) SmallSense__SmalltalkEditSupport.$(H): SmallSense__SmalltalkEditSupport.st $(INCLUDE_TOP)/stx/goodies/smallsense/SmallSense__EditSupport.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__SmalltalkInferencer.$(O) SmallSense__SmalltalkInferencer.$(H): SmallSense__SmalltalkInferencer.st $(INCLUDE_TOP)/stx/goodies/smallsense/SmallSense__SmalltalkParseNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec Fri Jan 23 19:19:02 2015 +0100
+++ b/Make.spec Sat Jan 24 01:58:51 2015 +0000
@@ -65,6 +65,7 @@
SmallSense::EditSupport \
SmallSense::Info \
SmallSense::Manager \
+ SmallSense::NavigatorStep \
SmallSense::PO \
SmallSense::ParseTreeIndex \
SmallSense::ParseTreeIndexEntry \
@@ -104,6 +105,7 @@
SmallSense::MethodPO \
SmallSense::PackagePO \
SmallSense::PluggablePO \
+ SmallSense::PluggableSearchProcessor \
SmallSense::SmalltalkCompletionEngine \
SmallSense::SmalltalkEditSupport \
SmallSense::SmalltalkInferencer \
@@ -146,6 +148,7 @@
$(OUTDIR_SLASH)SmallSense__EditSupport.$(O) \
$(OUTDIR_SLASH)SmallSense__Info.$(O) \
$(OUTDIR_SLASH)SmallSense__Manager.$(O) \
+ $(OUTDIR_SLASH)SmallSense__NavigatorStep.$(O) \
$(OUTDIR_SLASH)SmallSense__PO.$(O) \
$(OUTDIR_SLASH)SmallSense__ParseTreeIndex.$(O) \
$(OUTDIR_SLASH)SmallSense__ParseTreeIndexEntry.$(O) \
@@ -185,6 +188,7 @@
$(OUTDIR_SLASH)SmallSense__MethodPO.$(O) \
$(OUTDIR_SLASH)SmallSense__PackagePO.$(O) \
$(OUTDIR_SLASH)SmallSense__PluggablePO.$(O) \
+ $(OUTDIR_SLASH)SmallSense__PluggableSearchProcessor.$(O) \
$(OUTDIR_SLASH)SmallSense__SmalltalkCompletionEngine.$(O) \
$(OUTDIR_SLASH)SmallSense__SmalltalkEditSupport.$(O) \
$(OUTDIR_SLASH)SmallSense__SmalltalkInferencer.$(O) \
--- a/SmallSense__AbstractListDialog.st Fri Jan 23 19:19:02 2015 +0100
+++ b/SmallSense__AbstractListDialog.st Sat Jan 24 01:58:51 2015 +0000
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
Copyright (C) 2013-2014 Jan Vrany
@@ -25,7 +27,7 @@
matchingObjectsTree matchingObjectsSelectionHolder
matchingObjectsLabelHolder matchingObjectsUpdateJob
matchPatternHolder matchPatternView environmentHolder
- filterHolder filter'
+ filterHolder filter nextSearchStepVisibleHolder'
classVariableNames:''
poolDictionaries:''
category:'SmallSense-Core-Interface-Search'
@@ -64,16 +66,16 @@
the UIPainter may not be able to read the specification."
"
- UIPainter new openOnClass:SmallSense::AbstractSearchDialog andSelector:#contentPaneSpec
- SmallSense::AbstractSearchDialog new openInterface:#contentPaneSpec
+ UIPainter new openOnClass:SmallSense::AbstractListDialog andSelector:#contentPaneSpec
+ SmallSense::AbstractListDialog new openInterface:#contentPaneSpec
"
<resource: #canvas>
- ^
+ ^
#(FullSpec
name: contentPaneSpec
- window:
+ window:
(WindowSpec
label: 'Search...'
name: 'Search...'
@@ -81,7 +83,7 @@
bounds: (Rectangle 0 0 708 404)
menu: mainMenuSpec
)
- component:
+ component:
(SpecCollection
collection: (
(VerticalPanelViewSpec
@@ -89,12 +91,12 @@
layout: (LayoutFrame 0 0 0 0 0 1 0 1)
horizontalLayout: fit
verticalLayout: topSpaceFit
- component:
+ component:
(SpecCollection
collection: (
(ViewSpec
name: 'Box1'
- component:
+ component:
(SpecCollection
collection: (
(LabelSpec
@@ -111,7 +113,7 @@
minorKey: optionsShowHideRightAlignedPaneSpec
)
)
-
+
)
extent: (Point 708 30)
)
@@ -123,16 +125,34 @@
acceptOnTab: true
acceptOnPointerLeave: true
entryCompletionBlock: matchPatternCompletionBlock
- extent: (Point 706 25)
+ extent: (Point 706 24)
+ usePreferredHeight: true
postBuildCallback: postBuildMatchPatternView:
- usePreferredHeight: true
)
- (LabelSpec
- label: 'Matching items:'
- name: 'MatchingLabel'
- translateLabel: true
- labelChannel: matchingObjectsLabelHolder
- adjust: left
+ (ViewSpec
+ name: 'Box2'
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Matching items:'
+ name: 'MatchingLabel'
+ layout: (LayoutFrame 0 0 0 0 -25 1 0 1)
+ translateLabel: true
+ labelChannel: matchingObjectsLabelHolder
+ adjust: left
+ )
+ (LabelSpec
+ label: '->'
+ name: 'Label1'
+ layout: (LayoutFrame -25 1 0 0 0 1 0 1)
+ visibilityChannel: nextSearchStepVisibleHolder
+ translateLabel: true
+ labelChannel: nextSearchStepLabel
+ )
+ )
+
+ )
extent: (Point 708 25)
)
(HierarchicalListViewSpec
@@ -151,15 +171,15 @@
showLeftIndicators: false
useDefaultIcons: false
showRoot: false
- extent: (Point 708 302)
+ extent: (Point 708 303)
postBuildCallback: postBuildMatchingObjectsView:
)
)
-
+
)
)
)
-
+
)
)
! !
@@ -456,6 +476,23 @@
"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>"
+!
+
+nextSearchStepLabel
+ ^ OperatingSystem isUNIXlike ifTrue:[ '→' ] ifFalse:[ '->' ].
+
+ "Created: / 23-01-2015 / 21:59:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+nextSearchStepVisibleHolder
+ <resource: #uiAspect>
+
+ nextSearchStepVisibleHolder isNil ifTrue:[
+ nextSearchStepVisibleHolder := false asValue.
+ ].
+ ^ nextSearchStepVisibleHolder.
+
+ "Modified: / 23-01-2015 / 22:00:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!AbstractListDialog methodsFor:'aspects-queries'!
@@ -647,6 +684,29 @@
!AbstractListDialog methodsFor:'event processing'!
+handlesKeyPress: key inView: view
+ view == matchingObjectsView ifTrue:[
+ ^ key == #CursorLeft or:[ key == #CursorRight ]
+ ].
+ ^ false
+
+ "Created: / 23-01-2015 / 22:35:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPress: key x:x y:y view: view
+ view == matchingObjectsView ifTrue:[
+ key == #CursorRight ifTrue:[
+ ^ self keyPressCursorRightInMatchingObjectsView.
+ ].
+ key == #CursorLeft ifTrue:[
+ ^ self keyPressCursorLeftInMatchingObjectsView.
+ ].
+ ].
+ ^ false
+
+ "Created: / 23-01-2015 / 22:36:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
keyPressCursorDownInPatternView
matchingObjectsView hasSelection ifFalse:[
@@ -657,6 +717,22 @@
matchingObjectsView windowGroup focusView:matchingObjectsView byTab:true.
"Created: / 22-04-2014 / 11:59:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPressCursorLeftInMatchingObjectsView
+ matchingObjectsView windowGroup focusView:matchPatternView byTab:true.
+ matchPatternView keyPress: #CursorLeft x: 0 y: 0.
+ ^ true
+
+ "Created: / 23-01-2015 / 22:41:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPressCursorRightInMatchingObjectsView
+ matchingObjectsView windowGroup focusView:matchPatternView byTab:true.
+ matchPatternView keyPress: #CursorRight x: 0 y: 0.
+ ^ true
+
+ "Created: / 23-01-2015 / 22:41:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!AbstractListDialog methodsFor:'events'!
--- a/SmallSense__AbstractSearchProcessor.st Fri Jan 23 19:19:02 2015 +0100
+++ b/SmallSense__AbstractSearchProcessor.st Sat Jan 24 01:58:51 2015 +0000
@@ -88,6 +88,26 @@
!AbstractSearchProcessor methodsFor:'accessing'!
+canDoNextStepFor: aPO
+ "Return true if navigation can take a next step for given PO
+ (i.e., if user can 'dive in'), false otherwise.
+ To be overriden by subclasses to avoid excessive processor creation."
+
+ ^ (self processorForNextStepFor: aPO) notNil.
+
+ "Created: / 23-01-2015 / 22:16:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+processorForNextStepFor: aPO
+ "Return a processor for next navigation step for given PO.
+ If nil is returned, then there's no next step (i.e.,
+ a user connot 'dive in')"
+
+ ^ nil
+
+ "Created: / 23-01-2015 / 22:04:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
recentlySearchedObjectPOs
^ self class recentlySearchedObjectPOs asArray reversed
--- a/SmallSense__CompositeProcessor.st Fri Jan 23 19:19:02 2015 +0100
+++ b/SmallSense__CompositeProcessor.st Sat Jan 24 01:58:51 2015 +0000
@@ -78,6 +78,26 @@
!CompositeProcessor methodsFor:'accessing'!
+canDoNextStepFor: aPO
+ "Return true if navigation can take a next step for given PO
+ (i.e., if user can 'dive in'), false otherwise.
+ To be overriden by subclasses to avoid excessive processor creation."
+
+ ^ aPO context canDoNextStepFor: aPO
+
+ "Created: / 23-01-2015 / 22:26:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+processorForNextStepFor: aPO
+ "Return a processor for next navigation step for given PO.
+ If nil is returned, then there's no next step (i.e.,
+ a user connot 'dive in')"
+
+ ^ aPO context processorForNextStepFor: aPO
+
+ "Created: / 23-01-2015 / 22:26:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
processors
^ processors
!
--- a/SmallSense__ImplementorSearchProcessor.st Fri Jan 23 19:19:02 2015 +0100
+++ b/SmallSense__ImplementorSearchProcessor.st Sat Jan 24 01:58:51 2015 +0000
@@ -50,6 +50,50 @@
"
! !
+!ImplementorSearchProcessor methodsFor:'accessing'!
+
+canDoNextStepFor: aPO
+ "Return true if navigation can take a next step for given PO
+ (i.e., if user can 'dive in'), false otherwise.
+ To be overriden by subclasses to avoid excessive processor creation."
+
+ self assert: aPO class == MethodPO.
+ ^ aPO classes size > 1
+
+ "Created: / 23-01-2015 / 22:17:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+processorForNextStepFor: aPO
+ "Return a processor for next navigation step for given PO.
+ If nil is returned, then there's no next step (i.e.,
+ a user connot 'dive in')"
+
+ | selector |
+
+ self assert: aPO class == MethodPO.
+ aPO classes size == 1 ifTrue:[ ^ nil ].
+ selector := aPO selector.
+ ^ PluggableSearchProcessor
+ search:
+ [ :pattern :filter :env :level |
+
+ ((aPO classes
+ select:[:cls | pattern isNil or:[ pattern match: cls nameWithoutNameSpacePrefix relax: level ] ])
+ asArray sort:[ :a :b | a nameWithoutNameSpacePrefix < b nameWithoutNameSpacePrefix ])
+ collect:[ :cls | cls compiledMethodAt: selector ]
+
+ ]
+ presentation:
+ [ :method |
+ PluggablePO new
+ label: (method mclass nameWithoutNameSpacePrefix) , ((' >> ', selector) asText colorizeAllWith: Color gray darker);
+ subject: method.
+ ].
+
+ "Created: / 23-01-2015 / 22:06:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 24-01-2015 / 00:44:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!ImplementorSearchProcessor methodsFor:'accessing - presentation'!
label
--- a/SmallSense__Navigator.st Fri Jan 23 19:19:02 2015 +0100
+++ b/SmallSense__Navigator.st Sat Jan 24 01:58:51 2015 +0000
@@ -21,7 +21,7 @@
"{ NameSpace: SmallSense }"
AbstractSearchDialog subclass:#Navigator
- instanceVariableNames:''
+ instanceVariableNames:'steps'
classVariableNames:''
poolDictionaries:''
category:'SmallSense-Core-Interface-Search'
@@ -50,14 +50,104 @@
"
! !
+!Navigator methodsFor:'change & update'!
+
+update:something with:aParameter from:changedObject
+ "Invoked when an object that I depend upon sends a change notification."
+
+ changedObject == matchingObjectsSelectionHolder ifTrue:[
+ self updateMextSearchStepVisibility.
+ ].
+ ^ super update:something with:aParameter from:changedObject
+
+ "Created: / 23-01-2015 / 22:21:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateMatchingIgnorePattern
+ steps size == 1 ifTrue:[
+ ^ super updateMatchingIgnorePattern
+ ].
+ self updateMatchingObjectPOs: (self matchingObjectPOsForPattern: nil)
+
+ "Created: / 24-01-2015 / 00:50:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateMextSearchStepVisibility
+ "raise an error: this method should be implemented (TODO)"
+
+ | selection |
+
+ selection := self matchingObjectsSelection.
+ matchingObjectsMultiselect ifTrue:[
+ selection := selection size == 1 ifTrue:[ selection anElement ] ifFalse:[ nil ]
+ ].
+ selection notNil ifTrue:[
+ self nextSearchStepVisibleHolder value: (processor canDoNextStepFor: selection)
+ ] ifFalse:[
+ self nextSearchStepVisibleHolder value: false.
+ ].
+
+ "Created: / 23-01-2015 / 22:21:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Navigator methodsFor:'event processing'!
+
+keyPressCursorRightInMatchingObjectsView
+ self nextSearchStepVisibleHolder value ifTrue:[
+ self step.
+ ^ true.
+ ].
+ ^ super keyPressCursorRightInMatchingObjectsView
+
+ "Created: / 23-01-2015 / 22:45:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!Navigator methodsFor:'initialization'!
initialize
super initialize.
- processor := CompositeProcessor
+ steps := OrderedCollection new: 3.
+ self push:
+ (NavigatorStep for:
+ (CompositeProcessor
with: ClassSearchProcessor new
- with: ImplementorSearchProcessor new.
+ with: ImplementorSearchProcessor new))
+ update: false.
"Created: / 10-01-2015 / 07:03:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 24-01-2015 / 00:25:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!Navigator methodsFor:'private-steps'!
+
+push: aNavigatorStep
+ self push: aNavigatorStep update: true
+
+ "Created: / 23-01-2015 / 21:01:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 24-01-2015 / 00:24:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+push: aNavigatorStep update: update
+ steps addLast: aNavigatorStep.
+ processor := aNavigatorStep processor.
+ update ifTrue:[
+ self matchPatternHolder value: nil.
+ self updateMatching
+ ].
+
+ "Created: / 24-01-2015 / 00:24:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+step
+ | selection step |
+
+ selection := self matchingObjectsSelection.
+ matchingObjectsMultiselect ifTrue:[
+ selection := selection size == 1 ifTrue:[ selection anElement ] ifFalse:[ nil ]
+ ].
+ step := NavigatorStep for: (processor processorForNextStepFor: selection).
+ self push: step.
+
+ "Created: / 23-01-2015 / 22:48:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SmallSense__NavigatorStep.st Sat Jan 24 01:58:51 2015 +0000
@@ -0,0 +1,74 @@
+"
+stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
+Copyright (C) 2013-2014 Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+"{ Package: 'stx:goodies/smallsense' }"
+
+"{ NameSpace: SmallSense }"
+
+Object subclass:#NavigatorStep
+ instanceVariableNames:'processor'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'SmallSense-Core-Interface-Search'
+!
+
+!NavigatorStep class methodsFor:'documentation'!
+
+copyright
+"
+stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
+Copyright (C) 2013-2014 Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+! !
+
+!NavigatorStep class methodsFor:'instance creation'!
+
+for: anAbstractSearchProcessor
+ ^ self new initializeWithProcessor: anAbstractSearchProcessor
+
+ "Created: / 23-01-2015 / 21:00:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!NavigatorStep methodsFor:'accessing'!
+
+processor
+ ^ processor
+! !
+
+!NavigatorStep methodsFor:'initialization'!
+
+initializeWithProcessor: anAbstractSearchProcessor
+ processor := anAbstractSearchProcessor
+
+ "Created: / 23-01-2015 / 20:59:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SmallSense__PluggableSearchProcessor.st Sat Jan 24 01:58:51 2015 +0000
@@ -0,0 +1,110 @@
+"
+stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
+Copyright (C) 2013-2014 Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+"{ Package: 'stx:goodies/smallsense' }"
+
+"{ NameSpace: SmallSense }"
+
+AbstractSearchProcessor subclass:#PluggableSearchProcessor
+ instanceVariableNames:'label search presentation'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'SmallSense-Core-Interface-Search'
+!
+
+!PluggableSearchProcessor class methodsFor:'documentation'!
+
+copyright
+"
+stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
+Copyright (C) 2013-2014 Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+"
+! !
+
+!PluggableSearchProcessor class methodsFor:'instance creation'!
+
+search: searchBlock presentation: presentBlock
+ ^ self new initializeWithSearch: searchBlock presentation: presentBlock
+
+ "Created: / 24-01-2015 / 00:14:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!PluggableSearchProcessor methodsFor:'accessing'!
+
+label:something
+ label := something.
+! !
+
+!PluggableSearchProcessor methodsFor:'accessing - presentation'!
+
+label
+ "Return a label for this processor. This one is used as section label
+ in Spotter"
+
+ ^ label
+
+ "Created: / 24-01-2015 / 00:09:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!PluggableSearchProcessor methodsFor:'initialization'!
+
+initializeWithSearch: searchBlock presentation: presentBlock
+ search := searchBlock.
+ presentation := presentBlock
+
+ "Created: / 24-01-2015 / 00:15:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!PluggableSearchProcessor methodsFor:'searching'!
+
+matchingObjectPOsFor:objects
+ "superclass SmallSense::AbstractSearchProcessor says that I am responsible to implement this method"
+
+ | pos |
+
+ pos := objects collect: presentation.
+ pos isSequenceable ifFalse:[
+ pos := pos asArray.
+ ].
+ ^ pos sort:[ :a :b | a label == b label ]
+
+ "Created: / 24-01-2015 / 00:17:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+matchingObjectsForPattern:pattern filter:filter inEnvironment:environment relax:level
+ "superclass SmallSense::AbstractSearchProcessor says that I am responsible to implement this method"
+
+ ^ search value: pattern value: filter value: environment value: level
+
+ "Created: / 24-01-2015 / 00:16:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/abbrev.stc Fri Jan 23 19:19:02 2015 +0100
+++ b/abbrev.stc Sat Jan 24 01:58:51 2015 +0000
@@ -3,8 +3,6 @@
# it provides information about a classes filename, category and especially namespace.
SmallSense::AbstractDIalog SmallSense__AbstractDIalog stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 1
SmallSense::AbstractSearchProcessor SmallSense__AbstractSearchProcessor stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 1
-SmallSense::AbstractTestCase SmallSense__AbstractTestCase stx:goodies/smallsense 'SmallSense-Tests' 1
-SmallSense::BaseTestClass SmallSense__BaseTestClass stx:goodies/smallsense 'SmallSense-Tests-Obsolete' 1
SmallSense::CodeHighlightingService SmallSense__CodeHighlightingService stx:goodies/smallsense 'SmallSense-Core-Services' 0
SmallSense::CodeNavigationService SmallSense__CodeNavigationService stx:goodies/smallsense 'SmallSense-Core-Services' 0
SmallSense::CompletionContext SmallSense__CompletionContext stx:goodies/smallsense 'SmallSense-Core' 0
@@ -16,8 +14,8 @@
SmallSense::EditService SmallSense__EditService stx:goodies/smallsense 'SmallSense-Core-Services' 0
SmallSense::EditSupport SmallSense__EditSupport stx:goodies/smallsense 'SmallSense-Core-Services' 0
SmallSense::Info SmallSense__Info stx:goodies/smallsense 'SmallSense-Smalltalk-Types-Info' 0
-SmallSense::JavaCompletionEngineEnvironmentResource SmallSense__JavaCompletionEngineEnvironmentResource stx:goodies/smallsense 'SmallSense-Tests' 1
SmallSense::Manager SmallSense__Manager stx:goodies/smallsense 'SmallSense-Smalltalk-Types-Info' 0
+SmallSense::NavigatorStep SmallSense__NavigatorStep stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 0
SmallSense::PO SmallSense__PO stx:goodies/smallsense 'SmallSense-Core-Interface-PO' 0
SmallSense::ParseTreeIndex SmallSense__ParseTreeIndex stx:goodies/smallsense 'SmallSense-Core-Index' 0
SmallSense::ParseTreeIndexEntry SmallSense__ParseTreeIndexEntry stx:goodies/smallsense 'SmallSense-Core-Index' 0
@@ -32,9 +30,7 @@
SmallSense::SmalltalkQuickFixer SmallSense__SmalltalkQuickFixer stx:goodies/smallsense 'SmallSense-Smalltalk-Lint' 0
SmallSense::SmalltalkSyntaxHighlighter SmallSense__SmalltalkSyntaxHighlighter stx:goodies/smallsense 'SmallSense-Smalltalk' 3
SmallSense::SmalltalkUnacceptedMethodEnvironment SmallSense__SmalltalkUnacceptedMethodEnvironment stx:goodies/smallsense 'SmallSense-Smalltalk-Lint' 0
-SmallSense::TestCase SmallSense__TestCase stx:goodies/smallsense 'SmallSense-Tests-Obsolete' 1
SmallSense::TokenPatternMatcher SmallSense__TokenPatternMatcher stx:goodies/smallsense 'SmallSense-Utils-Matcher' 0
-SmallSense::TokenPatternMatcherTests SmallSense__TokenPatternMatcherTests stx:goodies/smallsense 'SmallSense-Tests' 1
SmallSense::TokenPatternParser SmallSense__TokenPatternParser stx:goodies/smallsense 'SmallSense-Utils-Matcher' 0
SmallSense::TokenPatternToken SmallSense__TokenPatternToken stx:goodies/smallsense 'SmallSense-Utils-Matcher' 0
SmallSense::TokenPatternTokenSet SmallSense__TokenPatternTokenSet stx:goodies/smallsense 'SmallSense-Utils-Matcher' 0
@@ -48,11 +44,8 @@
SmallSense::ClassPO SmallSense__ClassPO stx:goodies/smallsense 'SmallSense-Core-Interface-PO' 0
SmallSense::ClassSearchProcessor SmallSense__ClassSearchProcessor stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 1
SmallSense::ClassType SmallSense__ClassType stx:goodies/smallsense 'SmallSense-Smalltalk-Types' 0
-SmallSense::CompletionEngineTests SmallSense__CompletionEngineTests stx:goodies/smallsense 'SmallSense-Tests' 1
SmallSense::CompositeProcessor SmallSense__CompositeProcessor stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 1
SmallSense::ConstantPO SmallSense__ConstantPO stx:goodies/smallsense 'SmallSense-Core-Interface-PO' 0
-SmallSense::EditSupportTests SmallSense__EditSupportTests stx:goodies/smallsense 'SmallSense-Tests' 1
-SmallSense::FinderTests SmallSense__FinderTests stx:goodies/smallsense 'SmallSense-Tests-Obsolete' 1
SmallSense::GenericEditSupport SmallSense__GenericEditSupport stx:goodies/smallsense 'SmallSense-Core-Services' 0
SmallSense::ImplementorSearchProcessor SmallSense__ImplementorSearchProcessor stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 1
SmallSense::JavaEditSupport SmallSense__JavaEditSupport stx:goodies/smallsense 'SmallSense-Java' 0
@@ -62,34 +55,43 @@
SmallSense::MethodPO SmallSense__MethodPO stx:goodies/smallsense 'SmallSense-Core-Interface-PO' 0
SmallSense::PackagePO SmallSense__PackagePO stx:goodies/smallsense 'SmallSense-Core-Interface-PO' 0
SmallSense::PluggablePO SmallSense__PluggablePO stx:goodies/smallsense 'SmallSense-Core-Interface-PO' 0
-SmallSense::RecognizerTests SmallSense__RecognizerTests stx:goodies/smallsense 'SmallSense-Tests-Obsolete' 1
+SmallSense::PluggableSearchProcessor SmallSense__PluggableSearchProcessor stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 1
SmallSense::SmalltalkCompletionEngine SmallSense__SmalltalkCompletionEngine stx:goodies/smallsense 'SmallSense-Smalltalk' 0
SmallSense::SmalltalkEditSupport SmallSense__SmalltalkEditSupport stx:goodies/smallsense 'SmallSense-Smalltalk' 0
SmallSense::SmalltalkInferencer SmallSense__SmalltalkInferencer stx:goodies/smallsense 'SmallSense-Smalltalk-Types-Inference' 0
SmallSense::SmalltalkParseNodeFinder SmallSense__SmalltalkParseNodeFinder stx:goodies/smallsense 'SmallSense-Smalltalk' 0
-SmallSense::SmalltalkParserTests SmallSense__SmalltalkParserTests stx:goodies/smallsense 'SmallSense-Tests-Obsolete' 1
SmallSense::SnippetPO SmallSense__SnippetPO stx:goodies/smallsense 'SmallSense-Core-Interface-PO' 0
SmallSense::UnionType SmallSense__UnionType stx:goodies/smallsense 'SmallSense-Smalltalk-Types' 0
SmallSense::UnknownType SmallSense__UnknownType stx:goodies/smallsense 'SmallSense-Smalltalk-Types' 1
SmallSense::VariableBindingPO SmallSense__VariableBindingPO stx:goodies/smallsense 'SmallSense-Java-Interface-PO' 0
SmallSense::VariablePO SmallSense__VariablePO stx:goodies/smallsense 'SmallSense-Core-Interface-PO' 0
SmallSense::AbstractJavaCompletionEngineSimple SmallSense__AbstractJavaCompletionEngineSimple stx:goodies/smallsense 'SmallSense-Java' 2
-SmallSense::AbstractJavaCompletionEngineTests SmallSense__AbstractJavaCompletionEngineTests stx:goodies/smallsense 'SmallSense-Tests' 1
SmallSense::AbstractSearchDialog SmallSense__AbstractSearchDialog stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 2
SmallSense::AbstractSelectDialog SmallSense__AbstractSelectDialog stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 1
SmallSense::GroovyEditSupport SmallSense__GroovyEditSupport stx:goodies/smallsense 'SmallSense-Groovy' 0
SmallSense::JavaCompletionEngine SmallSense__JavaCompletionEngine stx:goodies/smallsense 'SmallSense-Java' 0
SmallSense::JavaConstructorPO SmallSense__JavaConstructorPO stx:goodies/smallsense 'SmallSense-Java-Interface-PO' 0
-SmallSense::JavaEditSupportTests SmallSense__JavaEditSupportTests stx:goodies/smallsense 'SmallSense-Tests' 1
SmallSense::MethodKeywordRestPO SmallSense__MethodKeywordRestPO stx:goodies/smallsense 'SmallSense-Core-Interface-PO' 0
-SmallSense::SmalltalkCompletionEngineTests SmallSense__SmalltalkCompletionEngineTests stx:goodies/smallsense 'SmallSense-Tests' 1
-SmallSense::SmalltalkEditSupportTests SmallSense__SmalltalkEditSupportTests stx:goodies/smallsense 'SmallSense-Tests' 1
SmallSense::ClassSearchDialog SmallSense__ClassSearchDialog stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 2
-SmallSense::GroovyCompletionEngineSimpleTests SmallSense__GroovyCompletionEngineSimpleTests stx:goodies/smallsense 'SmallSense-Tests' 1
SmallSense::JavaCompletionEngineSimple SmallSense__JavaCompletionEngineSimple stx:goodies/smallsense 'SmallSense-Java' 2
-SmallSense::JavaCompletionEngineTests SmallSense__JavaCompletionEngineTests stx:goodies/smallsense 'SmallSense-Tests' 1
SmallSense::MethodSearchDialog SmallSense__MethodSearchDialog stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 2
SmallSense::Navigator SmallSense__Navigator stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 2
SmallSense::PackageSelectDialog SmallSense__PackageSelectDialog stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 1
SmallSense::ProtocolSelectDialog SmallSense__ProtocolSelectDialog stx:goodies/smallsense 'SmallSense-Core-Interface-Search' 1
SmallSense::GroovyCompletionEngineSimple SmallSense__GroovyCompletionEngineSimple stx:goodies/smallsense 'SmallSense-Groovy' 2
+SmallSense::AbstractJavaCompletionEngineTests SmallSense__AbstractJavaCompletionEngineTests stx:goodies/smallsense 'SmallSense-Tests' 1
+SmallSense::AbstractTestCase SmallSense__AbstractTestCase stx:goodies/smallsense 'SmallSense-Tests' 1
+SmallSense::BaseTestClass SmallSense__BaseTestClass stx:goodies/smallsense 'SmallSense-Tests-Obsolete' 1
+SmallSense::CompletionEngineTests SmallSense__CompletionEngineTests stx:goodies/smallsense 'SmallSense-Tests' 1
+SmallSense::EditSupportTests SmallSense__EditSupportTests stx:goodies/smallsense 'SmallSense-Tests' 1
+SmallSense::FinderTests SmallSense__FinderTests stx:goodies/smallsense 'SmallSense-Tests-Obsolete' 1
+SmallSense::GroovyCompletionEngineSimpleTests SmallSense__GroovyCompletionEngineSimpleTests stx:goodies/smallsense 'SmallSense-Tests' 1
+SmallSense::JavaCompletionEngineEnvironmentResource SmallSense__JavaCompletionEngineEnvironmentResource stx:goodies/smallsense 'SmallSense-Tests' 1
+SmallSense::JavaCompletionEngineTests SmallSense__JavaCompletionEngineTests stx:goodies/smallsense 'SmallSense-Tests' 1
+SmallSense::JavaEditSupportTests SmallSense__JavaEditSupportTests stx:goodies/smallsense 'SmallSense-Tests' 1
+SmallSense::RecognizerTests SmallSense__RecognizerTests stx:goodies/smallsense 'SmallSense-Tests-Obsolete' 1
+SmallSense::SmalltalkCompletionEngineTests SmallSense__SmalltalkCompletionEngineTests stx:goodies/smallsense 'SmallSense-Tests' 1
+SmallSense::SmalltalkEditSupportTests SmallSense__SmalltalkEditSupportTests stx:goodies/smallsense 'SmallSense-Tests' 1
+SmallSense::SmalltalkParserTests SmallSense__SmalltalkParserTests stx:goodies/smallsense 'SmallSense-Tests-Obsolete' 1
+SmallSense::TestCase SmallSense__TestCase stx:goodies/smallsense 'SmallSense-Tests-Obsolete' 1
+SmallSense::TokenPatternMatcherTests SmallSense__TokenPatternMatcherTests stx:goodies/smallsense 'SmallSense-Tests' 1
--- a/bc.mak Fri Jan 23 19:19:02 2015 +0100
+++ b/bc.mak Sat Jan 24 01:58:51 2015 +0000
@@ -35,7 +35,7 @@
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\helpers -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\lint -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser -I$(INCLUDE_TOP)\stx\goodies\regex -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libbasic3 -I$(INCLUDE_TOP)\stx\libcomp -I$(INCLUDE_TOP)\stx\libhtml -I$(INCLUDE_TOP)\stx\libjava -I$(INCLUDE_TOP)\stx\libjava\tools -I$(INCLUDE_TOP)\stx\libtool -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libwidg -I$(INCLUDE_TOP)\stx\libwidg2
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\helpers -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\lint -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser -I$(INCLUDE_TOP)\stx\goodies\regex -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libbasic3 -I$(INCLUDE_TOP)\stx\libcomp -I$(INCLUDE_TOP)\stx\libhtml -I$(INCLUDE_TOP)\stx\libjava -I$(INCLUDE_TOP)\stx\libjava\tools -I$(INCLUDE_TOP)\stx\libtool -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libwidg -I$(INCLUDE_TOP)\stx\libwidg2
LOCALDEFINES=
STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -varPrefix=$(LIBNAME)
@@ -62,7 +62,6 @@
pushd ..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\refactoryBrowser\browser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
- pushd ..\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\refactoryBrowser\lint & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\libhtml & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
@@ -98,6 +97,7 @@
$(OUTDIR)SmallSense__EditSupport.$(O) SmallSense__EditSupport.$(H): SmallSense__EditSupport.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__Info.$(O) SmallSense__Info.$(H): SmallSense__Info.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__Manager.$(O) SmallSense__Manager.$(H): SmallSense__Manager.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__NavigatorStep.$(O) SmallSense__NavigatorStep.$(H): SmallSense__NavigatorStep.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__PO.$(O) SmallSense__PO.$(H): SmallSense__PO.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
$(OUTDIR)SmallSense__ParseTreeIndex.$(O) SmallSense__ParseTreeIndex.$(H): SmallSense__ParseTreeIndex.st $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(STCHDR)
$(OUTDIR)SmallSense__ParseTreeIndexEntry.$(O) SmallSense__ParseTreeIndexEntry.$(H): SmallSense__ParseTreeIndexEntry.st $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -137,6 +137,7 @@
$(OUTDIR)SmallSense__MethodPO.$(O) SmallSense__MethodPO.$(H): SmallSense__MethodPO.st $(INCLUDE_TOP)\stx\goodies\smallsense\SmallSense__PO.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
$(OUTDIR)SmallSense__PackagePO.$(O) SmallSense__PackagePO.$(H): SmallSense__PackagePO.st $(INCLUDE_TOP)\stx\goodies\smallsense\SmallSense__PO.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
$(OUTDIR)SmallSense__PluggablePO.$(O) SmallSense__PluggablePO.$(H): SmallSense__PluggablePO.st $(INCLUDE_TOP)\stx\goodies\smallsense\SmallSense__PO.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)SmallSense__PluggableSearchProcessor.$(O) SmallSense__PluggableSearchProcessor.$(H): SmallSense__PluggableSearchProcessor.st $(INCLUDE_TOP)\stx\goodies\smallsense\SmallSense__AbstractSearchProcessor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__SmalltalkCompletionEngine.$(O) SmallSense__SmalltalkCompletionEngine.$(H): SmallSense__SmalltalkCompletionEngine.st $(INCLUDE_TOP)\stx\goodies\smallsense\SmallSense__CompletionEngine.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__SmalltalkEditSupport.$(O) SmallSense__SmalltalkEditSupport.$(H): SmallSense__SmalltalkEditSupport.st $(INCLUDE_TOP)\stx\goodies\smallsense\SmallSense__EditSupport.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)SmallSense__SmalltalkInferencer.$(O) SmallSense__SmalltalkInferencer.$(H): SmallSense__SmalltalkInferencer.st $(INCLUDE_TOP)\stx\goodies\smallsense\SmallSense__SmalltalkParseNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/extensions.st Fri Jan 23 19:19:02 2015 +0100
+++ b/extensions.st Sat Jan 24 01:58:51 2015 +0000
@@ -589,6 +589,37 @@
"Created: / 25-11-2013 / 12:27:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!Tools::NewSystemBrowser methodsFor:'menu actions-searching-SmallSense'!
+
+searchMenuOpenNavigatorOnDeclarations
+ "Open a SmallSense navigator on definitions (i.e.,
+ navugating to a class or or method implementor)"
+
+ | result |
+
+ result := SmallSense::Navigator open.
+ result isBehavior ifTrue:[
+ self switchToClass: result.
+ ^ self
+ ].
+ result isMethod ifTrue:[
+ self switchToClass: result mclass selector: result selector.
+ ^ self
+ ].
+ result isCollection ifTrue:[
+ (result allSatisfy:[:e|e isMethod]) ifTrue:[
+ self spawnMethodBrowserForSearch:[ result ]
+ sortBy:#class
+ in:#newBuffer
+ label:(resources string: 'Implementors of %1' with: result anElement selector storeString)
+ ].
+ ^ self
+ ].
+ ^ self
+
+ "Created: / 23-01-2015 / 20:31:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!Tools::NewSystemBrowser methodsFor:'private-searching-smallsense'!
smallSenseSearchCompletion:patternString
@@ -725,30 +756,9 @@
| key |
key := anEvent key.
- key == #Find ifTrue:[
- (anEvent targetView isSameOrComponentOf:self codeView) ifFalse:[
- | result |
-
- result := SmallSense::Navigator open.
- result isBehavior ifTrue:[
- self switchToClass: result.
- ^ true
- ].
- result isMethod ifTrue:[
- self switchToClass: result mclass selector: result selector.
- ^ true
- ].
- result isCollection ifTrue:[
- (result allSatisfy:[:e|e isMethod]) ifTrue:[
- self spawnMethodBrowserForSearch:[ result ]
- sortBy:#class
- in:#newBuffer
- label:(resources string: 'Implementors of %1' with: result anElement selector storeString)
- ].
- ^ true
- ].
- ^ true
- ].
+ key == #CtrlT ifTrue:[
+ self searchMenuOpenNavigatorOnDeclarations.
+ ^ true
].
]
].
@@ -759,7 +769,7 @@
"
"Created: / 10-01-2015 / 13:37:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 14-01-2015 / 16:30:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 24-01-2015 / 01:47:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!Tools::NewSystemBrowser class methodsFor:'utilities'!
--- a/libInit.cc Fri Jan 23 19:19:02 2015 +0100
+++ b/libInit.cc Sat Jan 24 01:58:51 2015 +0000
@@ -41,6 +41,7 @@
_SmallSense__EditSupport_Init(pass,__pRT__,snd);
_SmallSense__Info_Init(pass,__pRT__,snd);
_SmallSense__Manager_Init(pass,__pRT__,snd);
+_SmallSense__NavigatorStep_Init(pass,__pRT__,snd);
_SmallSense__PO_Init(pass,__pRT__,snd);
_SmallSense__ParseTreeIndex_Init(pass,__pRT__,snd);
_SmallSense__ParseTreeIndexEntry_Init(pass,__pRT__,snd);
@@ -80,6 +81,7 @@
_SmallSense__MethodPO_Init(pass,__pRT__,snd);
_SmallSense__PackagePO_Init(pass,__pRT__,snd);
_SmallSense__PluggablePO_Init(pass,__pRT__,snd);
+_SmallSense__PluggableSearchProcessor_Init(pass,__pRT__,snd);
_SmallSense__SmalltalkCompletionEngine_Init(pass,__pRT__,snd);
_SmallSense__SmalltalkEditSupport_Init(pass,__pRT__,snd);
_SmallSense__SmalltalkInferencer_Init(pass,__pRT__,snd);
--- a/smallsense.rc Fri Jan 23 19:19:02 2015 +0100
+++ b/smallsense.rc Sat Jan 24 01:58:51 2015 +0000
@@ -25,7 +25,7 @@
VALUE "LegalCopyright", "Copyright Jan Vrany 2013-2014\0"
VALUE "ProductName", "SmallSense\0"
VALUE "ProductVersion", "6.2.5.0\0"
- VALUE "ProductDate", "Mon, 12 Jan 2015 09:42:27 GMT\0"
+ VALUE "ProductDate", "Sat, 24 Jan 2015 01:53:31 GMT\0"
END
END
--- a/stx_goodies_smallsense.st Fri Jan 23 19:19:02 2015 +0100
+++ b/stx_goodies_smallsense.st Sat Jan 24 01:58:51 2015 +0000
@@ -90,8 +90,7 @@
#'stx:goodies/refactoryBrowser/lint' "RBBasicLintRule - extended"
#'stx:goodies/refactoryBrowser/parser' "RBBlockNode - extended"
#'stx:goodies/regex' "Regex::RxCharSetParser - superclass of SmallSense::TokenPatternParser::TokenSpecParser"
- #'stx:goodies/sunit' "TestAsserter - superclass of SmallSense::AbstractJavaCompletionEngineTests"
- #'stx:libbasic' "Collection - extended"
+ #'stx:libbasic' "Autoload - superclass of SmallSense::AbstractJavaCompletionEngineTests"
#'stx:libcomp' "AbstractSyntaxHighlighter - superclass of SmallSense::SmalltalkParser"
#'stx:libhtml' "HTMLDocumentFrame - extended"
#'stx:libtool' "AbstractSettingsApplication - superclass of SmallSense::SettingsAppl"
@@ -139,8 +138,6 @@
"<className> or (<className> attributes...) in load order"
#'SmallSense::AbstractDIalog'
#'SmallSense::AbstractSearchProcessor'
- (#'SmallSense::AbstractTestCase' autoload)
- (#'SmallSense::BaseTestClass' autoload)
#'SmallSense::CodeHighlightingService'
#'SmallSense::CodeNavigationService'
#'SmallSense::CompletionContext'
@@ -152,8 +149,8 @@
#'SmallSense::EditService'
#'SmallSense::EditSupport'
#'SmallSense::Info'
- (#'SmallSense::JavaCompletionEngineEnvironmentResource' autoload)
#'SmallSense::Manager'
+ #'SmallSense::NavigatorStep'
#'SmallSense::PO'
#'SmallSense::ParseTreeIndex'
#'SmallSense::ParseTreeIndexEntry'
@@ -168,9 +165,7 @@
#'SmallSense::SmalltalkQuickFixer'
#'SmallSense::SmalltalkSyntaxHighlighter'
#'SmallSense::SmalltalkUnacceptedMethodEnvironment'
- (#'SmallSense::TestCase' autoload)
#'SmallSense::TokenPatternMatcher'
- (#'SmallSense::TokenPatternMatcherTests' autoload)
#'SmallSense::TokenPatternParser'
#'SmallSense::TokenPatternToken'
#'SmallSense::TokenPatternTokenSet'
@@ -184,11 +179,8 @@
#'SmallSense::ClassPO'
#'SmallSense::ClassSearchProcessor'
#'SmallSense::ClassType'
- (#'SmallSense::CompletionEngineTests' autoload)
#'SmallSense::CompositeProcessor'
#'SmallSense::ConstantPO'
- (#'SmallSense::EditSupportTests' autoload)
- (#'SmallSense::FinderTests' autoload)
#'SmallSense::GenericEditSupport'
#'SmallSense::ImplementorSearchProcessor'
#'SmallSense::JavaEditSupport'
@@ -198,37 +190,46 @@
#'SmallSense::MethodPO'
#'SmallSense::PackagePO'
#'SmallSense::PluggablePO'
- (#'SmallSense::RecognizerTests' autoload)
+ #'SmallSense::PluggableSearchProcessor'
#'SmallSense::SmalltalkCompletionEngine'
#'SmallSense::SmalltalkEditSupport'
#'SmallSense::SmalltalkInferencer'
#'SmallSense::SmalltalkParseNodeFinder'
- (#'SmallSense::SmalltalkParserTests' autoload)
#'SmallSense::SnippetPO'
#'SmallSense::UnionType'
#'SmallSense::UnknownType'
#'SmallSense::VariableBindingPO'
#'SmallSense::VariablePO'
#'SmallSense::AbstractJavaCompletionEngineSimple'
- (#'SmallSense::AbstractJavaCompletionEngineTests' autoload)
#'SmallSense::AbstractSearchDialog'
#'SmallSense::AbstractSelectDialog'
#'SmallSense::GroovyEditSupport'
#'SmallSense::JavaCompletionEngine'
#'SmallSense::JavaConstructorPO'
- (#'SmallSense::JavaEditSupportTests' autoload)
#'SmallSense::MethodKeywordRestPO'
- (#'SmallSense::SmalltalkCompletionEngineTests' autoload)
- (#'SmallSense::SmalltalkEditSupportTests' autoload)
#'SmallSense::ClassSearchDialog'
- (#'SmallSense::GroovyCompletionEngineSimpleTests' autoload)
#'SmallSense::JavaCompletionEngineSimple'
- (#'SmallSense::JavaCompletionEngineTests' autoload)
#'SmallSense::MethodSearchDialog'
#'SmallSense::Navigator'
#'SmallSense::PackageSelectDialog'
#'SmallSense::ProtocolSelectDialog'
#'SmallSense::GroovyCompletionEngineSimple'
+ (#'SmallSense::AbstractJavaCompletionEngineTests' autoload)
+ (#'SmallSense::AbstractTestCase' autoload)
+ (#'SmallSense::BaseTestClass' autoload)
+ (#'SmallSense::CompletionEngineTests' autoload)
+ (#'SmallSense::EditSupportTests' autoload)
+ (#'SmallSense::FinderTests' autoload)
+ (#'SmallSense::GroovyCompletionEngineSimpleTests' autoload)
+ (#'SmallSense::JavaCompletionEngineEnvironmentResource' autoload)
+ (#'SmallSense::JavaCompletionEngineTests' autoload)
+ (#'SmallSense::JavaEditSupportTests' autoload)
+ (#'SmallSense::RecognizerTests' autoload)
+ (#'SmallSense::SmalltalkCompletionEngineTests' autoload)
+ (#'SmallSense::SmalltalkEditSupportTests' autoload)
+ (#'SmallSense::SmalltalkParserTests' autoload)
+ (#'SmallSense::TestCase' autoload)
+ (#'SmallSense::TokenPatternMatcherTests' autoload)
)
!
@@ -302,6 +303,7 @@
#'Tools::LintService' showInfoWindowForLine:
#'Tools::NewSystemBrowser' #'stx_goodies_smallsense_askForMethodCategory:title:okLabel:list:recentList:initialAnswer:'
#'Tools::NewSystemBrowser' #'stx_goodies_smallsense_processEvent:'
+ #'Tools::NewSystemBrowser' searchMenuOpenNavigatorOnDeclarations
)
! !