MethodFinderWindow.st
changeset 2892 a1349bc5e2fe
parent 2891 d4f1cd8626e6
child 2927 558cd901ebce
equal deleted inserted replaced
2891:d4f1cd8626e6 2892:a1349bc5e2fe
   790     "Modified: / 13.11.2001 / 12:48:56 / cg"
   790     "Modified: / 13.11.2001 / 12:48:56 / cg"
   791 !
   791 !
   792 
   792 
   793 updateImplementorsOf:anInteger 
   793 updateImplementorsOf:anInteger 
   794     "Request the implementors of the selected argument provided by aNumber.
   794     "Request the implementors of the selected argument provided by aNumber.
   795      Return the receiver. "
   795      Return the receiver."
   796       |methods classList aNumber|
   796     
   797 
   797     |methods classList aNumber|
   798 
   798 
   799        (anInteger isNil) ifTrue:[^self].
   799     (anInteger isNil) ifTrue:[
   800       anInteger isNil ifTrue:[aNumber:=1]
   800         ^ self
   801                       ifFalse:[aNumber:=anInteger].  
   801     ].
   802       methods:=SystemBrowser findImplementorsOf: (resultSelectors at:aNumber) in:Smalltalk allClasses ignoreCase:false.
   802     anInteger isNil ifTrue:[
   803       classList:=methods asOrderedCollection collect:[:m | m mclass name , ' ' , m selector].
   803         aNumber := 1
   804 
   804     ] ifFalse:[
   805       classList:=(self markMatchingClasses:(resultSelectors at:aNumber) classesWithSelector:classList).
   805         aNumber := anInteger
   806 
   806     ].
   807     self classOfResultHolder value: classList.
   807     methods := SystemBrowser 
   808     self selectedClassOfResultHolder value:nil.
   808             findImplementorsOf:(resultSelectors at:aNumber)
   809 
   809             in:Smalltalk allClasses
   810     "Modified: / 13.11.2001 / 12:07:31 / cg"
   810             ignoreCase:false.
   811 !
   811     classList := methods asOrderedCollection 
   812 
   812             collect:[:m | m mclass name , ' ' , m selector ].
   813 updateListAfterPatternSearch:list
   813     classList := (self markMatchingClasses:(resultSelectors at:aNumber)
       
   814             classesWithSelector:classList).
       
   815     self classOfResultHolder value:classList.
       
   816     classList size > 0 ifTrue:[
       
   817         self selectedClassOfResultHolder value:(classList first).
       
   818         self selectedClassOfResultHolderChanged.
       
   819     ] ifFalse:[
       
   820         self selectedClassOfResultHolder value:nil.
       
   821     ].
       
   822 
       
   823     "Modified (comment): / 24-06-2012 / 18:41:45 / cg"
       
   824 !
       
   825 
       
   826 updateListAfterPatternSearch:list 
   814     "Do a search based on the pattern match"
   827     "Do a search based on the pattern match"
   815 
   828     
   816     | selectors counts|
   829     |selectors counts firsts|
   817 
   830 
   818     self resultHolder value: nil.                "reset the result list"
   831     self resultHolder value:nil.
   819     self classOfResultHolder value: nil.         "reset the implementorOf list"
   832     self classOfResultHolder value:nil.
   820     self codeHolder value: nil.                  "reset the source"
   833     self codeHolder value:nil.
   821 
       
   822     counts := IdentityDictionary new.
   834     counts := IdentityDictionary new.
       
   835     firsts := IdentityDictionary new.
   823     selectors := IdentitySet new.
   836     selectors := IdentitySet new.
   824 
   837     list do:[:eachMethod | 
   825     list do:[:eachMethod |
   838         selectors add:eachMethod selector.
   826         selectors add: eachMethod selector.
   839         (counts at:(eachMethod selector) ifAbsentPut:[ 0 asValue ]) increment.
   827         (counts at:(eachMethod selector) ifAbsentPut:[0 asValue]) increment
   840         firsts at:(eachMethod selector) ifAbsentPut:[ eachMethod mclass ].
   828     ].
   841     ].
   829 
       
   830     resultSelectors := selectors asOrderedCollection sort.
   842     resultSelectors := selectors asOrderedCollection sort.
   831 
   843     self resultHolder value:(resultSelectors 
   832     self resultHolder value: (resultSelectors collect:[:sel | sel,' --> ',(counts at:sel) value printString,' implementor(s)']).
   844                 collect:[:sel | 
       
   845                     |cnt|
       
   846 
       
   847                     cnt := (counts at:sel) value.
       
   848                     cnt == 1 ifTrue:[
       
   849                         sel , ' --> ' , (firsts at:sel) name
       
   850                     ] ifFalse:[
       
   851                         sel , ' --> ' , cnt printString , ' implementor(s)'
       
   852                     ].
       
   853                 ]).
   833 
   854 
   834     "Created: / 01-06-2012 / 13:17:34 / cg"
   855     "Created: / 01-06-2012 / 13:17:34 / cg"
   835 ! !
   856 ! !
   836 
   857 
   837 !MethodFinderWindow methodsFor:'aspects'!
   858 !MethodFinderWindow methodsFor:'aspects'!