282 #name: 'accessCharacterPositionLabel' |
322 #name: 'accessCharacterPositionLabel' |
283 #layout: #(#AlignmentOrigin 275 0 113 0 1 0.5) |
323 #layout: #(#AlignmentOrigin 275 0 113 0 1 0.5) |
284 #resizeForLabel: true |
324 #resizeForLabel: true |
285 ) |
325 ) |
286 #(#InputFieldSpec |
326 #(#InputFieldSpec |
287 #attributes: |
|
288 #(#label |
|
289 nil #accessCharacterPos |
|
290 nil #tabable |
|
291 true #accessCharacterPosition |
|
292 nil |
|
293 ) |
|
294 #name: 'accessCharacterPosition' |
327 #name: 'accessCharacterPosition' |
295 #layout: #(#LayoutFrame 278 0 103 0 -5 1.0 125 0) |
328 #layout: #(#LayoutFrame 278 0 103 0 -5 1.0 125 0) |
296 #activeHelpKey: #label |
329 #activeHelpKey: #detailsAccessCharaterPosition |
297 #tabable: true |
330 #tabable: true |
298 #model: #accessCharacterPosition |
331 #model: #accessCharacterPosition |
299 #group: #inputGroup |
332 #group: #inputGroup |
300 #type: #number |
333 #type: #number |
301 #acceptOnLostFocus: true |
334 #immediateAccept: true |
|
335 #acceptOnReturn: false |
|
336 #acceptOnTab: false |
|
337 #acceptOnLostFocus: false |
302 #acceptChannel: #acceptChannel |
338 #acceptChannel: #acceptChannel |
303 #modifiedChannel: #modifiedChannel |
339 #modifiedChannel: #modifiedChannel |
304 #acceptOnPointerLeave: false |
340 #acceptOnPointerLeave: false |
305 ) |
341 ) |
306 #(#CheckBoxSpec |
342 #(#CheckBoxSpec |
307 #attributes: |
|
308 #(#tabable |
|
309 true |
|
310 ) |
|
311 #label: 'Application provides translation ' |
343 #label: 'Application provides translation ' |
312 #name: 'translateLabel' |
344 #name: 'translateLabel' |
313 #layout: #(#Point 96 135) |
345 #layout: #(#Point 96 135) |
314 #activeHelpKey: #labelDerivesFromApplication |
346 #activeHelpKey: #labelDerivesFromApplication |
315 #tabable: true |
347 #tabable: true |
316 #model: #translateLabel |
348 #model: #translateLabel |
317 ) |
349 ) |
|
350 #(#LabelSpec |
|
351 #label: 'Help Key:' |
|
352 #name: 'activeHelp' |
|
353 #layout: #(#AlignmentOrigin 98 0 190 0 1 0.5) |
|
354 #resizeForLabel: true |
|
355 ) |
|
356 #(#InputFieldSpec |
|
357 #name: 'activeHelpKey' |
|
358 #layout: #(#LayoutFrame 100 0 179 0 -5 1.0 201 0) |
|
359 #activeHelpKey: #label |
|
360 #tabable: true |
|
361 #model: #activeHelpKey |
|
362 #group: #inputGroup |
|
363 #type: #symbolOrNil |
|
364 #immediateAccept: true |
|
365 #acceptOnReturn: false |
|
366 #acceptOnTab: false |
|
367 #acceptOnLostFocus: false |
|
368 #acceptChannel: #acceptChannel |
|
369 #modifiedChannel: #modifiedChannel |
|
370 #acceptOnPointerLeave: false |
|
371 ) |
|
372 ) |
|
373 |
|
374 ) |
|
375 ) |
|
376 ! |
|
377 |
|
378 canvasSpec |
|
379 "This resource specification was automatically generated |
|
380 by the UIPainter of ST/X." |
|
381 |
|
382 "Do not manually edit this!! If it is corrupted, |
|
383 the UIPainter may not be able to read the specification." |
|
384 |
|
385 " |
|
386 UIPainter new openOnClass:TabListEditor andSelector:#canvasSpec |
|
387 TabListEditor new openInterface:#canvasSpec |
|
388 " |
|
389 |
|
390 <resource: #canvas> |
|
391 |
|
392 ^ |
|
393 #(#FullSpec |
|
394 #name: #canvasSpec |
|
395 #window: |
|
396 #(#WindowSpec |
|
397 #label: 'Canvas' |
|
398 #name: 'Canvas' |
|
399 #min: #(#Point 10 10) |
|
400 #max: #(#Point 1280 1024) |
|
401 #bounds: #(#Rectangle 803 137 1186 357) |
|
402 ) |
|
403 #component: |
|
404 #(#SpecCollection |
|
405 #collection: #( |
|
406 #(#LabelSpec |
|
407 #label: 'Class Name:' |
|
408 #name: 'majorKeyLabel' |
|
409 #layout: #(#AlignmentOrigin 98 0 26 0 1 0.5) |
|
410 #resizeForLabel: true |
|
411 ) |
|
412 #(#InputFieldSpec |
|
413 #name: 'majorKeyField' |
|
414 #layout: #(#LayoutFrame 100 0 15 0 -5 1.0 37 0) |
|
415 #activeHelpKey: #majorKey |
|
416 #tabable: true |
|
417 #model: #majorKey |
|
418 #group: #inputGroup |
|
419 #type: #symbolOrNil |
|
420 #immediateAccept: true |
|
421 #acceptOnReturn: false |
|
422 #acceptOnTab: false |
|
423 #acceptOnLostFocus: false |
|
424 #modifiedChannel: #modifiedChannel |
|
425 #acceptOnPointerLeave: false |
|
426 ) |
|
427 #(#LabelSpec |
|
428 #label: 'Spec. Selector:' |
|
429 #name: 'minorKeyLabel' |
|
430 #layout: #(#AlignmentOrigin 98 0 55 0 1 0.5) |
|
431 #resizeForLabel: true |
|
432 ) |
|
433 #(#InputFieldSpec |
|
434 #name: 'minorKeyField' |
|
435 #layout: #(#LayoutFrame 100 0 44 0 -5 1.0 66 0) |
|
436 #activeHelpKey: #minorKey |
|
437 #tabable: true |
|
438 #model: #minorKey |
|
439 #group: #inputGroup |
|
440 #type: #symbolOrNil |
|
441 #immediateAccept: true |
|
442 #acceptOnReturn: false |
|
443 #acceptOnTab: false |
|
444 #acceptOnLostFocus: false |
|
445 #modifiedChannel: #modifiedChannel |
|
446 #acceptOnPointerLeave: false |
|
447 ) |
|
448 #(#FramedBoxSpec |
|
449 #label: 'Scroll Bars' |
|
450 #name: 'FramedBox' |
|
451 #layout: #(#LayoutFrame 0 0.0 119 0.0 0 1.0 214 0) |
|
452 #labelPosition: #topLeft |
|
453 #component: |
|
454 #(#SpecCollection |
|
455 #collection: #( |
|
456 #(#HorizontalPanelViewSpec |
|
457 #name: 'HorizontalPanel1' |
|
458 #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) |
|
459 #horizontalLayout: #fitSpace |
|
460 #verticalLayout: #fitSpace |
|
461 #horizontalSpace: 3 |
|
462 #verticalSpace: 3 |
|
463 #component: |
|
464 #(#SpecCollection |
|
465 #collection: #( |
|
466 #(#ViewSpec |
|
467 #name: 'Box1' |
|
468 #component: |
|
469 #(#SpecCollection |
|
470 #collection: #( |
|
471 #(#CheckBoxSpec |
|
472 #label: 'Vertical' |
|
473 #name: 'verticalScrollBarCheckBox' |
|
474 #layout: #(#LayoutFrame 0 0.0 3 0 0 1.0 27 0) |
|
475 #activeHelpKey: #verticalScroller |
|
476 #tabable: true |
|
477 #model: #hasVerticalScrollBar |
|
478 ) |
|
479 #(#CheckBoxSpec |
|
480 #label: 'Mini' |
|
481 #name: 'miniScrollerVerticalCheckBox' |
|
482 #layout: #(#LayoutFrame 0 0.0 32 0 0 1.0 56 0) |
|
483 #activeHelpKey: #verticalMiniScroller |
|
484 #tabable: true |
|
485 #model: #miniScrollerVertical |
|
486 ) |
|
487 ) |
|
488 |
|
489 ) |
|
490 #useDefaultExtent: true |
|
491 ) |
|
492 #(#ViewSpec |
|
493 #name: 'Box2' |
|
494 #component: |
|
495 #(#SpecCollection |
|
496 #collection: #( |
|
497 #(#CheckBoxSpec |
|
498 #label: 'Horizontal' |
|
499 #name: 'horizontalScrollBarCheckBox' |
|
500 #layout: #(#LayoutFrame 0 0.0 3 0 0 1.0 27 0) |
|
501 #activeHelpKey: #horizontalScroller |
|
502 #tabable: true |
|
503 #model: #hasHorizontalScrollBar |
|
504 ) |
|
505 #(#CheckBoxSpec |
|
506 #label: 'Mini' |
|
507 #name: 'miniScrollerHorizontalCheckBox' |
|
508 #layout: #(#LayoutFrame 0 0.0 32 0 0 1.0 56 0) |
|
509 #activeHelpKey: #horizontalMiniScroller |
|
510 #tabable: true |
|
511 #model: #miniScrollerHorizontal |
|
512 ) |
|
513 ) |
|
514 |
|
515 ) |
|
516 #extent: #(#Point 114 59) |
|
517 ) |
|
518 #(#ViewSpec |
|
519 #name: 'Box3' |
|
520 #component: |
|
521 #(#SpecCollection |
|
522 #collection: #( |
|
523 #(#LabelSpec |
|
524 #label: 'Auto Hide:' |
|
525 #name: 'Label1' |
|
526 #layout: #(#LayoutFrame 0 0.0 6 0 0 1.0 23 0) |
|
527 #translateLabel: true |
|
528 #resizeForLabel: true |
|
529 #adjust: #left |
|
530 ) |
|
531 #(#PopUpListSpec |
|
532 #label: 'Default' |
|
533 #name: 'PopUpList1' |
|
534 #layout: #(#LayoutFrame 0 0.0 32 0 0 1.0 54 0) |
|
535 #tabable: true |
|
536 #activeHelpKey: #autoHideScrollBars |
|
537 #model: #autoHideScrollBars |
|
538 #menu: |
|
539 #(#Default |
|
540 #On #Off |
|
541 ) |
|
542 #useIndex: true |
|
543 #showHandle: true |
|
544 ) |
|
545 ) |
|
546 |
|
547 ) |
|
548 #extent: #(#Point 114 59) |
|
549 ) |
|
550 ) |
|
551 |
|
552 ) |
|
553 ) |
|
554 ) |
|
555 |
|
556 ) |
|
557 ) |
318 #(#CheckBoxSpec |
558 #(#CheckBoxSpec |
319 #attributes: |
559 #label: 'Create New Builder' |
320 #(#tabable |
560 #name: 'createNewBuilder' |
321 true |
561 #layout: #(#Point 97 75) |
322 ) |
562 #model: #createNewBuilder |
|
563 #activeHelpKey: #createNewBuilder |
|
564 ) |
|
565 ) |
|
566 |
|
567 ) |
|
568 ) |
|
569 ! |
|
570 |
|
571 detailSpec |
|
572 "This resource specification was automatically generated |
|
573 by the UIPainter of ST/X." |
|
574 |
|
575 "Do not manually edit this!! If it is corrupted, |
|
576 the UIPainter may not be able to read the specification." |
|
577 |
|
578 " |
|
579 UIPainter new openOnClass:TabListEditor andSelector:#detailSpec |
|
580 TabListEditor new openInterface:#detailSpec |
|
581 " |
|
582 |
|
583 <resource: #canvas> |
|
584 |
|
585 ^ |
|
586 #(#FullSpec |
|
587 #name: #detailSpec |
|
588 #window: |
|
589 #(#WindowSpec |
|
590 #label: 'Details' |
|
591 #name: 'Details' |
|
592 #min: #(#Point 10 10) |
|
593 #max: #(#Point 1280 1024) |
|
594 #bounds: #(#Rectangle 12 22 370 129) |
|
595 ) |
|
596 #component: |
|
597 #(#SpecCollection |
|
598 #collection: #( |
|
599 #(#CheckBoxSpec |
323 #label: 'Can Select' |
600 #label: 'Can Select' |
324 #name: 'enabled' |
601 #name: 'enabled' |
325 #layout: #(#Point 96 161) |
602 #layout: #(#Point 46 14) |
326 #activeHelpKey: #canSelect |
603 #activeHelpKey: #canSelect |
327 #tabable: true |
604 #tabable: true |
328 #model: #enabled |
605 #model: #enabled |
329 ) |
606 ) |
330 #(#LabelSpec |
607 #(#LabelSpec |
331 #label: 'Color:' |
608 #label: 'Color:' |
332 #name: 'ForegroundLabel' |
609 #name: 'ForegroundLabel' |
333 #layout: #(#AlignmentOrigin 98 0 209 0 1 0.5) |
610 #layout: #(#AlignmentOrigin 46 0 62 0 1 0.5) |
334 #resizeForLabel: true |
611 #resizeForLabel: true |
335 #adjust: #right |
612 #adjust: #right |
336 ) |
613 ) |
337 #(#ColorMenuSpec |
614 #(#ColorMenuSpec |
338 #attributes: |
615 #attributes: |
339 #(#tabable |
616 #(#tabable |
340 true |
617 true |
341 ) |
618 ) |
342 #name: 'ForegroundColorMenu' |
619 #name: 'ForegroundColorMenu' |
343 #layout: #(#LayoutFrame 100 0 197 0 -5 1.0 219 0) |
620 #layout: #(#LayoutFrame 48 0 50 0 -10 1.0 72 0) |
344 #activeHelpKey: #color |
621 #activeHelpKey: #color |
345 #model: #labelForegroundColor |
622 #model: #labelForegroundColor |
346 #labelsAreColored: false |
623 #labelsAreColored: false |
347 ) |
624 ) |
348 ) |
625 ) |
389 #showSeparatingLines: true |
665 #showSeparatingLines: true |
390 ) |
666 ) |
391 #(#VariableHorizontalPanelSpec |
667 #(#VariableHorizontalPanelSpec |
392 #name: 'VariablePanel' |
668 #name: 'VariablePanel' |
393 #layout: #(#LayoutFrame 0 0.0 36 0.0 0 1.0 -26 1.0) |
669 #layout: #(#LayoutFrame 0 0.0 36 0.0 0 1.0 -26 1.0) |
394 #handles: #(#Any 0.259875 1.0) |
|
395 #component: |
670 #component: |
396 #(#SpecCollection |
671 #(#SpecCollection |
397 #collection: #( |
672 #collection: #( |
398 #(#SequenceViewSpec |
673 #(#SelectionInListModelViewSpec |
399 #name: 'ColumnView' |
674 #attributes: |
|
675 #(#vpext |
|
676 |
|
677 #(#Array |
|
678 #Point 0.264414 |
|
679 1.0 |
|
680 ) |
|
681 ) |
|
682 #name: 'ListOfLabels' |
|
683 #tabable: true |
400 #model: #selectionHolder |
684 #model: #selectionHolder |
401 #menu: #menuEdit |
685 #menu: #menuEdit |
402 #hasHorizontalScrollBar: true |
686 #hasHorizontalScrollBar: true |
403 #hasVerticalScrollBar: true |
687 #hasVerticalScrollBar: true |
404 #miniScrollerHorizontal: true |
688 #miniScrollerHorizontal: true |
405 #useIndex: true |
689 #listModel: #listOfTabs |
406 #sequenceList: #listOfLabels |
690 #highlightMode: #line |
|
691 #selectConditionSelector: #askForItemModification |
407 ) |
692 ) |
408 #(#ViewSpec |
693 #(#ViewSpec |
409 #name: 'SpecView' |
694 #name: 'SpecView' |
410 #level: -1 |
695 #level: -1 |
411 #component: |
696 #component: |
412 #(#SpecCollection |
697 #(#SpecCollection |
413 #collection: #( |
698 #collection: #( |
414 #(#ViewSpec |
699 #(#NoteBookViewSpec |
415 #name: 'TestView' |
700 #name: 'NoteBook' |
416 #layout: #(#LayoutFrame 1 0.0 0 0.0 0 1.0 0 1.0) |
|
417 #component: |
|
418 #(#SpecCollection |
|
419 #collection: #( |
|
420 #(#TabViewSpec |
|
421 #name: 'TestTabsView' |
|
422 #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 0.5) |
|
423 ) |
|
424 ) |
|
425 |
|
426 ) |
|
427 ) |
|
428 #(#SubCanvasSpec |
|
429 #name: 'specCanvas' |
|
430 #layout: #(#LayoutFrame 1 0.0 0 0.0 0 1.0 -30 1.0) |
701 #layout: #(#LayoutFrame 1 0.0 0 0.0 0 1.0 -30 1.0) |
431 #specHolder: #specChannel |
702 #model: #noteBookModel |
|
703 #menu: #noteBookTabList |
|
704 #useIndex: true |
|
705 #keepCanvasAlive: true |
432 ) |
706 ) |
433 #(#UISubSpecification |
707 #(#UISubSpecification |
434 #name: 'subSpec' |
708 #name: 'subSpec' |
435 #layout: #(#LayoutFrame 2 0.0 -26 1 -2 1.0 -2 1) |
709 #layout: #(#LayoutFrame 2 0.0 -26 1 -2 1.0 -2 1) |
436 #majorKey: #ToolApplicationModel |
710 #majorKey: #ToolApplicationModel |
437 #minorKey: #windowSpecForCommit |
711 #minorKey: #windowSpecForCommit |
|
712 ) |
|
713 #(#NoteBookViewSpec |
|
714 #name: 'TestNoteBook' |
|
715 #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) |
|
716 #visibilityChannel: #testMode |
|
717 #menu: #testItemList |
|
718 #useIndex: true |
438 ) |
719 ) |
439 ) |
720 ) |
440 |
721 |
441 ) |
722 ) |
442 ) |
723 ) |
443 ) |
724 ) |
444 |
725 |
445 ) |
726 ) |
|
727 #handles: #(#Any 0.24053 1.0) |
446 ) |
728 ) |
447 #(#UISubSpecification |
729 #(#UISubSpecification |
448 #name: 'infoBarSubSpec' |
730 #name: 'infoBarSubSpec' |
449 #layout: #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0) |
731 #layout: #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0) |
450 #majorKey: #ToolApplicationModel |
732 #majorKey: #ToolApplicationModel |
688 (Menu new fromLiteralArrayEncoding:(TabListEditor menuToolbar)) startUp |
1006 (Menu new fromLiteralArrayEncoding:(TabListEditor menuToolbar)) startUp |
689 " |
1007 " |
690 |
1008 |
691 <resource: #menu> |
1009 <resource: #menu> |
692 |
1010 |
693 ^ |
1011 ^ |
694 |
1012 #(#Menu |
695 #(#Menu |
1013 #( |
696 |
1014 #(#MenuItem |
697 #( |
1015 #label: 'New' |
698 #(#MenuItem |
1016 #isButton: true |
699 #label: 'New' |
1017 #value: #doNew |
700 #isButton: true |
1018 #activeHelpKey: #fileNew |
701 #value: #doNew |
1019 #labelImage: #(#ResourceRetriever #Icon #newIcon) |
702 #activeHelpKey: #fileNew |
1020 ) |
703 #labelImage: #(#ResourceRetriever #Icon #newIcon) |
1021 #(#MenuItem |
704 ) |
1022 #label: 'Load' |
705 #(#MenuItem |
1023 #isButton: true |
706 #label: 'Load' |
1024 #value: #doLoad |
707 #isButton: true |
1025 #activeHelpKey: #fileLoad |
708 #value: #doLoad |
1026 #labelImage: #(#ResourceRetriever #Icon #loadIcon) |
709 #activeHelpKey: #fileLoad |
1027 ) |
710 #labelImage: #(#ResourceRetriever #Icon #loadIcon) |
1028 #(#MenuItem |
711 ) |
1029 #label: 'Save' |
712 #(#MenuItem |
1030 #isButton: true |
713 #label: 'Save' |
1031 #value: #doSave |
714 #isButton: true |
1032 #activeHelpKey: #fileSave |
715 #value: #doSave |
1033 #labelImage: #(#ResourceRetriever #Icon #saveIcon) |
716 #activeHelpKey: #fileSave |
1034 ) |
717 #labelImage: #(#ResourceRetriever #Icon #saveIcon) |
1035 #(#MenuItem |
718 ) |
1036 #label: '' |
719 #(#MenuItem |
1037 ) |
720 #label: '' |
1038 #(#MenuItem |
721 ) |
1039 #label: 'Cut' |
722 #(#MenuItem |
1040 #isButton: true |
723 #label: 'Cut' |
1041 #value: #doCut |
724 #isButton: true |
1042 #activeHelpKey: #editCut |
725 #value: #doCut |
1043 #enabled: #valueOfCanCut |
726 #activeHelpKey: #editCut |
1044 #labelImage: #(#ResourceRetriever #Icon #cutIcon) |
727 #enabled: #valueOfCanCut |
1045 ) |
728 #labelImage: #(#ResourceRetriever #Icon #cutIcon) |
1046 #(#MenuItem |
729 ) |
1047 #label: 'Copy' |
730 #(#MenuItem |
1048 #isButton: true |
731 #label: 'Copy' |
1049 #value: #doCopy |
732 #isButton: true |
1050 #activeHelpKey: #editCopy |
733 #value: #doCopy |
1051 #enabled: #valueOfCanCopy |
734 #activeHelpKey: #editCopy |
1052 #labelImage: #(#ResourceRetriever #Icon #copyIcon) |
735 #enabled: #valueOfCanCopy |
1053 ) |
736 #labelImage: #(#ResourceRetriever #Icon #copyIcon) |
1054 #(#MenuItem |
737 ) |
1055 #label: 'Paste' |
738 #(#MenuItem |
1056 #isButton: true |
739 #label: 'Paste' |
1057 #value: #doPaste |
740 #isButton: true |
1058 #activeHelpKey: #editPaste |
741 #value: #doPaste |
1059 #enabled: #valueOfCanPaste |
742 #activeHelpKey: #editPaste |
1060 #labelImage: #(#ResourceRetriever #Icon #pasteIcon) |
743 #enabled: #valueOfCanPaste |
1061 ) |
744 #labelImage: #(#ResourceRetriever #Icon #pasteIcon) |
1062 #(#MenuItem |
745 ) |
1063 #label: 'Delete' |
746 #(#MenuItem |
1064 #isButton: true |
747 #label: 'Delete' |
1065 #value: #doDelete |
748 #isButton: true |
1066 #activeHelpKey: #editDelete |
749 #value: #doDelete |
1067 #enabled: #valueOfCanCut |
750 #activeHelpKey: #editDelete |
1068 #labelImage: #(#ResourceRetriever #Icon #deleteIcon) |
751 #enabled: #valueOfCanCut |
1069 ) |
752 #labelImage: #(#ResourceRetriever #Icon #deleteIcon) |
1070 #(#MenuItem |
753 ) |
1071 #label: '' |
754 #(#MenuItem |
1072 ) |
755 #label: '' |
1073 #(#MenuItem |
756 ) |
1074 #label: 'Add Tab Item' |
757 #(#MenuItem |
1075 #isButton: true |
758 #label: 'Add Tab Item' |
1076 #value: #doCreate |
759 #isButton: true |
1077 #activeHelpKey: #addTabItem |
760 #value: #doCreateTabItem |
1078 #labelImage: #(#ResourceRetriever nil #newTabItemIcon) |
761 #activeHelpKey: #addTabItem |
1079 ) |
762 #labelImage: #(#ResourceRetriever nil #newTabItemIcon) |
1080 #(#MenuItem |
763 ) |
1081 #label: '' |
764 #(#MenuItem |
1082 ) |
765 #label: '' |
1083 #(#MenuItem |
766 ) |
1084 #label: 'Move Tab Up' |
767 #(#MenuItem |
1085 #isButton: true |
768 #label: 'Move Tab Up' |
1086 #value: #doMoveTabUpOrDown: |
769 #isButton: true |
1087 #activeHelpKey: #editMoveUp |
770 #value: #doMoveTabUpOrDown: |
1088 #enabled: #canMoveTabItemUpOrDown |
771 #activeHelpKey: #editMoveUp |
1089 #argument: #up |
772 #enabled: #canMoveTabItemUpOrDown |
1090 #labelImage: #(#ResourceRetriever #Icon #upIcon) |
773 #argument: #up |
1091 ) |
774 #labelImage: #(#ResourceRetriever #Icon #upIcon) |
1092 #(#MenuItem |
775 ) |
1093 #label: 'Move Tab Down' |
776 #(#MenuItem |
1094 #isButton: true |
777 #label: 'Move Tab Down' |
1095 #value: #doMoveTabUpOrDown: |
778 #isButton: true |
1096 #activeHelpKey: #editMoveDown |
779 #value: #doMoveTabUpOrDown: |
1097 #enabled: #canMoveTabItemUpOrDown |
780 #activeHelpKey: #editMoveDown |
1098 #argument: #down |
781 #enabled: #canMoveTabItemUpOrDown |
1099 #labelImage: #(#ResourceRetriever #Icon #downIcon) |
782 #argument: #down |
1100 ) |
783 #labelImage: #(#ResourceRetriever #Icon #downIcon) |
1101 ) |
784 ) |
1102 nil |
785 #(#MenuItem |
1103 nil |
786 #label: '' |
|
787 ) |
|
788 #(#MenuItem |
|
789 #label: 'Preview' |
|
790 #activeHelpKey: #testPreview |
|
791 #enabled: #canShowTestMode |
|
792 #indication: #testMode |
|
793 ) |
|
794 ) nil |
|
795 nil |
|
796 ) |
1104 ) |
797 ! ! |
1105 ! ! |
798 |
1106 |
799 !TabListEditor methodsFor:'aspects'! |
1107 !TabListEditor methodsFor:'aspects'! |
800 |
1108 |
|
1109 autoHideScrollBars |
|
1110 |holder| |
|
1111 |
|
1112 (holder := builder bindingAt:#autoHideScrollBars) isNil ifTrue:[ |
|
1113 builder aspectAt:#autoHideScrollBars put:(holder := 1 asValue). |
|
1114 holder addDependent: self |
|
1115 ]. |
|
1116 ^ holder. |
|
1117 ! |
|
1118 |
801 canMoveTabItemUpOrDown |
1119 canMoveTabItemUpOrDown |
|
1120 ^ builder booleanValueAspectFor:#canMoveTabItemUpOrDown |
|
1121 ! |
|
1122 |
|
1123 hasHorizontalScrollBar |
|
1124 "automatically generated by UIPainter ..." |
|
1125 |
|
1126 "*** the code below creates a default model when invoked." |
|
1127 "*** (which may not be the one you wanted)" |
|
1128 "*** Please change as required and accept it in the browser." |
802 |
1129 |
803 |holder| |
1130 |holder| |
804 |
1131 |
805 (holder := builder bindingAt:#canMoveTabItemUpOrDown) isNil ifTrue:[ |
1132 (holder := builder bindingAt:#hasHorizontalScrollBar) isNil ifTrue:[ |
806 builder aspectAt:#canMoveTabItemUpOrDown put:(holder := false asValue). |
1133 holder := true asValue. |
807 ]. |
1134 builder aspectAt:#hasHorizontalScrollBar put:holder. |
808 ^ holder |
1135 "/ holder addDependent:self. |
809 |
1136 ]. |
810 ! |
1137 ^ holder. |
811 |
1138 ! |
812 canShowTestMode |
1139 |
|
1140 hasVerticalScrollBar |
|
1141 "automatically generated by UIPainter ..." |
|
1142 |
|
1143 "*** the code below creates a default model when invoked." |
|
1144 "*** (which may not be the one you wanted)" |
|
1145 "*** Please change as required and accept it in the browser." |
813 |
1146 |
814 |holder| |
1147 |holder| |
815 |
1148 |
816 (holder := builder bindingAt:#canShowTestMode) isNil ifTrue:[ |
1149 (holder := builder bindingAt:#hasVerticalScrollBar) isNil ifTrue:[ |
817 builder aspectAt:#canShowTestMode put:(holder := false asValue). |
1150 holder := true asValue. |
818 ]. |
1151 builder aspectAt:#hasVerticalScrollBar put:holder. |
819 ^ holder |
1152 "/ holder addDependent:self. |
820 |
1153 ]. |
|
1154 ^ holder. |
821 ! |
1155 ! |
822 |
1156 |
823 inputGroup |
1157 inputGroup |
824 |
1158 |
825 |holder| |
1159 |holder| |
830 ^ holder. |
1164 ^ holder. |
831 |
1165 |
832 |
1166 |
833 ! |
1167 ! |
834 |
1168 |
835 listOfLabels |
1169 listOfTabs |
836 "returns a holder which keeps the list of tab labels |
1170 ^ listOfTabs |
837 " |
1171 ! |
838 |
1172 |
839 ^ builder listAspectFor:#listOfLabels |
1173 majorKey |
|
1174 "automatically generated by UIPainter ..." |
|
1175 |
|
1176 "*** the code below creates a default model when invoked." |
|
1177 "*** (which may not be the one you wanted)" |
|
1178 "*** Please change as required and accept it in the browser." |
|
1179 |
|
1180 |holder| |
|
1181 |
|
1182 (holder := builder bindingAt:#majorKey) isNil ifTrue:[ |
|
1183 holder := ValueHolder new. |
|
1184 builder aspectAt:#majorKey put:holder. |
|
1185 "/ holder addDependent:self. |
|
1186 ]. |
|
1187 ^ holder. |
|
1188 ! |
|
1189 |
|
1190 miniScrollerHorizontal |
|
1191 "automatically generated by UIPainter ..." |
|
1192 |
|
1193 "*** the code below creates a default model when invoked." |
|
1194 "*** (which may not be the one you wanted)" |
|
1195 "*** Please change as required and accept it in the browser." |
|
1196 |
|
1197 |holder| |
|
1198 |
|
1199 (holder := builder bindingAt:#miniScrollerHorizontal) isNil ifTrue:[ |
|
1200 holder := true asValue. |
|
1201 builder aspectAt:#miniScrollerHorizontal put:holder. |
|
1202 "/ holder addDependent:self. |
|
1203 ]. |
|
1204 ^ holder. |
|
1205 ! |
|
1206 |
|
1207 miniScrollerVertical |
|
1208 "automatically generated by UIPainter ..." |
|
1209 |
|
1210 "*** the code below creates a default model when invoked." |
|
1211 "*** (which may not be the one you wanted)" |
|
1212 "*** Please change as required and accept it in the browser." |
|
1213 |
|
1214 |holder| |
|
1215 |
|
1216 (holder := builder bindingAt:#miniScrollerVertical) isNil ifTrue:[ |
|
1217 holder := true asValue. |
|
1218 builder aspectAt:#miniScrollerVertical put:holder. |
|
1219 "/ holder addDependent:self. |
|
1220 ]. |
|
1221 ^ holder. |
|
1222 ! |
|
1223 |
|
1224 minorKey |
|
1225 "automatically generated by UIPainter ..." |
|
1226 |
|
1227 "*** the code below creates a default model when invoked." |
|
1228 "*** (which may not be the one you wanted)" |
|
1229 "*** Please change as required and accept it in the browser." |
|
1230 |
|
1231 |holder| |
|
1232 |
|
1233 (holder := builder bindingAt:#minorKey) isNil ifTrue:[ |
|
1234 holder := ValueHolder new. |
|
1235 builder aspectAt:#minorKey put:holder. |
|
1236 "/ holder addDependent:self. |
|
1237 ]. |
|
1238 ^ holder. |
|
1239 ! |
|
1240 |
|
1241 noteBookModel |
|
1242 |holder| |
|
1243 |
|
1244 (holder := builder bindingAt:#noteBookModel) isNil ifTrue:[ |
|
1245 holder := 0 asValue. |
|
1246 builder aspectAt:#noteBookModel put:holder. |
|
1247 ]. |
|
1248 ^ holder. |
|
1249 ! |
|
1250 |
|
1251 noteBookTabList |
|
1252 "Generated by the TabListEditor" |
|
1253 |
|
1254 |list| |
|
1255 |
|
1256 (list := builder bindingAt:#noteBookTabList) isNil ifTrue:[ |
|
1257 builder aspectAt:#noteBookTabList put:(list := self class noteBookTabList). |
|
1258 ]. |
|
1259 ^ list |
840 ! |
1260 ! |
841 |
1261 |
842 selectionHolder |
1262 selectionHolder |
843 "holder which keeps the current selection |
1263 "holder which keeps the current selection |
844 " |
1264 " |
845 |holder| |
1265 |holder| |
846 |
1266 |
847 (holder := builder bindingAt:#selectionHolder) isNil ifTrue:[ |
1267 (holder := builder bindingAt:#selectionHolder) isNil ifTrue:[ |
848 holder := AspectAdaptor new subject:self; forAspect:#selectedIndex. |
1268 holder := 0 asValue. |
849 builder aspectAt:#selectionHolder put:holder. |
1269 builder aspectAt:#selectionHolder put:holder. |
|
1270 holder addDependent:self. |
850 ]. |
1271 ]. |
851 ^ holder |
1272 ^ holder |
852 ! |
1273 ! |
853 |
1274 |
854 specChannel |
1275 testItemList |
855 "holder which keeps the current tab specification |
|
856 " |
|
857 |holder| |
1276 |holder| |
858 |
1277 |
859 (holder := builder bindingAt:#specChannel) isNil ifTrue:[ |
1278 (holder := builder bindingAt:#testItemList) isNil ifTrue:[ |
860 builder aspectAt:#specChannel put:(holder := ValueHolder new). |
1279 holder := ValueHolder new. |
861 ]. |
1280 builder aspectAt:#testItemList put:holder. |
862 ^ holder |
1281 ]. |
|
1282 ^ holder. |
863 ! |
1283 ! |
864 |
1284 |
865 testMode |
1285 testMode |
866 |
1286 |
867 |holder| |
1287 |holder| |
877 !TabListEditor methodsFor:'building'! |
1297 !TabListEditor methodsFor:'building'! |
878 |
1298 |
879 buildFromClass:aClass andSelector:aSelector |
1299 buildFromClass:aClass andSelector:aSelector |
880 "build from class and selector |
1300 "build from class and selector |
881 " |
1301 " |
882 |cls spec list selectionHolder| |
1302 |cls spec| |
883 |
1303 |
884 self testMode value: false. |
1304 self testMode value: false. |
885 (selectionHolder := self selectionHolder) value:0. |
1305 self selection:0. |
886 |
1306 |
887 "if opened on a tab list" |
1307 "if opened on a tab list" |
888 (aClass isNil and: [aSelector isNil and: [listOfTabs size > 0]]) |
1308 (aClass isNil and: [aSelector isNil and: [listOfTabs size > 0]]) ifTrue:[ |
889 ifTrue:[ |
1309 listOfTabs notEmpty ifTrue:[self selection:1]. |
890 listOfTabs notEmpty ifTrue:[ |
1310 ^ nil |
891 selectionHolder value:1 |
1311 ]. |
892 ]. |
|
893 ^ nil |
|
894 ]. |
|
895 |
|
896 self listOfLabels removeAll. |
|
897 listOfTabs removeAll. |
1312 listOfTabs removeAll. |
898 |
|
899 testView notNil ifTrue:[ |
|
900 testView lower |
|
901 ]. |
|
902 |
|
903 rebuildMode := false. |
|
904 |
|
905 self canShowTestMode value: false. |
|
906 |
1313 |
907 cls := self resolveName:aClass. |
1314 cls := self resolveName:aClass. |
908 specSelector := aSelector. |
1315 specSelector := aSelector. |
909 |
1316 |
910 cls notNil ifTrue:[ |
1317 cls notNil ifTrue:[ |
911 specSelector notNil ifTrue:[ |
1318 specSelector notNil ifTrue:[ |
912 |
1319 |
913 (cls respondsTo:specSelector) ifTrue:[ |
1320 (cls respondsTo:specSelector) ifTrue:[ |
914 spec := cls perform:specSelector. |
1321 spec := cls perform:specSelector. |
915 list := self listOfLabels. |
|
916 |
1322 |
917 spec size ~~ 0 ifTrue:[ |
1323 spec size ~~ 0 ifTrue:[ |
918 |
|
919 rebuildMode := true. |
|
920 |
|
921 spec do:[:aTab| |
1324 spec do:[:aTab| |
922 list add:aTab label. |
|
923 listOfTabs add:aTab. |
1325 listOfTabs add:aTab. |
924 ]. |
1326 ]. |
925 rebuildMode := false. |
|
926 self addToHistory:(cls name, ' ', specSelector) -> #loadFromMessage: |
1327 self addToHistory:(cls name, ' ', specSelector) -> #loadFromMessage: |
927 ] |
1328 ] |
928 ] |
1329 ] |
929 ] |
1330 ] |
930 ]. |
1331 ]. |
931 |
1332 |
932 modified := false. |
1333 modified := false. |
933 |
1334 |
934 listOfTabs notEmpty ifTrue:[ |
1335 listOfTabs notEmpty ifTrue:[ |
935 self selectionHolder value:1 |
1336 self selection:1 |
936 ]. |
1337 ]. |
937 |
1338 |
938 self updateInfoLabel |
1339 self updateInfoLabel |
939 ! |
1340 ! |
940 |
1341 |
941 buildFromResourceSpec: aListSpec |
1342 buildFromResourceSpec:aListSpec |
942 |
1343 self buildFromTabList:aListSpec |
943 self buildFromTabList: aListSpec |
|
944 ! |
1344 ! |
945 |
1345 |
946 buildFromTabList: aTabList |
1346 buildFromTabList: aTabList |
947 "build from a aTabList" |
1347 "build from a aTabList" |
948 |
1348 |
949 |selectionHolder listOfLabels| |
1349 self selection:0. |
950 |
|
951 rebuildMode := true. |
|
952 |
|
953 (selectionHolder := self selectionHolder) value: nil. |
|
954 (listOfLabels := self listOfLabels) removeAll. |
|
955 listOfTabs removeAll. |
1350 listOfTabs removeAll. |
956 |
1351 |
957 aTabList do:[:aTabItem| |
1352 aTabList do:[:aTabItem| |
958 listOfTabs add: aTabItem. |
1353 listOfTabs add: aTabItem. |
959 listOfLabels add: aTabItem label |
1354 ]. |
960 ]. |
|
961 rebuildMode := false. |
|
962 |
|
963 modified := false. |
1355 modified := false. |
964 |
1356 |
965 listOfTabs notEmpty ifTrue:[ |
1357 listOfTabs notEmpty ifTrue:[ |
966 selectionHolder value:1 |
1358 self selection:1 |
967 ]. |
1359 ]. |
968 |
1360 |
969 self updateInfoLabel |
1361 self updateInfoLabel |
970 ! ! |
1362 ! ! |
971 |
1363 |
972 !TabListEditor methodsFor:'change & update'! |
1364 !TabListEditor methodsFor:'change & update'! |
973 |
1365 |
974 update:something with:aParameter from:someObject |
1366 update:something with:aParameter from:someObject |
975 "one of my aspects has changed; update modified channel |
1367 "one of my aspects has changed; update modified channel |
976 " |
1368 " |
977 super update:something with:aParameter from:someObject. |
1369 |list size index| |
978 |
1370 |
979 someObject = self testMode |
1371 someObject = self selectionHolder ifTrue:[ |
980 ifTrue:[ |
1372 ^ self selectionChanged |
981 someObject value |
1373 ]. |
982 ifTrue: [self doTest] |
1374 |
983 ifFalse:[testView lower. self selectionHolder value:1]. |
1375 someObject = self testMode ifFalse:[ |
984 |
1376 ^ super update:something with:aParameter from:someObject. |
985 self updateInfoLabel |
1377 ]. |
986 ] |
1378 |
|
1379 size := listOfTabs size. |
|
1380 |
|
1381 someObject value ifTrue:[ |
|
1382 index := 0. |
|
1383 |
|
1384 size ~~ 0 ifTrue:[ |
|
1385 list := listOfTabs collect:[:aTab| |tab| |
|
1386 tab := aTab copy. |
|
1387 tab setAttributesFromClass:specClass. |
|
1388 tab |
|
1389 ]. |
|
1390 ] |
|
1391 ] ifFalse:[ |
|
1392 index := 1 min:size |
|
1393 ]. |
|
1394 self selectionHolder value:index. |
|
1395 self testItemList value:list. |
|
1396 self updateInfoLabel. |
|
1397 |
987 ! ! |
1398 ! ! |
988 |
1399 |
989 !TabListEditor methodsFor:'help'! |
1400 !TabListEditor methodsFor:'queries'! |
990 |
1401 |
991 defaultInfoLabel |
1402 canToggleTestMode |
992 |
1403 "checks whether testMode button is enabled |
993 ^self testMode value |
1404 " |
994 ifTrue: ['Test mode'] |
1405 self testMode value ifTrue:[ |
995 ifFalse: [super defaultInfoLabel] |
1406 ^ true |
|
1407 ]. |
|
1408 |
|
1409 self valueOfEnablingCommitButtons value ifFalse:[ |
|
1410 ^ listOfTabs notEmpty |
|
1411 ]. |
|
1412 ^ false |
996 ! ! |
1413 ! ! |
997 |
1414 |
998 !TabListEditor methodsFor:'selection'! |
1415 !TabListEditor methodsFor:'selection'! |
999 |
1416 |
1000 selectedIndex |
1417 selectedElement |
1001 ^ selectedIndex |
1418 |idx tab| |
1002 ! |
1419 |
1003 |
1420 idx := self selection. |
1004 selectedIndex:anIndex |
1421 |
1005 |oldSel specChannel| |
1422 idx ~~ 0 ifTrue:[ |
1006 |
1423 (tab := listOfTabs at:idx ifAbsent:nil) notNil ifTrue:[ |
1007 self listOfLabels notEmpty ifTrue: [self canShowTestMode value: true]. |
1424 ^ tab |
1008 anIndex notNil ifTrue: [self testMode value: false]. |
1425 ]. |
1009 |
1426 self selection:0 |
1010 oldSel := selectedIndex. |
1427 ]. |
1011 selectedIndex := anIndex ? 0. |
1428 ^ nil |
1012 |
1429 ! |
1013 selectedIndex == oldSel ifTrue:[^ self]. |
1430 |
1014 |
1431 selection |
1015 specChannel := self specChannel. |
1432 ^ self selectionHolder value ? 0 |
1016 |
1433 ! |
1017 oldSel == 0 ifTrue:[ |
1434 |
1018 specChannel value:(self class tabSpec) |
1435 selection:anIndex |
|
1436 self selectionHolder value:(anIndex ? 0). |
|
1437 ! |
|
1438 |
|
1439 selectionChanged |
|
1440 |noteBookModel hasSelection| |
|
1441 |
|
1442 hasSelection := self selection ~~ 0. |
|
1443 noteBookModel := self noteBookModel. |
|
1444 |
|
1445 hasSelection ifTrue:[ |
|
1446 self testMode value:false. |
|
1447 noteBookModel value == 0 ifTrue:[noteBookModel value:1] |
1019 ] ifFalse:[ |
1448 ] ifFalse:[ |
1020 selectedIndex == 0 ifTrue:[ |
1449 noteBookModel value:0 |
1021 specChannel value:nil |
|
1022 ] |
|
1023 ]. |
1450 ]. |
1024 self cancel. |
1451 self cancel. |
1025 |
1452 self valueOfCanCut value:hasSelection. |
1026 testView notNil ifTrue:[ |
1453 self valueOfCanCopy value:hasSelection. |
1027 testView lower. |
|
1028 ]. |
|
1029 |
|
1030 self valueOfCanCut value: (anIndex ~~ 0). |
|
1031 self valueOfCanCopy value: (anIndex ~~ 0). |
|
1032 self valueOfCanPaste. |
1454 self valueOfCanPaste. |
1033 |
1455 ! |
|
1456 |
|
1457 setSelection:anIndex |
|
1458 self selectionHolder value:(anIndex ? 0) withoutNotifying:self |
1034 ! ! |
1459 ! ! |
1035 |
1460 |
1036 !TabListEditor methodsFor:'startup / release'! |
1461 !TabListEditor methodsFor:'startup / release'! |
1037 |
1462 |
1038 initialize |
1463 initialize |
1039 "setup aspects used by column description specifications |
1464 "setup aspects used by column description specifications |
1040 " |
1465 " |
1041 |
|
1042 super initialize. |
1466 super initialize. |
1043 |
1467 listOfTabs := List new. |
1044 listOfTabs := OrderedCollection new. |
|
1045 selectedIndex := 0. |
|
1046 rebuildMode := false. |
|
1047 ! |
1468 ! |
1048 |
1469 |
1049 openModalOnTabList: aTabList |
1470 openModalOnTabList: aTabList |
1050 "build a tab list from aTabList and open it modal" |
1471 "build a tab list from aTabList and open it modal" |
1051 |
1472 |
1052 super openModalOnResourceSpec: aTabList |
1473 super openModalOnResourceSpec: aTabList |
1053 |
1474 |
1054 ! |
|
1055 |
|
1056 postBuildWith:builder |
|
1057 |
|
1058 super postBuildWith:builder. |
|
1059 |
|
1060 testView := builder componentAt:#TestView. |
|
1061 (builder componentAt:#ColumnView) selectConditionBlock: [:i|self askForItemModification]. |
|
1062 ! ! |
1475 ! ! |
1063 |
1476 |
1064 !TabListEditor methodsFor:'user actions'! |
1477 !TabListEditor methodsFor:'user actions'! |
1065 |
1478 |
1066 accept |
1479 accept |
1067 "accept changes |
1480 "accept changes |
1068 " |
1481 " |
1069 |label| |
1482 |tab idx asb| |
1070 |
1483 |
1071 self acceptChannel |
1484 (tab := self selectedElement) notNil ifTrue:[ |
1072 value:true; value:false. "/ toggle to force inputFields to accept |
1485 super accept. |
1073 |
1486 aspects keysAndValuesDo:[:k :m| tab perform:(k , ':') asSymbol with:(m value) ]. |
1074 selectedIndex ~~ 0 ifTrue:[ |
1487 |
1075 rebuildMode := true. |
1488 asb := self autoHideScrollBars value. |
1076 label := listOfTabs at:selectedIndex. |
1489 asb := asb ~~ 1 ifTrue:[asb == 2] ifFalse:[nil]. |
1077 |
1490 tab autoHideScrollBars:asb. |
1078 aspects keysAndValuesDo:[:aKey :aModel| |
1491 ]. |
1079 label perform:(aKey , ':') asSymbol with:(aModel value). |
1492 self cancel. |
|
1493 ! |
|
1494 |
|
1495 addTab:aTab |
|
1496 |idx| |
|
1497 |
|
1498 aTab notNil ifTrue:[ |
|
1499 self testMode value: false. |
|
1500 |
|
1501 (idx := self selection) == 0 ifTrue:[ |
|
1502 listOfTabs add:aTab. |
|
1503 self selection:(listOfTabs size). |
|
1504 ] ifFalse:[ |
|
1505 listOfTabs add:aTab afterIndex:idx |
1080 ]. |
1506 ]. |
1081 self listOfLabels at:selectedIndex put:(label label). |
1507 modified := true. |
1082 |
1508 ]. |
1083 rebuildMode := false. |
|
1084 ]. |
|
1085 self cancel. |
|
1086 modified := true. |
|
1087 self valueOfEnablingCommitButtons value: false |
|
1088 ! |
1509 ! |
1089 |
1510 |
1090 cancel |
1511 cancel |
1091 "cancel all changes |
1512 "cancel all changes |
1092 " |
1513 " |
1093 |tab| |
1514 |tab idx asb| |
1094 |
1515 |
1095 selectedIndex ~~ 0 ifTrue:[ |
1516 ( (idx := self selection) ~~ 0 |
1096 tab := listOfTabs at:selectedIndex. |
1517 and:[(tab := self selectedElement) notNil] |
1097 |
1518 ) ifTrue:[ |
1098 rebuildMode := true. |
1519 aspects keysAndValuesDo:[:k :m| m value:(tab perform:k) ]. |
1099 |
1520 listOfTabs at:idx put:tab. |
1100 aspects keysAndValuesDo:[:aKey :aModel| |
1521 |
1101 aModel value:(tab perform:aKey) |
1522 asb := tab autoHideScrollBars. |
1102 ]. |
1523 asb notNil ifTrue:[asb := asb == true ifTrue:[2] ifFalse:[3]] |
1103 #( label editAgument ) do:[:aKey| |v| |
1524 ifFalse:[asb := 1]. |
1104 v := aspects at:aKey. |
1525 |
1105 v value isNil ifTrue:[v value:''] |
1526 self autoHideScrollBars value:asb. |
1106 ]. |
1527 ]. |
1107 |
1528 self canMoveTabItemUpOrDown value:(listOfTabs size > 1 and:[idx ~~ 0]). |
1108 rebuildMode := false. |
|
1109 ]. |
|
1110 self canMoveTabItemUpOrDown value:(selectedIndex ~~ 0 and:[listOfTabs size > 1]). |
|
1111 self valueOfEnablingCommitButtons value: false |
1529 self valueOfEnablingCommitButtons value: false |
1112 |
1530 |
1113 |
1531 |
1114 |
1532 |
1115 ! |
1533 ! |
1116 |
1534 |
1117 doCopy |
1535 doCopy |
1118 "copy selected tab |
1536 "copy selected tab |
1119 " |
1537 " |
1120 selectedIndex ~~ 0 ifTrue:[ |
1538 |tab| |
1121 self clipboard:(listOfTabs at:selectedIndex) deepCopy. |
1539 |
|
1540 (tab := self selectedElement) notNil ifTrue:[ |
|
1541 self clipboard:tab. |
1122 self updateAllToolInstances. |
1542 self updateAllToolInstances. |
1123 ] |
1543 ] |
1124 ! |
1544 ! |
1125 |
1545 |
1126 doCreateTabItem |
1546 doCreate |
1127 |
1547 self addTab:(TabItem label:'TAB'). |
1128 |tab selectionHolder| |
|
1129 |
|
1130 self testMode value: false. |
|
1131 tab := TabItem label:'Tab Item ', (listOfTabs size + 1) printString. |
|
1132 |
|
1133 listOfTabs add:tab afterIndex:selectedIndex. |
|
1134 self listOfLabels add:(tab label) afterIndex:selectedIndex. |
|
1135 |
|
1136 selectionHolder := self selectionHolder. |
|
1137 |
|
1138 selectedIndex == 0 ifTrue:[ |
|
1139 selectionHolder value:1 |
|
1140 ] ifFalse:[ |
|
1141 selectionHolder value:selectedIndex + 1. |
|
1142 self cancel. |
|
1143 ]. |
|
1144 |
|
1145 modified := true. |
|
1146 ! |
1548 ! |
1147 |
1549 |
1148 doCut |
1550 doCut |
1149 "cut selected tab |
1551 "cut the selected tab; put to pasteBuffer |
1150 " |
1552 " |
1151 |listOfLabels index selectionHolder| |
1553 |tab| |
1152 |
1554 |
1153 (index := selectedIndex) ~~ 0 ifTrue:[ |
1555 (tab := self selectedElement) notNil ifTrue:[ |
|
1556 self clipboard:tab. |
|
1557 self doDelete. |
|
1558 ]. |
|
1559 |
|
1560 ! |
|
1561 |
|
1562 doDelete |
|
1563 "delete selected tab |
|
1564 " |
|
1565 |index| |
|
1566 |
|
1567 (index := self selection) ~~ 0 ifTrue:[ |
1154 self testMode value: false. |
1568 self testMode value: false. |
1155 listOfLabels := self listOfLabels. |
1569 self setSelection:0. |
1156 self clipboard:(listOfTabs at:index) deepCopy. |
|
1157 (selectionHolder := self selectionHolder) value:0. |
|
1158 listOfTabs removeIndex:index. |
1570 listOfTabs removeIndex:index. |
1159 listOfLabels removeIndex:index. |
1571 index > listOfTabs size ifTrue:[index := index - 1]. |
1160 index > listOfLabels size ifTrue:[ |
1572 self selection:index. |
1161 index := index - 1 |
|
1162 ]. |
|
1163 selectionHolder value:index. |
|
1164 listOfLabels isEmpty ifTrue: [self canShowTestMode value: false]. |
|
1165 self updateAllToolInstances. |
1573 self updateAllToolInstances. |
1166 modified := true. |
1574 modified := true. |
1167 ]. |
|
1168 |
|
1169 ! |
|
1170 |
|
1171 doDelete |
|
1172 "delete selected tab |
|
1173 " |
|
1174 |listOfLabels index selectionHolder| |
|
1175 |
|
1176 (index := selectedIndex) ~~ 0 ifTrue:[ |
|
1177 self testMode value: false. |
|
1178 listOfLabels := self listOfLabels. |
|
1179 (selectionHolder := self selectionHolder) value:0. |
|
1180 listOfTabs removeIndex:index. |
|
1181 listOfLabels removeIndex:index. |
|
1182 index > listOfLabels size ifTrue:[index := index - 1]. |
|
1183 selectionHolder value:index. |
|
1184 listOfLabels isEmpty ifTrue: [self canShowTestMode value: false]. |
|
1185 modified := true. |
|
1186 ]. |
1575 ]. |
|
1576 |
1187 ! |
1577 ! |
1188 |
1578 |
1189 doGenerateAspectMethod |
1579 doGenerateAspectMethod |
1190 "generate aspect method |
1580 "generate aspect method |
1191 " |
1581 " |