Tools_InheritanceClassList.st
author Claus Gittinger <cg@exept.de>
Thu, 26 Feb 2004 19:57:02 +0100
changeset 5591 273637686948
child 6179 182d948dcf05
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:libtool' }"
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
HierarchicalClassList subclass:#InheritanceClassList
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
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
!InheritanceClassList 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 HierarchicalClassList, but shows class inheritance.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
    For non-meta classes, this is the same as would be shown in
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
    the hierarchy list;
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
    For metaclasses, the tree is extented through the class-behavior
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
    hierarchy.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
    embeddable application displaying the classes as listed by
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
    the inputGenerator.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
    Provides an outputGenerator, which enumerates the classes and
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
    their protocols (method-categories) in the selected classes.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
    [author:]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	Claus Gittinger (cg@exept.de)
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
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
!InheritanceClassList methodsFor:'change & update'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
delayedUpdate:something with:aParameter from:changedObject
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
    |top oldSelection newSelection showMeta|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    self inSlaveModeOrInvisible ifTrue:[^ self].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
"/    (self slaveMode value == true) ifTrue:[^ self].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    changedObject == slaveMode ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
	listValid ~~ true ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
	    self enqueueDelayedUpdateList
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
	"/ self invalidateList.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	^  self
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
    changedObject == meta ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
	oldSelection := self selectedClasses value ? #().
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	showMeta := meta value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	newSelection := oldSelection collect:[:cls | showMeta ifTrue:[cls theMetaclass] ifFalse:[cls theNonMetaclass]].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	newSelection := newSelection asOrderedCollection.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
	top := self topClassHolder value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	top notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
	    top := showMeta ifTrue:[top theMetaclass] ifFalse:[top theNonMetaclass].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
	    self topClassHolder value:top.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
	self invalidateList.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
(newSelection includes:nil) ifTrue:[self halt:'should not happen'].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	self selectedClasses value:newSelection.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	^ self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    super delayedUpdate:something with:aParameter from:changedObject
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    "Modified: / 24.2.2000 / 15:29:21 / cg"
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
getSelectedClassIndicesFromClasses
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    |classes selectedClasses selectedIndices|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    selectedClasses := self selectedClasses value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    selectedClasses size == 0 ifTrue:[^ #() ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    classes := self classList value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    selectedIndices := selectedClasses 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
		    collect:[:aSelectedClass |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
			classes identityIndexOf:aSelectedClass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
		    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    selectedIndices := selectedIndices select:[:idx | idx ~~ 0].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    selectedIndices size == 0 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
"/        meta value == true ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
"/self halt.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
"/        ] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
"/self halt.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
"/        ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    ^ selectedIndices
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    "Created: / 24.2.2000 / 19:48:05 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    "Modified: / 24.2.2000 / 23:30:22 / cg"
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
getSelectedClassesFromIndices
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    |selected classes allSelected|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    allSelected := false.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    classes := classList value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    selected := self selectedClassNameIndices value collect:[:idx |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
	|cls|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
	cls := classes at:idx.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
"/        cls == AllEntry ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
"/            allSelected := true.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
"/            cls.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
"/        ] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
"/            cls notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
"/                meta value ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
"/                    cls := cls theMetaclass
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
"/                ] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
"/                    cls := cls theNonMetaclass
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
"/                ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
"/            ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
"/            cls
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
"/        ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
"/    allSelected ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
"/        selected := classList value select:[:cls | cls ~~ AllEntry].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
"/    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    selected := selected select:[:cls | cls notNil].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    ^selected.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
    "Created: / 24.2.2000 / 19:45:04 / cg"
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
!InheritanceClassList methodsFor:'private'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
defaultSlaveModeValue
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    self organizerMode value == #category ifTrue:[^ true].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    ^ false
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
listOfClasses
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    |top classes|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    (top := self topClassHolder value) isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
	^ super listOfClasses
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
    classes := top withAllSuperclasses copy reverse.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
"/    classes addFirst:InheritedEntry.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    ^ classes
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    "Modified: / 26.2.2000 / 00:38:48 / cg"
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
!InheritanceClassList class methodsFor:'documentation'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
version
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    ^ '$Header: /cvs/stx/stx/libtool/Tools_InheritanceClassList.st,v 1.1 2004-02-26 18:55:29 cg Exp $'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
! !