Tools_HierarchicalClassList.st
author Claus Gittinger <cg@exept.de>
Thu, 11 Nov 2004 10:14:21 +0100
changeset 6129 4203bef24b27
parent 5592 d9730a8d7c52
child 6179 182d948dcf05
permissions -rw-r--r--
*** empty log message ***
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
ClassList subclass:#HierarchicalClassList
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:'topClassHolder'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:'InheritedEntry'
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
!HierarchicalClassList 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
!HierarchicalClassList class methodsFor:'initialization'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
initialize
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    InheritedEntry := '* inheritance *'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
    "Created: / 24.2.2000 / 20:19:19 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
!HierarchicalClassList class methodsFor:'queries-plugin'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
aspectSelectors
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    ^ super aspectSelectors ,
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
       #(  
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
	  topClassHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
!HierarchicalClassList methodsFor:'aspects'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
topClassHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    topClassHolder isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
	topClassHolder := ValueHolder new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	topClassHolder addDependent:self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    ^ topClassHolder
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
topClassHolder:aTriggerValue
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    topClassHolder notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	topClassHolder removeDependent:self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    topClassHolder := aTriggerValue.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    topClassHolder notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
	topClassHolder isBehavior ifTrue:[self halt:'should not happen'].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	topClassHolder addDependent:self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    ].
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
!HierarchicalClassList methodsFor:'change & update'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
classDefinitionChanged:aClass
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    |prevTop prevSelection newSelection selectedClassesHolder|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    listValid ifFalse:[^ self].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    slaveMode value == true ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	self invalidateList.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	^ self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    selectedClassesHolder := self selectedClasses.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    prevSelection := selectedClassesHolder value copy.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    prevTop := self topClassHolder value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    prevTop notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
	(prevTop name = aClass name) ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
	    "/ forced update
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
	    topClassHolder value:aClass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
	] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
	    (prevTop name = aClass class name) ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
		"/ forced update
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
		topClassHolder value:aClass class.
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
    "/ must update the list (notice, that the hierarchy might have changed..)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    self updateList.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    selectedClassesHolder value ~= prevSelection ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
	newSelection := prevSelection collect:[:eachOldClass | Smalltalk classNamed:(eachOldClass name)].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
	selectedClassesHolder value:newSelection.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    "Modified: / 26.2.2000 / 01:17:01 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
classRemoved:aClass
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    |prevTop newTop prevSel nPrevSelected selectedClassesHolder newSelection wasMeta|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    prevTop := self topClassHolder value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    prevTop notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
	wasMeta := prevTop isMeta.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
	newTop := prevTop theNonMetaclass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
	[newTop notNil and:[(Smalltalk at:newTop name) ~= newTop]] whileTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
	    newTop := newTop superclass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
	wasMeta ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
	    newTop := newTop theMetaclass
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
	newTop ~~ prevTop ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
	    self topClassHolder value:newTop.
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
    selectedClassesHolder := self selectedClasses.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    "/ if there is a single selection,
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
    "/ which is the old top, replace it.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
    prevSel := selectedClassesHolder value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    nPrevSelected := prevSel size.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    nPrevSelected > 0 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
	nPrevSelected == 1 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
	    prevSel first == aClass ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
		newTop notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
		    newSelection := Array with:newTop.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
		] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
		    newSelection := #().
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
		]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
	    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
	] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
	    nPrevSelected ~~ 0 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
		"/ clear the selection
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
		newSelection := #().
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
	newSelection notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
	    selectedClassesHolder value:newSelection
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
    super classRemoved:aClass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
!HierarchicalClassList methodsFor:'private'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
addTo:aList whereSuperclassIs:aSuperclass
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    |theClasses|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
    aSuperclass isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
	theClasses := Smalltalk allClasses select:[:cls | cls superclass isNil]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    ] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
	theClasses := aSuperclass subclasses.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    (self hideUnloadedClasses value) ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
	theClasses := theClasses select:[:cls | cls isLoaded].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
    theClasses := theClasses asOrderedCollection sort:[:a :b | (a name ? '??') < (b name ? '??')].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    theClasses do:[:aClass |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
	aList add:aClass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
	self addTo:aList whereSuperclassIs:aClass
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
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
defaultSlaveModeValue
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    self organizerMode value == #category ifTrue:[^ true].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    ^ false
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
listOfClasses
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    |classes top|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    classes := OrderedCollection new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    (top := self topClassHolder value) notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
	top := top theNonMetaclass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
	classes addAll:(top withAllSuperclasses copy reverse).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
    self addTo:classes whereSuperclassIs:top.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    ^ classes
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    "Modified: / 24.2.2000 / 13:27:43 / cg"
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
nameListEntryFor:aClass withNameSpace:useFullName
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    |indent superClass nm|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
    aClass == (self class nameListEntryForALL) ifTrue:[ ^ aClass ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    aClass == InheritedEntry ifTrue:[ ^ aClass ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    nm := aClass name.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
    indent := 0.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    superClass := aClass superclass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
    [superClass notNil] whileTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
	indent := indent + 1.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
	superClass := superClass superclass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
    indent == 0 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
	^ nm
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
    indent <= 5 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
	indent := #(
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
		     '                    '
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
		   ) at:indent+1.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    ] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
	indent := String new:indent*4 withAll:Character space.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
    ^ indent , nm
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
    "Modified: / 24.2.2000 / 20:19:47 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
release
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
    super release.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    topClassHolder removeDependent:self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
!HierarchicalClassList class methodsFor:'documentation'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
version
5592
d9730a8d7c52 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5591
diff changeset
   247
    ^ '$Header: /cvs/stx/stx/libtool/Tools_HierarchicalClassList.st,v 1.2 2004-02-26 19:03:55 cg Exp $'
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
HierarchicalClassList initialize!