diff -r 2902c1233b4e -r 19e31edb0dd6 MethodFinderWindow.st --- a/MethodFinderWindow.st Wed May 04 07:51:59 2016 +0200 +++ b/MethodFinderWindow.st Wed May 04 22:39:03 2016 +0200 @@ -98,7 +98,7 @@ ) (ComboListSpec name: 'allowedArgments' - layout: (LayoutFrame 0 0.34000000000000002 1 0 0 0.64000000000000012 28 0) + layout: (LayoutFrame 0 0.34000000000000002 1 0 0 0.64000000000000024 28 0) model: argCountHolder comboList: argCountList useIndex: true @@ -106,7 +106,7 @@ (LabelSpec label: 'Answer' name: 'MessageAnswerLabel' - layout: (LayoutFrame 0 0.64000000000000012 0 0 0 1 28 0) + layout: (LayoutFrame 0 0.64000000000000024 0 0 0 1 28 0) translateLabel: true ) (HorizontalPanelViewSpec @@ -261,7 +261,7 @@ ) (ViewSpec name: 'MatchActionBox' - layout: (LayoutFrame 0 0 -70 0.5 0 1 -20 0.5) + layout: (LayoutFrame 0 0 -70 0.5 0 1 10 0.5) component: (SpecCollection collection: ( @@ -274,7 +274,7 @@ ) (InputFieldSpec name: 'EntryField1' - layout: (LayoutFrame 0 0 -25 1 0 0.5 0 1) + layout: (LayoutFrame 2 0 -54 1 -2 1 -29 1) model: selectorPattern immediateAccept: true acceptOnReturn: true @@ -295,13 +295,12 @@ ) (SequenceViewSpec name: 'ResultList' - layout: (LayoutFrame 0 0 -15 0.5 0 1 0 1) + layout: (LayoutFrame 0 0 15 0.5 0 1 0 1) model: selectedImplementorsHolder menu: resultListMenu hasHorizontalScrollBar: true hasVerticalScrollBar: true autoHideScrollBars: true - valueChangeSelector: updateImplementorsOf: useIndex: true sequenceList: resultHolder ) @@ -343,7 +342,7 @@ ) ) - handles: (Any 0.37391304347826088 1.0) + handles: (Any 0.37391304347826093 1.0) ) ) @@ -487,6 +486,8 @@ app allButOpen. app selectorPattern value:selector. app openWindow. + "/ app waitForBackgroundSearchFinished. + ^ app " @@ -831,13 +832,15 @@ searchProcess := [ - |list counts firsts seconds selectors resultList| + |list counts firsts seconds selectors resultList idx match| self withCursor:Cursor execute do:[ pattern includesMatchCharacters ifFalse:[ - pattern := '*',pattern,'*' + list := SystemBrowser findImplementorsOf:pattern in:Smalltalk allClasses ignoreCase:true. + ] ifTrue:[ + match := '*',pattern,'*'. + list := SystemBrowser findImplementorsMatching:match in:Smalltalk allClasses ignoreCase:true. ]. - list := SystemBrowser findImplementorsMatching:pattern in:Smalltalk allClasses ignoreCase:true. ]. counts := IdentityDictionary new. @@ -875,7 +878,13 @@ ] ]. ]. - self enqueueDelayedAction:[ self updateListAfterPatternSearch: resultList ] + self enqueueDelayedAction:[ self updateListAfterPatternSearch: resultList ]. + "/ is it in the list? + idx := resultSelectors indexOf:pattern. + idx ~~ 0 ifTrue:[ + self enqueueDelayedAction:[ self selectedImplementorsHolder value:idx ]. + ]. + ] fork. "Created: / 01-06-2012 / 13:16:54 / cg" @@ -942,6 +951,14 @@ self resultHolder value:resultList. "Created: / 01-06-2012 / 13:17:34 / cg" +! + +waitForBackgroundSearchFinished + | p | + + (p := searchProcess) isNil ifTrue:[^ self]. + p isDead ifTrue:[^ self]. + p waitUntilTerminated ! ! !MethodFinderWindow methodsFor:'aspects'! @@ -1069,6 +1086,7 @@ (holder := builder bindingAt:#selectedImplementorsHolder) isNil ifTrue:[ holder := ValueHolder new. + holder onChangeEvaluate:[self updateImplementorsOf:holder value]. builder aspectAt:#selectedImplementorsHolder put:holder ]. ^ holder @@ -1213,10 +1231,10 @@ recClass := receiver value class. unmarkedClassList := anOrderedCollection copy. unmarkedClassList do:[:classAndMethod | - |class| + |className class sel| - class := Compiler - evaluate:(classAndMethod upToAll:aSelector). + className := classAndMethod copyButLast:aSelector size. + class := Smalltalk classNamed:className. "/ Compiler evaluate:className. "/ (recClass == class)