118 #'resizeForLabel:' true |
119 #'resizeForLabel:' true |
119 ) |
120 ) |
120 #(#InputFieldSpec |
121 #(#InputFieldSpec |
121 #'name:' 'methodField' |
122 #'name:' 'methodField' |
122 #'layout:' #(#LayoutFrame 47 0.11 64 0 -2 1.0 86 0) |
123 #'layout:' #(#LayoutFrame 47 0.11 64 0 -2 1.0 86 0) |
123 #'tabable:' true |
|
124 #'model:' #specSelectorChannel |
|
125 #'type:' #string |
|
126 ) |
|
127 #(#UISubSpecification |
|
128 #'name:' 'SubSpecification' |
|
129 #'layout:' #(#LayoutFrame 0 0.0 -29 1 0 1.0 -5 1.0) |
|
130 #'majorKey:' #ToolApplicationModel |
|
131 #'minorKey:' #windowSpecForCommitWithoutChannels |
|
132 ) |
|
133 ) |
|
134 ) |
|
135 ) |
|
136 ! |
|
137 |
|
138 menu |
|
139 "this window spec was automatically generated by the ST/X MenuEditor" |
|
140 |
|
141 "do not manually edit this - the builder may not be able to |
|
142 handle the specification if its corrupted." |
|
143 |
|
144 " |
|
145 MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menu |
|
146 (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menu)) startUp |
|
147 " |
|
148 |
|
149 <resource: #menu> |
|
150 |
|
151 ^ |
|
152 |
|
153 #(#Menu |
|
154 |
|
155 #( |
|
156 #(#MenuItem |
|
157 #'label:' 'About' |
|
158 #'labelImage:' #(#ResourceRetriever nil #icon) |
|
159 #'submenuChannel:' #menuAbout |
|
160 ) |
|
161 #(#MenuItem |
|
162 #'label:' 'File' |
|
163 #'submenu:' |
|
164 #(#Menu |
|
165 |
|
166 #( |
|
167 #(#MenuItem |
|
168 #'label:' 'New' |
|
169 #'value:' #doNew |
|
170 ) |
|
171 #(#MenuItem |
|
172 #'label:' 'Reload' |
|
173 #'value:' #doReload |
|
174 ) |
|
175 #(#MenuItem |
|
176 #'label:' '-' |
|
177 ) |
|
178 #(#MenuItem |
|
179 #'label:' 'Save' |
|
180 #'value:' #doInstall |
|
181 #'enabled:' #hasValidClass |
|
182 ) |
|
183 #(#MenuItem |
|
184 #'label:' '-' |
|
185 ) |
|
186 #(#MenuItem |
|
187 #'label:' 'Define Selector...' |
|
188 #'value:' #doDefineSelector |
|
189 #'enabled:' #hasValidClass |
|
190 ) |
|
191 #(#MenuItem |
|
192 #'label:' 'Define Class...' |
|
193 #'value:' #doDefineClass |
|
194 #'enabled:' #canChangeClassName |
|
195 ) |
|
196 #(#MenuItem |
|
197 #'label:' '-' |
|
198 ) |
|
199 #(#MenuItem |
|
200 #'label:' 'Exit' |
|
201 #'value:' #closeRequest |
|
202 ) |
|
203 ) nil |
|
204 nil |
|
205 ) |
|
206 ) |
|
207 #(#MenuItem |
|
208 #'label:' 'Edit' |
|
209 #'submenuChannel:' #menuEdit |
|
210 ) |
|
211 #(#MenuItem |
|
212 #'label:' 'Browse' |
|
213 #'enabled:' #hasValidClass |
|
214 #'submenu:' |
|
215 #(#Menu |
|
216 |
|
217 #( |
|
218 #(#MenuItem |
|
219 #'label:' 'Class' |
|
220 #'value:' #'doBrowse:' |
|
221 #'argument:' #class |
|
222 ) |
|
223 #(#MenuItem |
|
224 #'label:' 'Method' |
|
225 #'value:' #'doBrowse:' |
|
226 #'enabled:' #hasValidMethodSelector |
|
227 #'argument:' #method |
|
228 ) |
|
229 #(#MenuItem |
|
230 #'label:' 'Specification' |
|
231 #'value:' #'doBrowse:' |
|
232 #'enabled:' #hasValidSpecSelector |
|
233 #'argument:' #spec |
|
234 ) |
|
235 ) nil |
|
236 nil |
|
237 ) |
|
238 ) |
|
239 ) nil |
|
240 nil |
|
241 ) |
|
242 ! |
|
243 |
|
244 menuEdit |
|
245 "this window spec was automatically generated by the ST/X MenuEditor" |
|
246 |
|
247 "do not manually edit this - the builder may not be able to |
|
248 handle the specification if its corrupted." |
|
249 |
|
250 " |
|
251 MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menuEdit |
|
252 (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menuEdit)) startUp |
|
253 " |
|
254 |
|
255 <resource: #menu> |
|
256 |
|
257 ^ |
|
258 |
|
259 #(#Menu |
|
260 |
|
261 #( |
|
262 #(#MenuItem |
|
263 #'label:' 'Cut' |
|
264 #'value:' #doCut |
|
265 #'enabled:' #canCut |
|
266 ) |
|
267 #(#MenuItem |
|
268 #'label:' 'Copy' |
|
269 #'value:' #doCopy |
|
270 #'enabled:' #canCopy |
|
271 ) |
|
272 #(#MenuItem |
|
273 #'label:' 'Paste' |
|
274 #'value:' #doPaste |
|
275 #'enabled:' #canPaste |
|
276 ) |
|
277 #(#MenuItem |
|
278 #'label:' '-' |
|
279 ) |
|
280 #(#MenuItem |
|
281 #'label:' 'Create Child' |
|
282 #'value:' #doCreateChild |
|
283 #'enabled:' #canCreateChildChannel |
|
284 #'labelImage:' #(#ResourceRetriever #HierarchicalListEditor #iconCreateChild) |
|
285 ) |
|
286 #(#MenuItem |
|
287 #'label:' 'Create Sister' |
|
288 #'value:' #doCreateSister |
|
289 #'enabled:' #canCreateSisterChannel |
|
290 #'labelImage:' #(#ResourceRetriever #HierarchicalListEditor #iconCreateSister) |
|
291 ) |
|
292 ) nil |
|
293 nil |
|
294 ) |
|
295 ! |
|
296 |
|
297 menuToolbar |
|
298 "this window spec was automatically generated by the ST/X MenuEditor" |
|
299 |
|
300 "do not manually edit this - the builder may not be able to |
|
301 handle the specification if its corrupted." |
|
302 |
|
303 " |
|
304 MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menuToolbar |
|
305 (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menuToolbar)) startUp |
|
306 " |
|
307 |
|
308 <resource: #menu> |
|
309 |
|
310 ^ |
|
311 |
|
312 #(#Menu |
|
313 |
|
314 #( |
|
315 #(#MenuItem |
|
316 #'label:' 'New' |
|
317 #'isButton:' true |
|
318 #'value:' #doNew |
|
319 #'enabled:' #canCreateChildChannel |
|
320 #'labelImage:' #(#ResourceRetriever nil #newIcon) |
|
321 ) |
|
322 #(#MenuItem |
|
323 #'label:' 'Save' |
|
324 #'isButton:' true |
|
325 #'value:' #doInstall |
|
326 #'enabled:' #canCreateChildChannel |
|
327 #'labelImage:' #(#ResourceRetriever nil #saveIcon) |
|
328 ) |
|
329 #(#MenuItem |
|
330 #'label:' '' |
|
331 ) |
|
332 #(#MenuItem |
|
333 #'label:' 'Create Child' |
|
334 #'isButton:' true |
|
335 #'value:' #doCreateChild |
|
336 #'enabled:' #canCreateChildChannel |
|
337 #'labelImage:' #(#ResourceRetriever nil #createChildIcon) |
|
338 ) |
|
339 #(#MenuItem |
|
340 #'label:' 'Create Sister' |
|
341 #'isButton:' true |
|
342 #'value:' #doCreateSister |
|
343 #'enabled:' #canCreateSisterChannel |
|
344 #'labelImage:' #(#ResourceRetriever nil #createSisterIcon) |
|
345 ) |
|
346 #(#MenuItem |
|
347 #'label:' '' |
|
348 ) |
|
349 #(#MenuItem |
|
350 #'label:' 'Step Up' |
|
351 #'isButton:' true |
|
352 #'value:' #doStepUp |
|
353 #'enabled:' #canStepOverChannel |
|
354 #'labelImage:' #(#ResourceRetriever nil #upIcon) |
|
355 ) |
|
356 #(#MenuItem |
|
357 #'label:' 'Step Down' |
|
358 #'isButton:' true |
|
359 #'value:' #doStepDown |
|
360 #'enabled:' #canStepOverChannel |
|
361 #'labelImage:' #(#ResourceRetriever nil #downIcon) |
|
362 ) |
|
363 #(#MenuItem |
|
364 #'label:' 'Step In' |
|
365 #'isButton:' true |
|
366 #'value:' #doStepIn |
|
367 #'enabled:' #canStepInChannel |
|
368 #'labelImage:' #(#ResourceRetriever nil #downRightIcon) |
|
369 ) |
|
370 #(#MenuItem |
|
371 #'label:' 'Step Out' |
|
372 #'isButton:' true |
|
373 #'value:' #doStepOut |
|
374 #'enabled:' #canStepOutChannel |
|
375 #'labelImage:' #(#ResourceRetriever nil #leftDownIcon) |
|
376 ) |
|
377 ) nil |
|
378 nil |
|
379 ) |
|
380 ! |
|
381 |
|
382 methodSpec |
|
383 "this window spec was automatically generated by the ST/X UIPainter" |
|
384 |
|
385 "do not manually edit this - the painter/builder may not be able to |
|
386 handle the specification if its corrupted." |
|
387 |
|
388 " |
|
389 UIPainter new openOnClass:HierarchicalListEditor andSelector:#methodSpec |
|
390 HierarchicalListEditor new openInterface:#methodSpec |
|
391 " |
|
392 |
|
393 <resource: #canvas> |
|
394 |
|
395 ^ |
|
396 |
|
397 #(#FullSpec |
|
398 #'window:' |
|
399 #(#WindowSpec |
|
400 #'name:' 'Painter' |
|
401 #'layout:' #(#LayoutFrame 151 0 377 0 431 0 455 0) |
|
402 #'label:' 'Painter' |
|
403 #'min:' #(#Point 10 10) |
|
404 #'max:' #(#Point 1160 870) |
|
405 #'bounds:' #(#Rectangle 151 377 432 456) |
|
406 #'usePreferredExtent:' false |
|
407 ) |
|
408 #'component:' |
|
409 #(#SpecCollection |
|
410 #'collection:' |
|
411 #( |
|
412 #(#LabelSpec |
|
413 #'name:' 'boxLabel' |
|
414 #'layout:' #(#LayoutFrame 0 0.0 3 0 0 1.0 20 0) |
|
415 #'label:' 'Selector for code:' |
|
416 #'adjust:' #left |
|
417 #'resizeForLabel:' true |
|
418 ) |
|
419 #(#InputFieldSpec |
|
420 #'name:' 'methodField' |
|
421 #'layout:' #(#LayoutFrame 0 0.0 22 0 0 1.0 44 0) |
|
422 #'tabable:' true |
124 #'tabable:' true |
423 #'model:' #specSelectorChannel |
125 #'model:' #specSelectorChannel |
424 #'type:' #string |
126 #'type:' #string |
425 ) |
127 ) |
426 #(#UISubSpecification |
128 #(#UISubSpecification |
542 ) |
244 ) |
543 ) |
245 ) |
544 ) |
246 ) |
545 ! ! |
247 ! ! |
546 |
248 |
|
249 !HierarchicalListEditor class methodsFor:'menu specs'! |
|
250 |
|
251 menu |
|
252 "this window spec was automatically generated by the ST/X MenuEditor" |
|
253 |
|
254 "do not manually edit this - the builder may not be able to |
|
255 handle the specification if its corrupted." |
|
256 |
|
257 " |
|
258 MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menu |
|
259 (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menu)) startUp |
|
260 " |
|
261 |
|
262 <resource: #menu> |
|
263 |
|
264 ^ |
|
265 |
|
266 #(#Menu |
|
267 |
|
268 #( |
|
269 #(#MenuItem |
|
270 #'label:' 'About' |
|
271 #'labelImage:' #(#ResourceRetriever nil #icon) |
|
272 #'submenuChannel:' #menuAbout |
|
273 ) |
|
274 #(#MenuItem |
|
275 #'label:' 'File' |
|
276 #'submenu:' |
|
277 #(#Menu |
|
278 |
|
279 #( |
|
280 #(#MenuItem |
|
281 #'label:' 'New' |
|
282 #'value:' #doNew |
|
283 ) |
|
284 #(#MenuItem |
|
285 #'label:' 'Reload' |
|
286 #'value:' #doReload |
|
287 ) |
|
288 #(#MenuItem |
|
289 #'label:' '-' |
|
290 ) |
|
291 #(#MenuItem |
|
292 #'label:' 'Save' |
|
293 #'value:' #doInstall |
|
294 #'enabled:' #hasValidClass |
|
295 ) |
|
296 #(#MenuItem |
|
297 #'label:' '-' |
|
298 ) |
|
299 #(#MenuItem |
|
300 #'label:' 'Define Class And Selector...' |
|
301 #'value:' #doDefineClass |
|
302 ) |
|
303 #(#MenuItem |
|
304 #'label:' '-' |
|
305 ) |
|
306 #(#MenuItem |
|
307 #'label:' 'Exit' |
|
308 #'value:' #closeRequest |
|
309 ) |
|
310 ) nil |
|
311 nil |
|
312 ) |
|
313 ) |
|
314 #(#MenuItem |
|
315 #'label:' 'Edit' |
|
316 #'submenuChannel:' #menuEdit |
|
317 ) |
|
318 #(#MenuItem |
|
319 #'label:' 'Browse' |
|
320 #'enabled:' #hasValidClass |
|
321 #'submenu:' |
|
322 #(#Menu |
|
323 |
|
324 #( |
|
325 #(#MenuItem |
|
326 #'label:' 'Class' |
|
327 #'value:' #'doBrowse:' |
|
328 #'argument:' #class |
|
329 ) |
|
330 #(#MenuItem |
|
331 #'label:' 'Method' |
|
332 #'value:' #'doBrowse:' |
|
333 #'enabled:' #hasValidMethodSelector |
|
334 #'argument:' #method |
|
335 ) |
|
336 #(#MenuItem |
|
337 #'label:' 'Specification' |
|
338 #'value:' #'doBrowse:' |
|
339 #'enabled:' #hasValidSpecSelector |
|
340 #'argument:' #spec |
|
341 ) |
|
342 ) nil |
|
343 nil |
|
344 ) |
|
345 ) |
|
346 ) nil |
|
347 nil |
|
348 ) |
|
349 ! |
|
350 |
|
351 menuEdit |
|
352 "this window spec was automatically generated by the ST/X MenuEditor" |
|
353 |
|
354 "do not manually edit this - the builder may not be able to |
|
355 handle the specification if its corrupted." |
|
356 |
|
357 " |
|
358 MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menuEdit |
|
359 (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menuEdit)) startUp |
|
360 " |
|
361 |
|
362 <resource: #menu> |
|
363 |
|
364 ^ |
|
365 |
|
366 #(#Menu |
|
367 |
|
368 #( |
|
369 #(#MenuItem |
|
370 #'label:' 'Cut' |
|
371 #'value:' #doCut |
|
372 #'enabled:' #canCut |
|
373 ) |
|
374 #(#MenuItem |
|
375 #'label:' 'Copy' |
|
376 #'value:' #doCopy |
|
377 #'enabled:' #canCopy |
|
378 ) |
|
379 #(#MenuItem |
|
380 #'label:' 'Paste' |
|
381 #'value:' #doPaste |
|
382 #'enabled:' #canPaste |
|
383 ) |
|
384 #(#MenuItem |
|
385 #'label:' '-' |
|
386 ) |
|
387 #(#MenuItem |
|
388 #'label:' 'Create Child' |
|
389 #'value:' #doCreateChild |
|
390 #'enabled:' #canCreateChildChannel |
|
391 #'labelImage:' #(#ResourceRetriever #HierarchicalListEditor #createChildIcon 'Create Child') |
|
392 ) |
|
393 #(#MenuItem |
|
394 #'label:' 'Create Sister' |
|
395 #'value:' #doCreateSister |
|
396 #'enabled:' #canCreateSisterChannel |
|
397 #'labelImage:' #(#ResourceRetriever #HierarchicalListEditor #createSisterIcon 'Create Sister') |
|
398 ) |
|
399 #(#MenuItem |
|
400 #'label:' '-' |
|
401 ) |
|
402 #(#MenuItem |
|
403 #'label:' 'Move Up' |
|
404 #'value:' #doStepUp |
|
405 #'activeHelpKey:' #moveSelectionUp |
|
406 #'enabled:' #canStepOverChannel |
|
407 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #upIcon 'Move Up') |
|
408 ) |
|
409 #(#MenuItem |
|
410 #'label:' 'Move Down' |
|
411 #'value:' #doStepDown |
|
412 #'activeHelpKey:' #moveSelectionDown |
|
413 #'enabled:' #canStepOverChannel |
|
414 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #downIcon 'Move Down') |
|
415 ) |
|
416 #(#MenuItem |
|
417 #'label:' 'Move In' |
|
418 #'value:' #doStepIn |
|
419 #'activeHelpKey:' #moveSelectionRight |
|
420 #'enabled:' #canStepInChannel |
|
421 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #downRightIcon 'Move In') |
|
422 ) |
|
423 #(#MenuItem |
|
424 #'label:' 'Move Out' |
|
425 #'value:' #doStepOut |
|
426 #'activeHelpKey:' #moveSelectionLeft |
|
427 #'enabled:' #canStepOutChannel |
|
428 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #leftDownIcon 'Move Out') |
|
429 ) |
|
430 ) nil |
|
431 nil |
|
432 ) |
|
433 ! |
|
434 |
|
435 menuToolbar |
|
436 "this window spec was automatically generated by the ST/X MenuEditor" |
|
437 |
|
438 "do not manually edit this - the builder may not be able to |
|
439 handle the specification if its corrupted." |
|
440 |
|
441 " |
|
442 MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menuToolbar |
|
443 (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menuToolbar)) startUp |
|
444 " |
|
445 |
|
446 <resource: #menu> |
|
447 |
|
448 ^ |
|
449 |
|
450 #(#Menu |
|
451 |
|
452 #( |
|
453 #(#MenuItem |
|
454 #'label:' 'New' |
|
455 #'isButton:' true |
|
456 #'value:' #doNew |
|
457 #'labelImage:' #(#ResourceRetriever nil #newIcon) |
|
458 ) |
|
459 #(#MenuItem |
|
460 #'label:' 'Save' |
|
461 #'isButton:' true |
|
462 #'value:' #doInstall |
|
463 #'enabled:' #hasValidClass |
|
464 #'labelImage:' #(#ResourceRetriever nil #saveIcon) |
|
465 ) |
|
466 #(#MenuItem |
|
467 #'label:' '' |
|
468 ) |
|
469 #(#MenuItem |
|
470 #'label:' 'Create Child' |
|
471 #'isButton:' true |
|
472 #'value:' #doCreateChild |
|
473 #'enabled:' #canCreateChildChannel |
|
474 #'labelImage:' #(#ResourceRetriever nil #createChildIcon) |
|
475 ) |
|
476 #(#MenuItem |
|
477 #'label:' 'Create Sister' |
|
478 #'isButton:' true |
|
479 #'value:' #doCreateSister |
|
480 #'enabled:' #canCreateSisterChannel |
|
481 #'labelImage:' #(#ResourceRetriever nil #createSisterIcon) |
|
482 ) |
|
483 #(#MenuItem |
|
484 #'label:' '' |
|
485 ) |
|
486 #(#MenuItem |
|
487 #'label:' 'Move Up' |
|
488 #'isButton:' true |
|
489 #'value:' #doStepUp |
|
490 #'enabled:' #canStepOverChannel |
|
491 #'labelImage:' #(#ResourceRetriever nil #upIcon) |
|
492 ) |
|
493 #(#MenuItem |
|
494 #'label:' 'Move Down' |
|
495 #'isButton:' true |
|
496 #'value:' #doStepDown |
|
497 #'enabled:' #canStepOverChannel |
|
498 #'labelImage:' #(#ResourceRetriever nil #downIcon) |
|
499 ) |
|
500 #(#MenuItem |
|
501 #'label:' 'Move In' |
|
502 #'isButton:' true |
|
503 #'value:' #doStepIn |
|
504 #'enabled:' #canStepInChannel |
|
505 #'labelImage:' #(#ResourceRetriever nil #downRightIcon) |
|
506 ) |
|
507 #(#MenuItem |
|
508 #'label:' 'Move Out' |
|
509 #'isButton:' true |
|
510 #'value:' #doStepOut |
|
511 #'enabled:' #canStepOutChannel |
|
512 #'labelImage:' #(#ResourceRetriever nil #leftDownIcon) |
|
513 ) |
|
514 ) nil |
|
515 nil |
|
516 ) |
|
517 ! ! |
|
518 |
547 !HierarchicalListEditor class methodsFor:'printing'! |
519 !HierarchicalListEditor class methodsFor:'printing'! |
548 |
520 |
549 prettyPrintArray:anArray on:aStream indent:anIndent |
521 prettyPrintArray:anArray on:aStream indent:anIndent |
550 "print a literal array in a nice format |
522 "print a literal array in a nice format |
551 " |
523 " |
1190 |
1174 |
1191 doStepDown |
1175 doStepDown |
1192 "move selected item after next item" |
1176 "move selected item after next item" |
1193 |
1177 |
1194 treeView selectedNodeChangeSequenceOrder:1. |
1178 treeView selectedNodeChangeSequenceOrder:1. |
1195 self updateChannels |
1179 self updateChannels. |
|
1180 isModified := true |
|
1181 |
1196 ! |
1182 ! |
1197 |
1183 |
1198 doStepIn |
1184 doStepIn |
1199 "lets become the selected item a child of its next sister" |
1185 "lets become the selected item a child of its next sister" |
1200 |
1186 |
1201 treeView selectedNodeBecomeChildOfNext. |
1187 treeView selectedNodeBecomeChildOfNext. |
1202 self updateChannels |
1188 self updateChannels. |
|
1189 isModified := true |
|
1190 |
|
1191 |
|
1192 |
1203 ! |
1193 ! |
1204 |
1194 |
1205 doStepOut |
1195 doStepOut |
1206 "let selected node become a sister of its current parent" |
1196 "let selected node become a sister of its current parent" |
1207 |
1197 |
1208 treeView selectedNodeBecomeSisterOfParent. |
1198 treeView selectedNodeBecomeSisterOfParent. |
1209 self updateChannels |
1199 self updateChannels. |
|
1200 isModified := true |
|
1201 |
|
1202 |
|
1203 |
1210 ! |
1204 ! |
1211 |
1205 |
1212 doStepUp |
1206 doStepUp |
1213 "move selected item before previous item" |
1207 "move selected item before previous item" |
1214 |
1208 |
1215 treeView selectedNodeChangeSequenceOrder:-1. |
1209 treeView selectedNodeChangeSequenceOrder:-1. |
1216 self updateChannels |
1210 self updateChannels. |
|
1211 isModified := true |
|
1212 |
|
1213 |
|
1214 |
1217 ! ! |
1215 ! ! |
1218 |
1216 |
1219 !HierarchicalListEditor class methodsFor:'documentation'! |
1217 !HierarchicalListEditor class methodsFor:'documentation'! |
1220 |
1218 |
1221 version |
1219 version |