Tools_HierarchicalClassList.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 19 Jul 2017 09:42:32 +0200
branchjv
changeset 17619 edb119820fcb
parent 14029 50d760740995
permissions -rw-r--r--
Issue #154: Set window style using `#beToolWindow` to indicate that the minirunner window is kind of support tool rather than some X11 specific code (which does not work on Windows of course) See https://swing.fit.cvut.cz/projects/stx-jv/ticket/154
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
ClassList subclass:#HierarchicalClassList
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	instanceVariableNames:'topClassHolder'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:'InheritedEntry'
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
!HierarchicalClassList 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
!HierarchicalClassList class methodsFor:'initialization'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
initialize
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    InheritedEntry := '* inheritance *'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    "Created: / 24.2.2000 / 20:19:19 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
!HierarchicalClassList class methodsFor:'queries-plugin'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
aspectSelectors
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    ^ super aspectSelectors ,
14029
50d760740995 Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13831
diff changeset
    70
       #(
50d760740995 Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13831
diff changeset
    71
          topClassHolder
50d760740995 Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13831
diff changeset
    72
        )
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
14029
50d760740995 Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13831
diff changeset
    74
    "Modified: / 24-02-2014 / 10:38:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
8597
0720c6c4ee48 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7885
diff changeset
    77
!HierarchicalClassList methodsFor:'accessing'!
7885
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    78
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    79
showMethodComplexity:aValueHolder
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    80
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    81
    "Created: / 05-11-2007 / 17:15:35 / cg"
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    82
!
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    83
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    84
showMethodInheritance:aValueHolder
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    85
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    86
    "Created: / 05-11-2007 / 17:15:23 / cg"
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    87
!
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    88
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    89
showMethodTypeIcon:aValueHolder
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    90
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    91
    "Created: / 05-11-2007 / 17:15:42 / cg"
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    92
! !
5e831197e83e dummy aspects (for class-doc-browser)
Claus Gittinger <cg@exept.de>
parents: 7742
diff changeset
    93
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
!HierarchicalClassList methodsFor:'aspects'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
8597
0720c6c4ee48 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7885
diff changeset
    96
methodVisibilityHolder:aValueHolder
0720c6c4ee48 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7885
diff changeset
    97
0720c6c4ee48 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7885
diff changeset
    98
    "Created: / 05-11-2007 / 17:15:48 / cg"
0720c6c4ee48 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7885
diff changeset
    99
