SelectionInHierarchy.st
author ca
Thu, 03 Jul 1997 09:17:38 +0200
changeset 442 930fe1485dc2
parent 440 70f750d14acf
child 451 8ef75f2cb825
permissions -rw-r--r--
add new features
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 1994 by AEG Industry Automation
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
 COPYRIGHT (c) 1994 by Claus Gittinger
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	      All Rights Reserved
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 This software is furnished under a license and may be used
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 only in accordance with the terms of that license and with the
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 inclusion of the above copyright notice.   This software may not
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 be provided or otherwise made available to, or used by, any
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 other person.  No title to or ownership of the software is
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
 hereby transferred.
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Model subclass:#SelectionInHierarchy
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    15
	instanceVariableNames:'root list selection'
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    16
	classVariableNames:''
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    17
	poolDictionaries:''
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    18
	category:'Interface-Support-Models'
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    21
!SelectionInHierarchy class methodsFor:'documentation'!
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    23
copyright 
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
"
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
 COPYRIGHT (c) 1994 by AEG Industry Automation
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
 COPYRIGHT (c) 1994 by Claus Gittinger
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
	      All Rights Reserved
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 This software is furnished under a license and may be used
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 only in accordance with the terms of that license and with the
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 inclusion of the above copyright notice.   This software may not
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 be provided or otherwise made available to, or used by, any
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 other person.  No title to or ownership of the software is
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 hereby transferred.
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
"
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
!
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
documentation
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
"
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    model for a selection in a hierarchical list.
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    See examples in SelectionInHierarchyView.
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    42
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    43
    [Author:]
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    44
        W. Olberding AEG Factory Automation
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    45
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    46
    [See also:]
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    47
        HierarchyNode
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    48
        SelectionInHierarchyView
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
"
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
! !
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!SelectionInHierarchy methodsFor:'accessing'!
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    54
add:aHierarchyNode below:existingHierarchyNode
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    55
    "Add a new HierarchyNode to the tree."
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    56
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    57
     existingHierarchyNode addChild: aHierarchyNode. 
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    58
     self setNewList.
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    59
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    60
    "Modified: 10.10.1994 / 16:13:36 / W.Olberding"
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    61
    "Modified: 15.4.1997 / 16:27:28 / cg"
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    62
!
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    63
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    64
add: aHierarchyNode  belowIndex: anIndex
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    65
    "Add a new HierarchyNode to the tree below the node
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    66
     which is found in the list at anIndex."
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    67
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    68
    | existingHierarchyNode |
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    69
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    70
    existingHierarchyNode := list at: anIndex  ifAbsent: [^nil]. 
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    71
    self add: aHierarchyNode  below: existingHierarchyNode
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    72
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    73
    "Modified: 10.10.1994 / 16:13:36 / W.Olberding"
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    74
    "Modified: 15.4.1997 / 16:27:50 / cg"
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    75
!
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    76
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    77
getHierarchyNodeForContents: something
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    78
     "return the hierarchyNode whose contents is something"
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    79
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    80
     |allNodes|
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    81
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    82
     allNodes:= root allChildren.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    83
     allNodes do: [:each|
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    84
          (each contents = something) ifTrue:[^each].
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    85
     ].
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    86
     ^ nil
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    87
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    88
    "Modified: 10.10.1994 / 16:13:36 / W.Olberding"
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    89
    "Modified: 15.4.1997 / 16:29:15 / cg"
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    90
!
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    91
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    92
list
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    93
    "Answer a collection of nodes representing the
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    94
    list of currently viewed objects."
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    95
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    96
    ^list
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
    97
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    98
    "Modified: 10.10.1994 / 16:13:36 / W.Olberding"
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
    99
    "Modified: 15.4.1997 / 16:29:26 / cg"
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
   100
!
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   101
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   102
remove: aHierarchyNode
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   103
	"Remove aHierarchyNode and all its children. "
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   104
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   105
	 aHierarchyNode removeYourself.   
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   106
	 self setNewList.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   107
	^aHierarchyNode
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   108
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   109
	"Modified: 10.10.94 / 16:13:36 / W.Olberding"!
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   110
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   111
removeBelow: existingHierarchyNode
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   112
	"Remove all children below an existingHierarchyNode ."
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   113
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   114
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   115
	 existingHierarchyNode removeAllChildren. 
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   116
	 self setNewList.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   117
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   118
	"Modified: 10.10.94 / 16:13:36 / W.Olberding"!
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   119
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   120
removeBelowIndex: anIndex
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   121
	"Remove all the children of aHierarchyNode 
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   122
	which is found in the list at anIndex."
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   123
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   124
       | existingHierarchyNode |
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   125
	 existingHierarchyNode := list at: anIndex ifAbsent: [^nil]. 
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   126
	^self removeBelow: existingHierarchyNode.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   127
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   128
	"Modified: 10.10.94 / 16:13:37 / W.Olberding"!
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   129
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   130
removeIndex: anIndex
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   131
	"Remove the HierarchyNode and all its children
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   132
	which is found in the list at anIndex."
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   133
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   134
       | existingHierarchyNode |
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   135
	 existingHierarchyNode := list at: anIndex ifAbsent: [^nil]. 
