"{ Package: 'stx:libtool' }"
"{ NameSpace: Tools }"
MethodCategoryList subclass:#FullMethodCategoryList
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Interface-Browsers-New'
!
!FullMethodCategoryList class methodsFor:'documentation'!
documentation
"
embeddable application displaying the classes as listed by
the inputGenerator.
Provides an outputGenerator, which enumerates the classes and
their protocols (method-categories) in the selected classes.
[author:]
Claus Gittinger (cg@exept.de)
"
! !
!FullMethodCategoryList methodsFor:'generators'!
makeGenerator
"return a generator which enumerates the methods from the selected protocol;
that generator generates 4-element elements (includes the class and protocol),
in order to make the consumers only depend on one input
(i.e. to pass multiple-class and multiple-protocol info
without a need for another classHolder/protocolHolder in the methodList)."
^ Iterator on:[:whatToDo |
|protocols all packages theProtocol|
protocols := self selectedProtocols value ? #().
all := protocols includes:(self class nameListEntryForALL).
packages := packageFilter value value.
protocols size > 0 ifTrue:[
protocols size == 1 ifTrue:[
theProtocol := protocols first.
Smalltalk allClassesDo:[:eachClass |
eachClass instAndClassSelectorsAndMethodsDo:[:sel :eachMethod |
|cat|
cat := eachMethod category.
(all
or:[theProtocol = cat]) ifTrue:[
(packages isNil
or:[packages includes:eachMethod package])
ifTrue:[
whatToDo value:eachMethod mclass value:cat value:sel value:eachMethod.
].
].
].
]
] ifFalse:[
Smalltalk allClassesDo:[:eachClass |
eachClass instAndClassSelectorsAndMethodsDo:[:sel :eachMethod |
|cat|
cat := eachMethod category.
(all
or:[protocols includes:cat]) ifTrue:[
(packages isNil
or:[packages includes:eachMethod package])
ifTrue:[
whatToDo value:eachMethod mclass value:cat value:sel value:eachMethod.
].
].
].
]
]
]
]
! !
!FullMethodCategoryList methodsFor:'private'!
listOfMethodCategories
|categories|
categories := Set new.
"return all existing categories"
Method allInstancesDo:[:eachMethod |
categories add:eachMethod category
].
categories := categories asOrderedCollection sort.
categories addFirst:(self class nameListEntryForALL).
^ categories
! !
!FullMethodCategoryList class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libtool/Tools_FullMethodCategoryList.st,v 1.2 2004-02-26 19:03:55 cg Exp $'
! !