!
0720c6c4ee48 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7885
diff changeset
   100
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
topClassHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    topClassHolder isNil ifTrue:[
6747
2d635b83a6a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6737
diff changeset
   103
        topClassHolder := Object asValue.
2d635b83a6a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6737
diff changeset
   104
        topClassHolder addDependent:self
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    ^ topClassHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
6750
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   109
topClassHolder:aValueHolder
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   110
    |oldTopClass newTopClass|
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   111
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   112
    oldTopClass := topClassHolder value.
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   113
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    topClassHolder notNil ifTrue:[
6750
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   115
        topClassHolder removeDependent:self
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    ].
6750
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   117
    topClassHolder := aValueHolder.
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   118
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    topClassHolder notNil ifTrue:[
6750
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   120
        topClassHolder isBehavior ifTrue:[self halt:'should not happen'].
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   121
        topClassHolder addDependent:self.
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   122
    ].
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   123
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   124
    newTopClass := topClassHolder value.
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   125
    newTopClass ~~ oldTopClass ifTrue:[
1fddf38adb79 fixes for use in MetricViewer
Claus Gittinger <cg@exept.de>
parents: 6747
diff changeset
   126
        self enqueueDelayedUpdateList.
5591
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
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
!HierarchicalClassList methodsFor:'change & update'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
classDefinitionChanged:aClass
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    |prevTop prevSelection newSelection selectedClassesHolder|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    listValid ifFalse:[^ self].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
    slaveMode value == true ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
	self invalidateList.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
	^ self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    selectedClassesHolder := self selectedClasses.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    prevSelection := selectedClassesHolder value copy.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    prevTop := self topClassHolder value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    prevTop notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
	(prevTop name = aClass name) ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
	    "/ forced update
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
	    topClassHolder value:aClass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
	] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
	    (prevTop name = aClass class name) ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
		"/ forced update
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
		topClassHolder value:aClass class.
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
    "/ must update the list (notice, that the hierarchy might have changed..)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    self updateList.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    selectedClassesHolder value ~= prevSelection ifTrue:[
13498
b8d845e42988 Added `environment` instance variable to Tools__NewSystemBrowser and
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13094
diff changeset
   162
	newSelection := prevSelection collect:[:eachOldClass | environment classNamed:(eachOldClass name)].
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
	selectedClassesHolder value:newSelection.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    "Modified: / 26.2.2000 / 01:17:01 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
classRemoved:aClass
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    |prevTop newTop prevSel nPrevSelected selectedClassesHolder newSelection wasMeta|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    prevTop := self topClassHolder value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    prevTop notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
	wasMeta := prevTop isMeta.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
	newTop := prevTop theNonMetaclass.
13498
b8d845e42988 Added `environment` instance variable to Tools__NewSystemBrowser and
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13094
diff changeset
   177
	[newTop notNil and:[(environment at:newTop name) ~= newTop]] whileTrue:[
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
	    newTop := newTop superclass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
	wasMeta ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
	    newTop := newTop theMetaclass
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
	newTop ~~ prevTop ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
	    self topClassHolder value:newTop.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
	].
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
    selectedClassesHolder := self selectedClasses.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
    "/ if there is a single selection,
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    "/ which is the old top, replace it.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    prevSel := selectedClassesHolder value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    nPrevSelected := prevSel size.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    nPrevSelected > 0 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
	nPrevSelected == 1 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
	    prevSel first == aClass ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
		newTop notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
		    newSelection := Array with:newTop.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
		] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
		    newSelection := #().
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
	] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
	    nPrevSelected ~~ 0 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
		"/ clear the selection
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
		newSelection := #().
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
	    ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
	newSelection notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
	    selectedClassesHolder value:newSelection
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
	].
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
    super classRemoved:aClass.
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
!HierarchicalClassList methodsFor:'private'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
addTo:aList whereSuperclassIs:aSuperclass
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
    |theClasses|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
    aSuperclass isNil ifTrue:[
13498
b8d845e42988 Added `environment` instance variable to Tools__NewSystemBrowser and
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13094
diff changeset
   223
	theClasses := environment allClasses select:[:cls | cls superclass isNil]
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
    ] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
	theClasses := aSuperclass subclasses.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    (self hideUnloadedClasses value) ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
	theClasses := theClasses select:[:cls | cls isLoaded].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
    theClasses := theClasses asOrderedCollection sort:[:a :b | (a name ? '??') < (b name ? '??')].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
    theClasses do:[:aClass |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
	aList add:aClass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
	self addTo:aList whereSuperclassIs:aClass
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
    ].        
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
defaultSlaveModeValue
6747
2d635b83a6a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6737
diff changeset
   239
    |mode|
2d635b83a6a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6737
diff changeset
   240
2d635b83a6a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6737
diff changeset
   241
    mode := self topApplication perform:#initialOrganizerMode ifNotUnderstood:nil.
2d635b83a6a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6737
diff changeset
   242
    mode == OrganizerCanvas organizerModeClassHierarchy ifTrue:[^ false].
2d635b83a6a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6737
diff changeset
   243
    mode isNil ifTrue:[^ false].
2d635b83a6a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6737
diff changeset
   244
6737
2a8e0031c83e magic constants (organizerMode) removed
Claus Gittinger <cg@exept.de>
parents: 6179
diff changeset
   245
    self organizerMode value == OrganizerCanvas organizerModeCategory ifTrue:[^ true].
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    ^ false
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
listOfClasses
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
    |classes top|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
    classes := OrderedCollection new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
    (top := self topClassHolder value) notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
	top := top theNonMetaclass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
	classes addAll:(top withAllSuperclasses copy reverse).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    self addTo:classes whereSuperclassIs:top.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
    ^ classes
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
    "Modified: / 24.2.2000 / 13:27:43 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