253
01498f4ffcca comment
Claus Gittinger <cg@exept.de>
parents: 252
diff changeset
   136
	^self remove: existingHierarchyNode.
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   137
253
01498f4ffcca comment
Claus Gittinger <cg@exept.de>
parents: 252
diff changeset
   138
	"Modified: 10.10.94 / 16:13:36 / W.Olberding"!
01498f4ffcca comment
Claus Gittinger <cg@exept.de>
parents: 252
diff changeset
   139
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   140
root: aHierarchyNode
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   141
	"Set the root object - this means initialization."
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   142
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   143
	root :=  aHierarchyNode.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   144
	self initialize.
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   146
	"Modified: 10.10.94 / 16:13:36 / W.Olberding"!
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   147
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   148
selectedPath 
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   149
	"Answer the pathName to the currently selected node."
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   151
	 | selectedNode |
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   152
	selection isNil ifTrue: [^String new].
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   153
	selectedNode := list at: selection ifAbsent: [^String new].   
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   154
	^selectedNode pathName.
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   156
	"Modified: 10.10.94 / 16:13:36 / W.Olberding"!
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   157
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   158
setHideToChildren: aBoolean startingAt: aHierarchyNode
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   159
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   160
     "set the hide-Falg to aBoolean starting at aHierarchyNode down"
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   161
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   162
     |allNodes|
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   164
     allNodes:= root allChildren.
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   165
     allNodes do: [:each|
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   166
	  each hide: aBoolean
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   167
     ].
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   168
     self setNewList.
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   169
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   170
	"Modified: 10.10.94 / 16:13:36 / W.Olberding"!
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   171
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   172
showCompleteHierarchyStartingAtNode: aHierarchyNode
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   173
	"Set the hide-Flag to false for the hierarchy starting at aHierarchyNode"
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   174
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   175
	 | |
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   176
	aHierarchyNode isNil ifTrue: [^self].
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   177
	aHierarchyNode hideToFalseForPath.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   178
	self setNewList.
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
	"Modified: 10.10.94 / 16:13:36 / W.Olberding"! !
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
442
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   182
!SelectionInHierarchy methodsFor:'accessing sequencable'!
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   183
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   184
addChildAndSubChildren:aHierarchyNode below:existingHierarchyNode after:aChild
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   185
    "Add a new HierarchyNode to the tree."
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   186
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   187
     existingHierarchyNode addChildAndSubChildren:aHierarchyNode after:aChild. 
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   188
     self setNewList.
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   189
!
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   190
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   191
addChildAndSubChildren:aHierarchyNode below:existingHierarchyNode at:anIndex
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   192
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   193
     existingHierarchyNode addChildAndSubChildren:aHierarchyNode at:anIndex.
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   194
     self setNewList.
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   195
! !
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   196
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
!SelectionInHierarchy methodsFor:'hierarchy manipulation'!
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   199
collapse 
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   200
	"If possible, collapse the tree  at the currently selected node.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   201
	 The tree structure can be restored again with #expand. "
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   203
	 | selectedNode |
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   204
	selectedNode := list at: selection.   
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   205
	selectedNode isCollapsable ifTrue: [  selectedNode collapse.
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   206
					      ^self setNewList. ].
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   207
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   208
	"Modified: 10.10.94 / 16:13:37 / W.Olberding"!
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   209
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   210
collapseAll 
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   211
	"If possible, collapse the tree at the currently selected node.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   212
	 A latter #expand will show the next hierarchy level"
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   213
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   214
	 | selectedNode |
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   215
	selectedNode := list at: selection.   
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   216
	selectedNode isCollapsable ifTrue: [  selectedNode collapseAll.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   217
					      ^self setNewList. ].
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   218
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   219
	"Modified: 10.10.94 / 16:13:37 / W.Olberding"!
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   221
expand 
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   222
	"If possible, expand  the tree 
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   223
	 at the currently selected node."
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   224
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   225
	 | selectedNode |
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   226
	selectedNode := list at: selection.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   227
	selectedNode isExpandable  ifTrue: [ selectedNode expand.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   228
					     ^self setNewList. ].
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   229
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   230
	"Modified: 10.10.94 / 16:13:37 / W.Olberding"!
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   231
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   232
expandAll 
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   233
	"If possible, expand  the tree compleately to all leaves
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
	 at the currently selected node."
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
	 | selectedNode |
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
	selectedNode := list at: selection.
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
	selectedNode expandAll.
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
       ^self setNewList.
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   241
	"Modified: 10.10.94 / 16:13:37 / W.Olberding"!
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   242
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   243
hideShow
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   244
	"If possible, expand or collaps the tree 
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   245
	 at the currently selected node."
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   246
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   247
	 | selectedNode |
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   248
	selectedNode := list at: selection.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   249
	selectedNode isExpandable  ifTrue: [ selectedNode expand.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   250
					     ^self setNewList. ].
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   251
	selectedNode isCollapsable ifTrue: [ selectedNode collapse.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   252
					      ^self setNewList. ].
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   253
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
	"Modified: 10.10.94 / 16:13:37 / W.Olberding"! !
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
!SelectionInHierarchy methodsFor:'initialization'!
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   258
initialize
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   259
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   260
       " nodes := Set new. ***"
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   261
	selection := nil.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   262
	self setNewList.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   263
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   264
	"Modified: 10.10.94 / 16:13:37 / W.Olberding"! !
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   266
!SelectionInHierarchy methodsFor:'private'!
84
4478ea2d40c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   268
setNewList
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   269
	"Travers the tree and build a new list."
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   270
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   271
	list :=  root withAllShownChildren.
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   272
	self changed: #list.
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   273
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   274
	"Modified: 10.10.94 / 16:13:37 / W.Olberding"! !
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   275
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   276
!SelectionInHierarchy methodsFor:'selection'!
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   277
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   278
doubleClickSelection: anIndex
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   279
        "Set the current selected object to be the element
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   280
        at anIndex of the selection list.
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   281
        Also expand or collapse the tree at that point."
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   282
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   283
        self selectionIndex:  anIndex.  
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   284
        self hideShow.
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   285
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   286
    "Modified: 10.10.1994 / 16:13:36 / W.Olberding"
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   287
    "Modified: 11.10.1996 / 15:19:35 / cg"
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   288
!
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   289
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   290
selection
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   291
        "Answer the current selection as
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   292
          anIndex of the selection list."
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   293
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   294
        ^ self selectionIndex
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   295
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   296
    "Modified: 10.10.1994 / 16:13:36 / W.Olberding"
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   297
    "Modified: 11.10.1996 / 15:21:30 / cg"
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   298
!
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   299
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   300
selection: anIndex
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   301
        "Set the current selected object to be the element
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   302
        at anIndex of the selection list."
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   303
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   304
     ^ self selectionIndex:anIndex
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   305
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   306
    "Modified: 11.10.1996 / 15:21:15 / cg"
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   307
!
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   308
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   309
selectionIndex
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   310
        "Answer the current selection as
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   311
          anIndex of the selection list."
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   312
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   313
    ^ selection
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   314
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   315
    "Modified: 10.10.1994 / 16:13:36 / W.Olberding"
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   316
    "Created: 11.10.1996 / 15:18:44 / cg"
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   317
    "Modified: 11.10.1996 / 15:20:46 / cg"
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   318
!
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   319
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   320
selectionIndex: anIndex
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   321
        "Set the current selected object to be the element
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   322
        at anIndex of the selection list."
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   323
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   324
        anIndex isNil 
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   325
            ifTrue:  [ selection := 0]
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   326
            ifFalse: [
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   327
                  (selection = anIndex) 
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   328
                       ifTrue:  [^nil] 
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   329
                       ifFalse: [selection := anIndex ].
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   330
            ].
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   331
        self changed: #selection.
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   332
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   333
    "Modified: 10.10.1994 / 16:13:36 / W.Olberding"
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   334
    "Created: 11.10.1996 / 15:16:30 / cg"
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   335
! !
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   336
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   337
!SelectionInHierarchy methodsFor:'testing & debugging'!
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   338
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   339
root
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   340
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   341
	^root
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   342
254
Claus Gittinger <cg@exept.de>
parents: 253
diff changeset
   343
	"Modified: 10.10.94 / 16:13:37 / W.Olberding"! !
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   344
360
bff72c1dac78 comments
Claus Gittinger <cg@exept.de>
parents: 254
diff changeset
   345
!SelectionInHierarchy class methodsFor:'documentation'!
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   346
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   347
version
442
930fe1485dc2 add new features
ca
parents: 440
diff changeset
   348
    ^ '$Header: /cvs/stx/stx/libwidg2/SelectionInHierarchy.st,v 1.8 1997-07-03 07:17:38 ca Exp $'
252
4db843d36c46 comment & #selectionIndex:
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   349
! !