1042 ! |
1043 ! |
1043 |
1044 |
1044 doCreateChild |
1045 doCreateChild |
1045 "create a child within selected parent" |
1046 "create a child within selected parent" |
1046 |
1047 |
1047 |node| |
1048 |node newItem| |
1048 |
1049 |
1049 (node := treeView selectedNode) notNil |
1050 (node := treeView selectedNode) notNil |
1050 ifTrue: |
1051 ifTrue: |
1051 [ |
1052 [ |
1052 treeView model add: self newItem beforeIndex:1 below:node. |
1053 treeView model add: (newItem := self newItem) afterIndex: node children size below:node. |
|
1054 newItem name: 'Child ', (self getDepthAndSistersNumberOfNode: newItem onParentNode: node). |
1053 treeView selectedNodeExpand:true. |
1055 treeView selectedNodeExpand:true. |
|
1056 treeView selectNode: newItem. |
1054 self updateChannels. |
1057 self updateChannels. |
1055 isModified := true |
1058 isModified := true |
1056 ] |
1059 ] |
1057 ! |
1060 ! |
1058 |
1061 |
1059 doCreateSister |
1062 doCreateSister |
1060 "create a sister next to selected item |
1063 "create a sister next to selected item |
1061 " |
1064 " |
1062 |node| |
1065 |node newItem| |
1063 |
1066 |
1064 (node := treeView selectedNode) notNil |
1067 (node := treeView selectedNode) notNil |
1065 ifTrue: |
1068 ifTrue: |
1066 [ |
1069 [ |
|
1070 newItem := self newItem. |
1067 node parent notNil |
1071 node parent notNil |
1068 ifTrue: [treeView model add: self newItem after:node] |
1072 ifTrue: [treeView model add: newItem after: (node parent children at: node parent children size ifAbsent: nil)] |
1069 ifFalse:[treeView model add: self newItem beforeIndex:1 below:node]. |
1073 ifFalse:[treeView model add: newItem beforeIndex:1 below:node]. |
|
1074 newItem name: 'Child ', (self getDepthAndSistersNumberOfNode: newItem onParentNode: node parent). |
|
1075 treeView selectNode: newItem. |
1070 self updateChannels. |
1076 self updateChannels. |
1071 isModified := true |
1077 isModified := true |
1072 ] |
1078 ] |
1073 ! |
1079 ! |
1074 |
1080 |
1271 self updateChannels. |
1277 self updateChannels. |
1272 isModified := true |
1278 isModified := true |
1273 |
1279 |
1274 |
1280 |
1275 |
1281 |
|
1282 ! |
|
1283 |
|
1284 getDepthAndSistersNumberOfNode: aNode onParentNode: aParentNode |
|
1285 "return depth of selected node" |
|
1286 |
|
1287 |parent childNode depthAndSistersNumber| |
|
1288 |
|
1289 depthAndSistersNumber := ''. |
|
1290 childNode := aNode. |
|
1291 parent := aParentNode. |
|
1292 [parent notNil ] |
|
1293 whileTrue: [depthAndSistersNumber := depthAndSistersNumber, '.', (parent children indexOf: childNode) printString. childNode := parent. parent := parent parent. ]. |
|
1294 |
|
1295 ^(depthAndSistersNumber reverse copyFrom: 1 to: depthAndSistersNumber size - 2), aParentNode children size printString |
1276 ! ! |
1296 ! ! |
1277 |
1297 |
1278 !HierarchicalListEditor class methodsFor:'documentation'! |
1298 !HierarchicalListEditor class methodsFor:'documentation'! |
1279 |
1299 |
1280 version |
1300 version |