nameListEntryFor:aClass withNameSpace:useFullName
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
    |indent superClass nm|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
    aClass == (self class nameListEntryForALL) ifTrue:[ ^ aClass ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
    aClass == InheritedEntry ifTrue:[ ^ aClass ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
12595
24886909e066 class: Tools::HierarchicalClassList
Claus Gittinger <cg@exept.de>
parents: 11953
diff changeset
   269
    nm := aClass nameInBrowser.
7742
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   270
    nm isNil ifTrue:[^ '???'].
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   271
11953
dcfba0cb68f2 changed: #nameListEntryFor:withNameSpace:
Claus Gittinger <cg@exept.de>
parents: 8597
diff changeset
   272
    aClass isLoaded ifFalse:[
dcfba0cb68f2 changed: #nameListEntryFor:withNameSpace:
Claus Gittinger <cg@exept.de>
parents: 8597
diff changeset
   273
        "/ nm := nm,(' (?) ' colorizeAllWith:Color grey).
dcfba0cb68f2 changed: #nameListEntryFor:withNameSpace:
Claus Gittinger <cg@exept.de>
parents: 8597
diff changeset
   274
    ] ifTrue:[
12595
24886909e066 class: Tools::HierarchicalClassList
Claus Gittinger <cg@exept.de>
parents: 11953
diff changeset
   275
        aClass isAbstract ifTrue:[ nm := nm allItalic ].
11953
dcfba0cb68f2 changed: #nameListEntryFor:withNameSpace:
Claus Gittinger <cg@exept.de>
parents: 8597
diff changeset
   276
        nm := nm,((' (%1+%2) ' bindWith:(aClass methodDictionary size) with:(aClass class methodDictionary size)) 
dcfba0cb68f2 changed: #nameListEntryFor:withNameSpace:
Claus Gittinger <cg@exept.de>
parents: 8597
diff changeset
   277
                                colorizeAllWith:self class pseudoEntryForegroundColor).
dcfba0cb68f2 changed: #nameListEntryFor:withNameSpace:
Claus Gittinger <cg@exept.de>
parents: 8597
diff changeset
   278
    ].
dcfba0cb68f2 changed: #nameListEntryFor:withNameSpace:
Claus Gittinger <cg@exept.de>
parents: 8597
diff changeset
   279
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
    indent := 0.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
    superClass := aClass superclass.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
    [superClass notNil] whileTrue:[
7742
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   283
        indent := indent + 1.
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   284
        superClass := superClass superclass.
5591
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
    indent == 0 ifTrue:[
7742
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   288
        ^ nm
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
    indent <= 5 ifTrue:[
7742
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   292
        indent := #(
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   293
                     ''
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   294
                     '    '
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   295
                     '        '
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   296
                     '            '
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   297
                     '                '
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   298
                     '                    '
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   299
                   ) at:indent+1.
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
    ] ifFalse:[
7742
d29d7e878f29 dont crash with nil-named classes
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   301
        indent := String new:indent*4 withAll:Character space.
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
    ^ indent , nm
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
    "Modified: / 24.2.2000 / 20:19:47 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
release
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
    super release.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
    topClassHolder removeDependent:self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
!HierarchicalClassList class methodsFor:'documentation'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
version
14029
50d760740995 Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13831
diff changeset
   317
    ^ '$Header: /cvs/stx/stx/libtool/Tools_HierarchicalClassList.st,v 1.15 2014-02-25 10:41:53 vrany Exp $'
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
12595
24886909e066 class: Tools::HierarchicalClassList
Claus Gittinger <cg@exept.de>
parents: 11953
diff changeset
   320
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
HierarchicalClassList initialize!