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