Tools_ImplementingMethodList.st
author penk
Tue, 16 Mar 2004 16:59:49 +0100
changeset 5740 fd67f31da836
parent 5592 d9730a8d7c52
child 6179 182d948dcf05
permissions -rw-r--r--
update now reread all the items
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5592
d9730a8d7c52 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5591
diff changeset
     1
"{ Package: 'stx:libtool' }"
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ NameSpace: Tools }"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
MethodList subclass:#ImplementingMethodList
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:'selectorList selectedSelectors'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	category:'Interface-Browsers-New'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!ImplementingMethodList class methodsFor:'documentation'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
documentation
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
    Like a ClassList, but shows classes hierarchical.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
    If topClassHolders value is non-nil, only that classes hierarchy
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
    is shown.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    embeddable application displaying the classes as listed by
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
    the inputGenerator.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
    Provides an outputGenerator, which enumerates the classes and
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
    their protocols (method-categories) in the selected classes.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
    [author:]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
	Claus Gittinger (cg@exept.de)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!ImplementingMethodList class methodsFor:'plugIn spec'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
aspectSelectors
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    "This resource specification was automatically generated
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
     by the UIPainter of ST/X."
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    "Do not manually edit this. If it is corrupted,
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
     the UIPainter may not be able to read the specification."
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    "Return a description of exported aspects;
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
     these can be connected to aspects of an embedding application
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
     (if this app is embedded in a subCanvas)."
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    ^ #(
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	#classHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
	#(#doubleClickChannel #action )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
	#forceGeneratorTrigger
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
	#immediateUpdate
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
	#inGeneratorHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	#outGeneratorHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
	#menuHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	#methodCategoryHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	#packageFilter
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	#selectedMethods
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
	#selectionChangeCondition
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	#updateTrigger
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
      ).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
!ImplementingMethodList methodsFor:'aspects'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
selectedSelectors
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    selectedSelectors isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
	selectedSelectors := ValueHolder new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
	selectedSelectors addDependent:self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    ^ selectedSelectors.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
