HierarchicalListEditor.st
changeset 558 5b5d08815af4
parent 552 8597d3786b09
child 559 33365ca6eb1d
equal deleted inserted replaced
557:de8d8782486c 558:5b5d08815af4
   513             )
   513             )
   514              #(#MenuItem
   514              #(#MenuItem
   515                 #'label:' 'Save'
   515                 #'label:' 'Save'
   516                 #'isButton:' true
   516                 #'isButton:' true
   517                 #'value:' #doInstall
   517                 #'value:' #doInstall
       
   518                 #'activeHelpKey:' #fileSave
   518                 #'enabled:' #hasValidClass
   519                 #'enabled:' #hasValidClass
   519                 #'labelImage:' #(#ResourceRetriever nil #saveIcon)
   520                 #'labelImage:' #(#ResourceRetriever nil #saveIcon)
   520             )
   521             )
   521              #(#MenuItem
   522              #(#MenuItem
   522                 #'label:' ''
   523                 #'label:' ''
   787 !
   788 !
   788 
   789 
   789 newItem
   790 newItem
   790     "creates and returns a new default item"
   791     "creates and returns a new default item"
   791 
   792 
   792     ^TreeItem name: 'Undefined' contents: nil
   793     ^TreeItem name: 'Item' contents: nil
   793 !
   794 !
   794 
   795 
   795 updateChannels
   796 updateChannels
   796     "update channels"
   797     "update channels"
   797 
   798 
  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 
  1206 !
  1212 !
  1207 
  1213 
  1208 doNew
  1214 doNew
  1209     "remove all items; restart"
  1215     "remove all items; restart"
  1210 
  1216 
  1211     treeView root:(TreeItem name:'Anchor' contents:#anchor).
  1217     treeView root:(TreeItem name:'Root' contents:#anchor).
  1212     treeView selection:0.
  1218     treeView selection:1.
  1213     isModified := true
  1219     isModified := true
  1214 
  1220 
  1215 
  1221 
  1216 
  1222 
  1217 
  1223 
  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