--- a/MethodFinderWindow.st Fri Jun 01 13:22:10 2012 +0200
+++ b/MethodFinderWindow.st Sun Jun 24 18:42:06 2012 +0200
@@ -792,44 +792,65 @@
updateImplementorsOf:anInteger
"Request the implementors of the selected argument provided by aNumber.
- Return the receiver. "
- |methods classList aNumber|
-
+ Return the receiver."
+
+ |methods classList aNumber|
- (anInteger isNil) ifTrue:[^self].
- anInteger isNil ifTrue:[aNumber:=1]
- ifFalse:[aNumber:=anInteger].
- methods:=SystemBrowser findImplementorsOf: (resultSelectors at:aNumber) in:Smalltalk allClasses ignoreCase:false.
- classList:=methods asOrderedCollection collect:[:m | m mclass name , ' ' , m selector].
+ (anInteger isNil) ifTrue:[
+ ^ self
+ ].
+ anInteger isNil ifTrue:[
+ aNumber := 1
+ ] ifFalse:[
+ aNumber := anInteger
+ ].
+ methods := SystemBrowser
+ findImplementorsOf:(resultSelectors at:aNumber)
+ in:Smalltalk allClasses
+ ignoreCase:false.
+ classList := methods asOrderedCollection
+ collect:[:m | m mclass name , ' ' , m selector ].
+ classList := (self markMatchingClasses:(resultSelectors at:aNumber)
+ classesWithSelector:classList).
+ self classOfResultHolder value:classList.
+ classList size > 0 ifTrue:[
+ self selectedClassOfResultHolder value:(classList first).
+ self selectedClassOfResultHolderChanged.
+ ] ifFalse:[
+ self selectedClassOfResultHolder value:nil.
+ ].
- classList:=(self markMatchingClasses:(resultSelectors at:aNumber) classesWithSelector:classList).
-
- self classOfResultHolder value: classList.
- self selectedClassOfResultHolder value:nil.
-
- "Modified: / 13.11.2001 / 12:07:31 / cg"
+ "Modified (comment): / 24-06-2012 / 18:41:45 / cg"
!
-updateListAfterPatternSearch:list
+updateListAfterPatternSearch:list
"Do a search based on the pattern match"
-
- | selectors counts|
+
+ |selectors counts firsts|
- self resultHolder value: nil. "reset the result list"
- self classOfResultHolder value: nil. "reset the implementorOf list"
- self codeHolder value: nil. "reset the source"
-
+ self resultHolder value:nil.
+ self classOfResultHolder value:nil.
+ self codeHolder value:nil.
counts := IdentityDictionary new.
+ firsts := IdentityDictionary new.
selectors := IdentitySet new.
+ list do:[:eachMethod |
+ selectors add:eachMethod selector.
+ (counts at:(eachMethod selector) ifAbsentPut:[ 0 asValue ]) increment.
+ firsts at:(eachMethod selector) ifAbsentPut:[ eachMethod mclass ].
+ ].
+ resultSelectors := selectors asOrderedCollection sort.
+ self resultHolder value:(resultSelectors
+ collect:[:sel |
+ |cnt|
- list do:[:eachMethod |
- selectors add: eachMethod selector.
- (counts at:(eachMethod selector) ifAbsentPut:[0 asValue]) increment
- ].
-
- resultSelectors := selectors asOrderedCollection sort.
-
- self resultHolder value: (resultSelectors collect:[:sel | sel,' --> ',(counts at:sel) value printString,' implementor(s)']).
+ cnt := (counts at:sel) value.
+ cnt == 1 ifTrue:[
+ sel , ' --> ' , (firsts at:sel) name
+ ] ifFalse:[
+ sel , ' --> ' , cnt printString , ' implementor(s)'
+ ].
+ ]).
"Created: / 01-06-2012 / 13:17:34 / cg"
! !