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'! |