!ImplementingMethodList methodsFor:'change & update'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
delayedUpdate:something with:aParameter from:changedObject
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    changedObject == selectedMethodNameIndices ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
"/        self selectedMethods value:(self selectedMethodNameIndices value collect:[:idx | methodList at:idx]).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
"/        lastSelectedMethods := self selectedMethods value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
        
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	self selectedSelectors value:(self selectedMethodNameIndices value collect:[:idx | selectorList at:idx]).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
	"/ lastSelectedSelectors := self selectedSelectors value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
	^ self 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    changedObject == selectedSelectors ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
	self updateOutputGenerator.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
	^ self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    super delayedUpdate:something with:aParameter from:changedObject
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    "Created: / 5.2.2000 / 13:42:14 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    "Modified: / 6.2.2000 / 00:05:26 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
selectedMethodsChanged
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
    self updateOutputGenerator
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
selectionChanged
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    self halt:'should not happen'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!ImplementingMethodList methodsFor:'generators'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
makeGenerator
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    "return a generator which enumerates the methods from the selected protocol;
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
     that generator generates 4-element elements (includes the class and protocol), 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
     in order to make the consumers only depend on one input 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
     (i.e. to pass multiple-class and multiple-protocol info
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
      without a need for another classHolder/protocolHolder in the methodList)."
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    ^ Iterator on:[:whatToDo |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
			|selectors items packages|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
			items := OrderedCollection new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
			selectors := self selectedSelectors value ? #().
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
			selectors size > 0 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
			    packages := packageFilter value value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
			    selectors do:[:eachSelector |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
				classes do:[:eachClass | |mthd|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
				    mthd := eachClass compiledMethodAt:eachSelector.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
				    mthd notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
					(packages isNil
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
					or:[packages includes:mthd package]) ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
					    items add:(Array with:eachClass with:mthd category with:eachSelector with:mthd)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
					]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
				    ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
				]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
			    ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
			].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
			items sort:[:a :b |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
					|nm1 nm2 sel1 sel2|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
					nm1 := (a at:1) name.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
					nm2 := (b at:1) name.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
					nm1 < nm2 ifTrue:[ true ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
					ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
					    nm1 = nm2 ifFalse:[ false ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
					    ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
						sel1 := a at:3.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
						sel2 := b at:3.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
						sel1 < sel2
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
					    ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
					]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
				    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
			items do:[:eachItem | whatToDo valueWithArguments:eachItem].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
		  ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
!ImplementingMethodList methodsFor:'private'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
listOfMethodNames
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    |entries selectorsAlready newNameList 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
     newClasses allCategories allSelectors generator 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
     "showCategory"  categoryOrCountPerSelector|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    generator := inGeneratorHolder value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    generator isNil ifTrue:[^ #() ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
    newClasses := IdentitySet new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
    selectorsAlready := IdentitySet new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    entries := OrderedCollection new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    allCategories := Set new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    allSelectors := Bag identityNew.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    categoryOrCountPerSelector := IdentityDictionary new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    "/ generator generates nil-selector entries
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    "/ to pass multiple-class and multiple-protocol info
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
    generator do:[:cls :cat :sel :mthd | 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
			|catsAlready|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
			sel notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
			    (selectorsAlready includes:sel) ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
				entries add:(Array with:cls with:sel with:mthd).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
				selectorsAlready add:sel
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
			    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
			    newClasses add:cls.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
			    allCategories add:cat.    
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
			    allSelectors add:sel.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
			    catsAlready := categoryOrCountPerSelector at:sel ifAbsent:nil.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
			    catsAlready isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
				categoryOrCountPerSelector at:sel put:cat.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
			    ] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
				catsAlready isInteger ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
				    categoryOrCountPerSelector at:sel put:(catsAlready + 1).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
				] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
				    catsAlready ~= cat ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
					categoryOrCountPerSelector at:sel put:2.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
				    ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
				]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
			    ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
			]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
		 ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    entries sort:[:a :b | |nmA nmB clsNmA clsNmB|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
			   nmA := (a at:2).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
			   nmB := (b at:2).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
			   nmA = nmB ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
			       clsNmA := (a at:1) name.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
			       clsNmB := (b at:1) name.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
			       clsNmA < clsNmB
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
			   ] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
			       nmA < nmB
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
			   ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
		 ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
    newNameList := OrderedCollection new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
    selectorList := OrderedCollection new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    "/ showCategory := allCategories size > 1.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
    entries do:[:entry |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
	|cls sel mthd s catOrCounts|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
	cls := entry at:1.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
	sel := entry at:2.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
	mthd := entry at:3.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
"/        s := self 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
"/                listEntryForMethod:mthd 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
"/                selector:sel 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
"/                class:cls 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
"/                showClass:false 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
"/                showCategory:showCategory
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
"/                classFirst:false.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
"/        newNameList add:s.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
        
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
	selectorList add:sel.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
	s := sel.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
	catOrCounts := categoryOrCountPerSelector at:sel.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
	catOrCounts isInteger ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
	    s := s , ' { ... }'  "/ in multiple categories
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
	] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
	    allCategories size > 1 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
		s := s , ' {' , catOrCounts , '}'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
	    ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
	newNameList add:s.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
    classes := newClasses.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
    ^ newNameList.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
    "Created: / 5.2.2000 / 22:43:40 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
    "Modified: / 1.3.2000 / 21:00:26 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
release
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    super release.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    selectedSelectors removeDependent:self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
!ImplementingMethodList class methodsFor:'documentation'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
version
5592
d9730a8d7c52 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5591
diff changeset
   265
    ^ '$Header: /cvs/stx/stx/libtool/Tools_ImplementingMethodList.st,v 1.2 2004-02-26 19:03:55 cg Exp $'
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
! !