177 |
180 |
178 #(#FullSpec |
181 #(#FullSpec |
179 #'window:' |
182 #'window:' |
180 #(#WindowSpec |
183 #(#WindowSpec |
181 #'name:' 'Tab Basic' |
184 #'name:' 'Tab Basic' |
182 #'layout:' #(#LayoutFrame 265 0 591 0 571 0 791 0) |
185 #'layout:' #(#LayoutFrame 171 0 551 0 477 0 751 0) |
183 #'label:' 'Tab Basic' |
186 #'label:' 'Tab Basic' |
184 #'min:' #(#Point 10 10) |
187 #'min:' #(#Point 10 10) |
185 #'max:' #(#Point 1280 1024) |
188 #'max:' #(#Point 1280 1024) |
186 #'bounds:' #(#Rectangle 265 591 572 792) |
189 #'bounds:' #(#Rectangle 171 551 478 752) |
187 #'usePreferredExtent:' false |
190 #'usePreferredExtent:' false |
188 ) |
191 ) |
189 #'component:' |
192 #'component:' |
190 #(#SpecCollection |
193 #(#SpecCollection |
191 #'collection:' |
194 #'collection:' |
192 #( |
195 #( |
193 #(#LabelSpec |
196 #(#LabelSpec |
194 #'name:' 'Label' |
197 #'name:' 'Label' |
195 #'layout:' #(#AlignmentOrigin 95 0 34 0 1 0.5) |
198 #'layout:' #(#AlignmentOrigin 104 0 26 0 1 0.5) |
196 #'label:' 'Label:' |
199 #'label:' 'Label:' |
197 #'resizeForLabel:' true |
200 #'resizeForLabel:' true |
198 ) |
201 ) |
199 #(#InputFieldSpec |
202 #(#InputFieldSpec |
200 #'name:' 'LabelField' |
203 #'name:' 'LabelField' |
201 #'layout:' #(#LayoutFrame 97 0 24 0 -4 1.0 46 0) |
204 #'layout:' #(#LayoutFrame 107 0 15 0 -5 1.0 37 0) |
202 #'activeHelpKey:' #label |
205 #'activeHelpKey:' #label |
203 #'model:' #label |
206 #'model:' #label |
204 ) |
207 ) |
205 #(#CheckBoxSpec |
208 #(#CheckBoxSpec |
206 #'name:' 'TranslateLabel' |
209 #'name:' 'TranslateLabel' |
207 #'layout:' #(#LayoutOrigin 95 0 47 0) |
210 #'layout:' #(#LayoutOrigin 107 0 47 0) |
208 #'activeHelpKey:' #translateLabel |
211 #'activeHelpKey:' #translateLabel |
209 #'model:' #translateLabel |
212 #'model:' #translateLabel |
210 #'label:' 'Label derives from Application' |
213 #'label:' 'Label derives from Application' |
211 ) |
214 ) |
212 #(#ColorMenuSpec |
215 #(#ColorMenuSpec |
223 #'adjust:' #right |
226 #'adjust:' #right |
224 #'resizeForLabel:' true |
227 #'resizeForLabel:' true |
225 ) |
228 ) |
226 #(#CheckBoxSpec |
229 #(#CheckBoxSpec |
227 #'name:' 'CanSelect' |
230 #'name:' 'CanSelect' |
228 #'layout:' #(#LayoutFrame 34 0 176 0 153 0 198 0) |
231 #'layout:' #(#LayoutFrame 107 0 176 0 226 0 198 0) |
229 #'model:' #enabled |
232 #'model:' #enabled |
230 #'label:' 'Can Select' |
233 #'label:' 'Can Select' |
231 ) |
234 ) |
232 #(#LabelSpec |
235 #(#LabelSpec |
233 #'name:' 'ArgumentLabel' |
236 #'name:' 'ArgumentLabel' |
234 #'layout:' #(#AlignmentOrigin 95 0 91 0 1 0.5) |
237 #'layout:' #(#AlignmentOrigin 104 0 91 0 1 0.5) |
235 #'label:' 'Argument' |
238 #'label:' 'Argument:' |
236 #'resizeForLabel:' true |
239 #'resizeForLabel:' true |
237 ) |
240 ) |
238 #(#InputFieldSpec |
241 #(#InputFieldSpec |
239 #'name:' 'ArgumentField' |
242 #'name:' 'ArgumentField' |
240 #'layout:' #(#LayoutFrame 97 0 80 0 -4 1.0 102 0) |
243 #'layout:' #(#LayoutFrame 107 0 80 0 -5 1.0 102 0) |
241 #'activeHelpKey:' #label |
244 #'activeHelpKey:' #label |
242 #'model:' #editAgument |
245 #'model:' #editAgument |
243 ) |
246 ) |
244 ) |
247 ) |
245 ) |
248 ) |
264 |
267 |
265 #(#FullSpec |
268 #(#FullSpec |
266 #'window:' |
269 #'window:' |
267 #(#WindowSpec |
270 #(#WindowSpec |
268 #'name:' 'TabItem Editor' |
271 #'name:' 'TabItem Editor' |
269 #'layout:' #(#LayoutFrame 512 0 124 0 980 0 452 0) |
272 #'layout:' #(#LayoutFrame 275 0 353 0 743 0 681 0) |
270 #'label:' 'TabItem Editor' |
273 #'label:' 'TabItem Editor' |
271 #'min:' #(#Point 10 10) |
274 #'min:' #(#Point 10 10) |
272 #'max:' #(#Point 1152 900) |
275 #'max:' #(#Point 1152 900) |
273 #'bounds:' #(#Rectangle 512 124 981 453) |
276 #'bounds:' #(#Rectangle 275 353 744 682) |
274 #'menu:' #menu |
277 #'menu:' #menu |
275 #'usePreferredExtent:' false |
278 #'usePreferredExtent:' false |
276 ) |
279 ) |
277 #'component:' |
280 #'component:' |
278 #(#SpecCollection |
281 #(#SpecCollection |
284 #'menu:' #menuToolbar |
287 #'menu:' #menuToolbar |
285 #'showSeparatingLines:' true |
288 #'showSeparatingLines:' true |
286 ) |
289 ) |
287 #(#VariableHorizontalPanelSpec |
290 #(#VariableHorizontalPanelSpec |
288 #'name:' 'VariablePanel' |
291 #'name:' 'VariablePanel' |
289 #'layout:' #(#LayoutFrame 0 0.0 36 0.0 0 1.0 -22 1.0) |
292 #'layout:' #(#LayoutFrame 0 0.0 36 0.0 0 1.0 -26 1.0) |
290 #'component:' |
293 #'component:' |
291 #(#SpecCollection |
294 #(#SpecCollection |
292 #'collection:' |
295 #'collection:' |
293 #( |
296 #( |
294 #(#SequenceViewSpec |
297 #(#SequenceViewSpec |
322 ) |
325 ) |
323 ) |
326 ) |
324 ) |
327 ) |
325 #(#SubCanvasSpec |
328 #(#SubCanvasSpec |
326 #'name:' 'specCanvas' |
329 #'name:' 'specCanvas' |
327 #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -30 1.0) |
330 #'layout:' #(#LayoutFrame 1 0.0 0 0.0 0 1.0 -30 1.0) |
328 #'specHolder:' #specChannel |
331 #'specHolder:' #specChannel |
329 ) |
332 ) |
330 #(#HorizontalPanelViewSpec |
333 #(#HorizontalPanelViewSpec |
331 #'name:' 'modifyPanel' |
334 #'name:' 'modifyPanel' |
332 #'layout:' #(#LayoutFrame 0 0.0 -30 1.0 0 1.0 0 1.0) |
335 #'layout:' #(#LayoutFrame 1 0.0 -30 1.0 0 1.0 0 1.0) |
333 #'component:' |
336 #'component:' |
334 #(#SpecCollection |
337 #(#SpecCollection |
335 #'collection:' |
338 #'collection:' |
336 #( |
339 #( |
337 #(#ActionButtonSpec |
340 #(#ActionButtonSpec |
338 #'name:' 'cancelButton' |
341 #'name:' 'cancelButton' |
339 #'label:' 'Cancel' |
342 #'label:' 'Cancel' |
340 #'model:' #cancel |
343 #'model:' #cancel |
341 #'enableChannel:' #modifiedChannel |
344 #'enableChannel:' #modifiedChannel |
342 #'extent:' #(#Point 168 24) |
345 #'extent:' #(#Point 166 24) |
343 ) |
346 ) |
344 #(#ActionButtonSpec |
347 #(#ActionButtonSpec |
345 #'name:' 'acceptButton' |
348 #'name:' 'acceptButton' |
346 #'label:' 'OK' |
349 #'label:' 'OK' |
347 #'model:' #accept |
350 #'model:' #accept |
348 #'enableChannel:' #modifiedChannel |
351 #'enableChannel:' #modifiedChannel |
349 #'extent:' #(#Point 169 24) |
352 #'extent:' #(#Point 167 24) |
350 ) |
353 ) |
351 ) |
354 ) |
352 ) |
355 ) |
353 #'horizontalLayout:' #fitSpace |
356 #'horizontalLayout:' #fitSpace |
354 #'verticalLayout:' #fitSpace |
357 #'verticalLayout:' #fitSpace |
355 #'horizontalSpace:' 3 |
358 #'horizontalSpace:' 3 |
356 #'verticalSpace:' 3 |
359 #'verticalSpace:' 3 |
357 ) |
360 ) |
358 ) |
361 ) |
359 ) |
362 ) |
360 #'borderWidth:' 1 |
363 #'level:' -1 |
361 ) |
364 ) |
362 ) |
365 ) |
363 ) |
366 ) |
364 #'handles:' #(#Any 0.259875 1.0) |
367 #'handles:' #(#Any 0.259875 1.0) |
365 ) |
368 ) |
366 #(#UISubSpecification |
369 #(#UISubSpecification |
367 #'name:' 'infoBarSubSpec' |
370 #'name:' 'infoBarSubSpec' |
368 #'layout:' #(#LayoutFrame 0 0.0 -22 1 0 1.0 0 1.0) |
371 #'layout:' #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0) |
369 #'majorKey:' #ToolApplicationModel |
372 #'majorKey:' #ToolApplicationModel |
370 #'minorKey:' #windowSpecForInfoBar |
373 #'minorKey:' #windowSpecForInfoBar |
371 ) |
374 ) |
372 ) |
375 ) |
373 ) |
376 ) |
406 |
409 |
407 #( |
410 #( |
408 #(#MenuItem |
411 #(#MenuItem |
409 #'label:' 'New' |
412 #'label:' 'New' |
410 #'value:' #doNew |
413 #'value:' #doNew |
|
414 #'activeHelpKey:' #fileNew |
411 ) |
415 ) |
412 #(#MenuItem |
416 #(#MenuItem |
413 #'label:' '-' |
417 #'label:' '-' |
414 ) |
418 ) |
415 #(#MenuItem |
419 #(#MenuItem |
416 #'label:' 'Reload' |
420 #'label:' 'Reload' |
417 #'value:' #doReload |
421 #'value:' #doReload |
|
422 #'activeHelpKey:' #fileReload |
418 #'enabled:' #hasClassAndSelector |
423 #'enabled:' #hasClassAndSelector |
419 ) |
424 ) |
420 #(#MenuItem |
425 #(#MenuItem |
421 #'label:' '-' |
426 #'label:' '-' |
422 ) |
427 ) |
423 #(#MenuItem |
428 #(#MenuItem |
424 #'label:' 'Save' |
429 #'label:' 'Save' |
425 #'value:' #doInstallSpec |
430 #'value:' #doInstallSpec |
|
431 #'activeHelpKey:' #fileSave |
426 #'enabled:' #isNotModified |
432 #'enabled:' #isNotModified |
427 ) |
433 ) |
428 #(#MenuItem |
434 #(#MenuItem |
429 #'label:' '-' |
435 #'label:' '-' |
430 ) |
436 ) |
431 #(#MenuItem |
437 #(#MenuItem |
432 #'label:' 'Define Class And Selector...' |
438 #'label:' 'Define Class And Selector...' |
433 #'value:' #doDefineClassAndSelector |
439 #'value:' #doDefineClassAndSelector |
|
440 #'activeHelpKey:' #fileDefineClassAndSelector |
434 ) |
441 ) |
435 #(#MenuItem |
442 #(#MenuItem |
436 #'label:' 'Create Aspect Method' |
443 #'label:' 'Create Aspect Method' |
437 #'value:' #doInstallAspect |
444 #'value:' #doInstallAspect |
438 #'enabled:' #hasClassAndSelector |
445 #'enabled:' #hasClassAndSelector |
501 |
526 |
502 #( |
527 #( |
503 #(#MenuItem |
528 #(#MenuItem |
504 #'label:' 'Cut' |
529 #'label:' 'Cut' |
505 #'value:' #doCutTab |
530 #'value:' #doCutTab |
|
531 #'activeHelpKey:' #editCut |
506 #'enabled:' #isColumnSelected |
532 #'enabled:' #isColumnSelected |
507 ) |
533 ) |
508 #(#MenuItem |
534 #(#MenuItem |
509 #'label:' 'Copy' |
535 #'label:' 'Copy' |
510 #'value:' #doCopyTab |
536 #'value:' #doCopyTab |
|
537 #'activeHelpKey:' #editCopy |
511 #'enabled:' #isColumnSelected |
538 #'enabled:' #isColumnSelected |
512 ) |
539 ) |
513 #(#MenuItem |
540 #(#MenuItem |
514 #'label:' 'Paste' |
541 #'label:' 'Paste' |
515 #'value:' #doPasteTab |
542 #'value:' #doPasteTab |
|
543 #'activeHelpKey:' #editPaste |
516 #'enabled:' #valueOfHavingClipboard |
544 #'enabled:' #valueOfHavingClipboard |
517 ) |
545 ) |
518 #(#MenuItem |
546 #(#MenuItem |
519 #'label:' '-' |
547 #'label:' '-' |
520 ) |
548 ) |
521 #(#MenuItem |
549 #(#MenuItem |
522 #'label:' 'Move Up' |
550 #'label:' 'Move Up' |
523 #'value:' #'doMoveTabUpOrDown:' |
551 #'value:' #'doMoveTabUpOrDown:' |
|
552 #'activeHelpKey:' #editMoveUp |
524 #'enabled:' #canMoveTabUpOrDown |
553 #'enabled:' #canMoveTabUpOrDown |
525 #'argument:' #up |
554 #'argument:' #up |
526 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #upIcon 'Move Up') |
555 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #upIcon 'Move Up') |
527 ) |
556 ) |
528 #(#MenuItem |
557 #(#MenuItem |
529 #'label:' 'Move Down' |
558 #'label:' 'Move Down' |
530 #'value:' #'doMoveTabUpOrDown:' |
559 #'value:' #'doMoveTabUpOrDown:' |
|
560 #'activeHelpKey:' #editMoveDown |
531 #'enabled:' #canMoveTabUpOrDown |
561 #'enabled:' #canMoveTabUpOrDown |
532 #'argument:' #down |
562 #'argument:' #down |
533 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #downIcon 'Move Down') |
563 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #downIcon 'Move Down') |
534 ) |
564 ) |
535 ) nil |
565 ) nil |
554 |
584 |
555 #(#Menu |
585 #(#Menu |
556 |
586 |
557 #( |
587 #( |
558 #(#MenuItem |
588 #(#MenuItem |
559 #'label:' 'Test' |
|
560 #'isButton:' true |
|
561 #'value:' #doTest |
|
562 #'labelImage:' #(#ResourceRetriever #UIPainter #startIcon) |
|
563 ) |
|
564 #(#MenuItem |
|
565 #'label:' '' |
|
566 ) |
|
567 #(#MenuItem |
|
568 #'label:' 'New' |
589 #'label:' 'New' |
569 #'isButton:' true |
590 #'isButton:' true |
570 #'value:' #doNew |
591 #'value:' #doNew |
|
592 #'activeHelpKey:' #fileNew |
571 #'labelImage:' #(#ResourceRetriever nil #newIcon) |
593 #'labelImage:' #(#ResourceRetriever nil #newIcon) |
572 ) |
594 ) |
573 #(#MenuItem |
595 #(#MenuItem |
574 #'label:' 'Save' |
596 #'label:' 'Save' |
575 #'isButton:' true |
597 #'isButton:' true |
576 #'value:' #doInstallSpec |
598 #'value:' #doInstallSpec |
|
599 #'activeHelpKey:' #fileSave |
577 #'enabled:' #isNotModified |
600 #'enabled:' #isNotModified |
578 #'labelImage:' #(#ResourceRetriever nil #saveIcon) |
601 #'labelImage:' #(#ResourceRetriever nil #saveIcon) |
579 ) |
602 ) |
580 #(#MenuItem |
603 #(#MenuItem |
581 #'label:' '' |
604 #'label:' '' |
582 ) |
605 ) |
583 #(#MenuItem |
606 #(#MenuItem |
584 #'label:' 'Add Tab Item' |
607 #'label:' 'Add Tab Item' |
585 #'isButton:' true |
608 #'isButton:' true |
586 #'value:' #doCreateTab |
609 #'value:' #doCreateTab |
|
610 #'activeHelpKey:' #addTabItem |
587 #'enabled:' #isNotModified |
611 #'enabled:' #isNotModified |
588 #'labelImage:' #(#ResourceRetriever nil #newTabItemIcon) |
612 #'labelImage:' #(#ResourceRetriever nil #newTabItemIcon) |
589 ) |
613 ) |
590 #(#MenuItem |
614 #(#MenuItem |
591 #'label:' '' |
615 #'label:' '' |
592 ) |
616 ) |
593 #(#MenuItem |
617 #(#MenuItem |
594 #'label:' 'Move Tab Up' |
618 #'label:' 'Move Tab Up' |
595 #'isButton:' true |
619 #'isButton:' true |
596 #'value:' #'doMoveTabUpOrDown:' |
620 #'value:' #'doMoveTabUpOrDown:' |
|
621 #'activeHelpKey:' #editMoveUp |
597 #'enabled:' #canMoveTabUpOrDown |
622 #'enabled:' #canMoveTabUpOrDown |
598 #'argument:' #up |
623 #'argument:' #up |
599 #'labelImage:' #(#ResourceRetriever nil #upIcon) |
624 #'labelImage:' #(#ResourceRetriever nil #upIcon) |
600 ) |
625 ) |
601 #(#MenuItem |
626 #(#MenuItem |
602 #'label:' 'Move Tab Down' |
627 #'label:' 'Move Tab Down' |
603 #'isButton:' true |
628 #'isButton:' true |
604 #'value:' #'doMoveTabUpOrDown:' |
629 #'value:' #'doMoveTabUpOrDown:' |
|
630 #'activeHelpKey:' #editMoveDown |
605 #'enabled:' #canMoveTabUpOrDown |
631 #'enabled:' #canMoveTabUpOrDown |
606 #'argument:' #down |
632 #'argument:' #down |
607 #'labelImage:' #(#ResourceRetriever nil #downIcon) |
633 #'labelImage:' #(#ResourceRetriever nil #downIcon) |
|
634 ) |
|
635 #(#MenuItem |
|
636 #'label:' '' |
|
637 ) |
|
638 #(#MenuItem |
|
639 #'label:' 'Preview' |
|
640 #'isButton:' true |
|
641 #'activeHelpKey:' #testPreview |
|
642 #'enabled:' #canShowTestMode |
|
643 #'labelImage:' #(#ResourceRetriever nil #startIcon) |
|
644 #'indication:' #testMode |
608 ) |
645 ) |
609 ) nil |
646 ) nil |
610 nil |
647 nil |
611 ) |
648 ) |
612 ! ! |
649 ! ! |
788 |
836 |
789 (holder := builder bindingAt:#specChannel) isNil ifTrue:[ |
837 (holder := builder bindingAt:#specChannel) isNil ifTrue:[ |
790 builder aspectAt:#specChannel put:(holder := ValueHolder new). |
838 builder aspectAt:#specChannel put:(holder := ValueHolder new). |
791 ]. |
839 ]. |
792 ^ holder |
840 ^ holder |
|
841 ! |
|
842 |
|
843 testMode |
|
844 |
|
845 |holder| |
|
846 |
|
847 (holder := builder bindingAt:#testMode) isNil ifTrue:[ |
|
848 builder aspectAt:#testMode put:(holder := false asValue). |
|
849 holder addDependent: self |
|
850 ]. |
|
851 ^ holder |
|
852 |
793 ! ! |
853 ! ! |
794 |
854 |
795 !TabItemEditor methodsFor:'building'! |
855 !TabItemEditor methodsFor:'building'! |
796 |
856 |
797 buildFrom:aClass andSelector:aSelector |
857 buildFrom:aClass andSelector:aSelector |
857 update:something with:aParameter from:someObject |
917 update:something with:aParameter from:someObject |
858 "one of my aspects has changed; update modified channel |
918 "one of my aspects has changed; update modified channel |
859 " |
919 " |
860 self modified:true. |
920 self modified:true. |
861 |
921 |
862 |
922 someObject = self testMode |
|
923 ifTrue: |
|
924 [ |
|
925 someObject value |
|
926 ifTrue: [self doTest] |
|
927 ifFalse:[testView lower. self selectionHolder value:1]. |
|
928 |
|
929 self valueOfInfoLabel value: self defaultInfoLabel. |
|
930 ] |
|
931 ! ! |
|
932 |
|
933 !TabItemEditor methodsFor:'help'! |
|
934 |
|
935 defaultInfoLabel |
|
936 |
|
937 ^self testMode value |
|
938 ifTrue: ['Test mode'] |
|
939 ifFalse: [''] |
863 ! ! |
940 ! ! |
864 |
941 |
865 !TabItemEditor methodsFor:'selection'! |
942 !TabItemEditor methodsFor:'selection'! |
866 |
943 |
867 selectedIndex |
944 selectedIndex |
868 ^ selectedIndex |
945 ^ selectedIndex |
869 ! |
946 ! |
870 |
947 |
871 selectedIndex:anIndex |
948 selectedIndex:anIndex |
872 |s oldSel| |
949 |s oldSel| |
|
950 |
|
951 self listOfLabels notEmpty ifTrue: [self canShowTestMode value: true]. |
873 |
952 |
874 oldSel := selectedIndex. |
953 oldSel := selectedIndex. |
875 selectedIndex := anIndex ? 0. |
954 selectedIndex := anIndex ? 0. |
876 |
955 |
877 selectedIndex == oldSel ifTrue:[^ self]. |
956 selectedIndex == oldSel ifTrue:[^ self]. |
968 self clipboard:(listOfTabs at:selectedIndex) deepCopy |
1051 self clipboard:(listOfTabs at:selectedIndex) deepCopy |
969 ] |
1052 ] |
970 ! |
1053 ! |
971 |
1054 |
972 doCreateTab |
1055 doCreateTab |
|
1056 |
973 |tab| |
1057 |tab| |
974 |
1058 self testMode value: false. |
975 tab := TabItem label:'Tab Item ', (listOfTabs size + 1) printString. |
1059 tab := TabItem label:'Tab Item ', (listOfTabs size + 1) printString. |
976 |
1060 |
977 listOfTabs add:tab afterIndex:selectedIndex. |
1061 listOfTabs add:tab afterIndex:selectedIndex. |
978 self listOfLabels add:(tab label) afterIndex:selectedIndex. |
1062 self listOfLabels add:(tab label) afterIndex:selectedIndex. |
979 hasChanged := true. |
1063 hasChanged := true. |
980 |
1064 |
981 selectedIndex == 0 ifTrue:[ |
1065 selectedIndex == 0 ifTrue:[ |
982 self selectionHolder value:1 |
1066 self selectionHolder value:1 |
983 ] ifFalse:[ |
1067 ] ifFalse:[ |
984 self selectionHolder value:listOfTabs size. |
1068 self selectionHolder value:selectedIndex + 1. |
985 self cancel. |
1069 self cancel. |
986 ] |
1070 ] |
987 ! |
1071 ! |
988 |
1072 |
989 doCutTab |
1073 doCutTab |