equal
deleted
inserted
replaced
74 'Adds a new child item.' |
74 'Adds a new child item.' |
75 |
75 |
76 #addSister |
76 #addSister |
77 'Adds a new sister item.' |
77 'Adds a new sister item.' |
78 |
78 |
|
79 #contents |
|
80 'Contents of the tree item.' |
|
81 |
79 #fileNew |
82 #fileNew |
80 'Creates a new hierarchical list.' |
83 'Creates a new hierarchical list.' |
81 |
84 |
82 #fileReload |
85 #fileReload |
83 'Reload hierarchical list from current class and selector.' |
86 'Reload hierarchical list from current class and selector.' |
84 |
87 |
85 #fileSave |
88 #fileSave |
86 'Saves current hierarchical list.' |
89 'Saves current hierarchical list.' |
|
90 |
|
91 #label |
|
92 'Label of the tree item.' |
87 |
93 |
88 ) |
94 ) |
89 ! ! |
95 ! ! |
90 |
96 |
91 !HierarchicalListEditor class methodsFor:'interface specs'! |
97 !HierarchicalListEditor class methodsFor:'interface specs'! |
183 |
189 |
184 #(#FullSpec |
190 #(#FullSpec |
185 #'window:' |
191 #'window:' |
186 #(#WindowSpec |
192 #(#WindowSpec |
187 #'name:' 'Hierarchical List Editor' |
193 #'name:' 'Hierarchical List Editor' |
188 #'layout:' #(#LayoutFrame 366 0 355 0 840 0 667 0) |
194 #'layout:' #(#LayoutFrame 92 0 328 0 566 0 640 0) |
189 #'label:' 'Hierarchical List Editor' |
195 #'label:' 'Hierarchical List Editor' |
190 #'min:' #(#Point 10 10) |
196 #'min:' #(#Point 10 10) |
191 #'max:' #(#Point 1160 870) |
197 #'max:' #(#Point 1160 870) |
192 #'bounds:' #(#Rectangle 366 355 841 668) |
198 #'bounds:' #(#Rectangle 92 328 567 641) |
193 #'menu:' #menu |
199 #'menu:' #menu |
194 #'usePreferredExtent:' false |
200 #'usePreferredExtent:' false |
195 ) |
201 ) |
196 #'component:' |
202 #'component:' |
197 #(#SpecCollection |
203 #(#SpecCollection |
226 #'collection:' |
232 #'collection:' |
227 #( |
233 #( |
228 #(#LabelSpec |
234 #(#LabelSpec |
229 #'name:' 'nameLabel' |
235 #'name:' 'nameLabel' |
230 #'layout:' #(#AlignmentOrigin 107 0 25 0 1 0.5) |
236 #'layout:' #(#AlignmentOrigin 107 0 25 0 1 0.5) |
231 #'label:' 'Name:' |
237 #'label:' 'Label:' |
232 #'resizeForLabel:' true |
238 #'resizeForLabel:' true |
233 ) |
239 ) |
234 #(#InputFieldSpec |
240 #(#InputFieldSpec |
235 #'name:' 'nameInputField' |
241 #'name:' 'labelInputField' |
236 #'layout:' #(#LayoutFrame 110 0 15 0 -5 1.0 37 0) |
242 #'layout:' #(#LayoutFrame 110 0 15 0 -5 1.0 37 0) |
|
243 #'activeHelpKey:' #label |
237 #'tabable:' true |
244 #'tabable:' true |
238 #'model:' #itemName |
245 #'model:' #itemName |
239 ) |
246 ) |
240 #(#LabelSpec |
247 #(#LabelSpec |
241 #'name:' 'valueLabel' |
248 #'name:' 'valueLabel' |
242 #'layout:' #(#AlignmentOrigin 107 0 51 0 1 0.5) |
249 #'layout:' #(#AlignmentOrigin 107 0 51 0 1 0.5) |
243 #'label:' 'Value:' |
250 #'activeHelpKey:' #contents |
|
251 #'label:' 'Contents:' |
244 #'resizeForLabel:' true |
252 #'resizeForLabel:' true |
245 ) |
253 ) |
246 #(#InputFieldSpec |
254 #(#InputFieldSpec |
247 #'name:' 'valueInputField' |
255 #'name:' 'valueInputField' |
248 #'layout:' #(#LayoutFrame 110 0 41 0 -5 1.0 63 0) |
256 #'layout:' #(#LayoutFrame 110 0 41 0 -5 1.0 63 0) |
|
257 #'activeHelpKey:' #contents |
249 #'tabable:' true |
258 #'tabable:' true |
250 #'model:' #itemValue |
259 #'model:' #itemValue |
251 #'type:' #symbolOrNil |
260 #'type:' #symbolOrNil |
252 ) |
261 ) |
253 #(#UISubSpecification |
262 #(#UISubSpecification |
338 ) |
347 ) |
339 #(#MenuItem |
348 #(#MenuItem |
340 #'label:' '-' |
349 #'label:' '-' |
341 ) |
350 ) |
342 #(#MenuItem |
351 #(#MenuItem |
|
352 #'label:' 'Browse Class' |
|
353 #'value:' #doBrowse |
|
354 #'activeHelpKey:' #fileBrowseClass |
|
355 #'enabled:' #hasValidClass |
|
356 ) |
|
357 #(#MenuItem |
|
358 #'label:' '-' |
|
359 ) |
|
360 #(#MenuItem |
343 #'label:' 'Exit' |
361 #'label:' 'Exit' |
344 #'value:' #closeRequest |
362 #'value:' #closeRequest |
345 #'activeHelpKey:' #fileExit |
363 #'activeHelpKey:' #fileExit |
346 ) |
364 ) |
347 ) nil |
365 ) nil |
375 ) nil |
393 ) nil |
376 nil |
394 nil |
377 ) |
395 ) |
378 ) |
396 ) |
379 #(#MenuItem |
397 #(#MenuItem |
380 #'label:' 'Browse' |
|
381 #'enabled:' #hasValidClass |
|
382 #'submenu:' |
|
383 #(#Menu |
|
384 |
|
385 #( |
|
386 #(#MenuItem |
|
387 #'label:' 'Class' |
|
388 #'value:' #'doBrowse:' |
|
389 #'argument:' #class |
|
390 ) |
|
391 #(#MenuItem |
|
392 #'label:' 'Method' |
|
393 #'value:' #'doBrowse:' |
|
394 #'enabled:' #hasValidMethodSelector |
|
395 #'argument:' #method |
|
396 ) |
|
397 #(#MenuItem |
|
398 #'label:' 'Specification' |
|
399 #'value:' #'doBrowse:' |
|
400 #'enabled:' #hasValidSpecSelector |
|
401 #'argument:' #spec |
|
402 ) |
|
403 ) nil |
|
404 nil |
|
405 ) |
|
406 ) |
|
407 #(#MenuItem |
|
408 #'label:' 'Help' |
398 #'label:' 'Help' |
409 #'startGroup:' #right |
399 #'startGroup:' #right |
410 #'submenuChannel:' #menuHelp |
400 #'submenuChannel:' #menuHelp |
411 ) |
401 ) |
412 ) nil |
402 ) nil |
751 "one of my models changed" |
741 "one of my models changed" |
752 |
742 |
753 self valueOfEnablingCommitButtons value: true |
743 self valueOfEnablingCommitButtons value: true |
754 ! ! |
744 ! ! |
755 |
745 |
|
746 !HierarchicalListEditor methodsFor:'help'! |
|
747 |
|
748 defaultInfoLabel |
|
749 |
|
750 specClass isNil ifTrue: [^'No hierarchical list class defined']. |
|
751 ^specClass name, ' >> ', specSelector printString |
|
752 |
|
753 ! ! |
|
754 |
756 !HierarchicalListEditor methodsFor:'private'! |
755 !HierarchicalListEditor methodsFor:'private'! |
757 |
756 |
758 checkMenuItemModified |
757 checkMenuItemModified |
759 "check item modification" |
758 "check item modification" |
760 |
759 |
1014 |
1013 |
1015 isModified := false. |
1014 isModified := false. |
1016 self valueOfEnablingCommitButtons value: false |
1015 self valueOfEnablingCommitButtons value: false |
1017 ! |
1016 ! |
1018 |
1017 |
1019 doBrowse:what |
1018 doBrowse |
1020 "open a system browser" |
1019 "open a system browser" |
1021 |
1020 |
1022 |cls sel| |
1021 SystemBrowser openInClass: specClass class selector: specSelector |
1023 |
1022 |
1024 (cls := specClass) notNil |
|
1025 ifTrue: |
|
1026 [ |
|
1027 what == #class |
|
1028 ifFalse: |
|
1029 [ |
|
1030 (sel := specSelector) isNil ifTrue:[^self]. |
|
1031 what == #spec ifTrue:[cls := cls class] |
|
1032 ]. |
|
1033 SystemBrowser openInClass:cls selector:sel |
|
1034 ] |
|
1035 ! |
1023 ! |
1036 |
1024 |
1037 doCopy |
1025 doCopy |
1038 "copy current selected nodes into copy buffer" |
1026 "copy current selected nodes into copy buffer" |
1039 |
1027 |
1126 [ |
1114 [ |
1127 specClass := cls. |
1115 specClass := cls. |
1128 specSelector := sel asSymbol. |
1116 specSelector := sel asSymbol. |
1129 self hasValidClass value: true. |
1117 self hasValidClass value: true. |
1130 isModified := true. |
1118 isModified := true. |
|
1119 self updateInfoLabel. |
1131 ^self |
1120 ^self |
1132 ] |
1121 ] |
1133 ] |
1122 ] |
1134 ] |
1123 ] |
1135 ] |
1124 ] |
1215 doNew |
1204 doNew |
1216 "remove all items; restart" |
1205 "remove all items; restart" |
1217 |
1206 |
1218 treeView root:(TreeItem name:'Root' contents:#anchor). |
1207 treeView root:(TreeItem name:'Root' contents:#anchor). |
1219 treeView selection:1. |
1208 treeView selection:1. |
1220 isModified := true |
1209 isModified := true. |
1221 |
|
1222 |
1210 |
1223 |
1211 |
1224 |
1212 |
1225 ! |
1213 ! |
1226 |
1214 |