650 #(#WindowSpec |
650 #(#WindowSpec |
651 #label: 'Tab List Editor' |
651 #label: 'Tab List Editor' |
652 #name: 'Tab List Editor' |
652 #name: 'Tab List Editor' |
653 #min: #(#Point 440 280) |
653 #min: #(#Point 440 280) |
654 #max: #(#Point 1152 900) |
654 #max: #(#Point 1152 900) |
655 #bounds: #(#Rectangle 17 449 488 816) |
655 #bounds: #(#Rectangle 12 22 548 391) |
656 #menu: #menu |
656 #menu: #menu |
657 ) |
657 ) |
658 #component: |
658 #component: |
659 #(#SpecCollection |
659 #(#SpecCollection |
660 #collection: #( |
660 #collection: #( |
939 (Menu new fromLiteralArrayEncoding:(TabListEditor menuEdit)) startUp |
944 (Menu new fromLiteralArrayEncoding:(TabListEditor menuEdit)) startUp |
940 " |
945 " |
941 |
946 |
942 <resource: #menu> |
947 <resource: #menu> |
943 |
948 |
944 ^ |
949 ^ |
945 |
950 #(#Menu |
946 #(#Menu |
951 #( |
947 |
952 #(#MenuItem |
948 #( |
953 #label: 'Cut' |
949 #(#MenuItem |
954 #value: #doCut |
950 #label: 'Cut' |
955 #activeHelpKey: #editCut |
951 #value: #doCut |
956 #enabled: #hasSelectionHolder |
952 #activeHelpKey: #editCut |
957 #shortcutKeyCharacter: #Cut |
953 #enabled: #valueOfCanCut |
958 ) |
954 ) |
959 #(#MenuItem |
955 #(#MenuItem |
960 #label: 'Copy' |
956 #label: 'Copy' |
961 #value: #doCopy |
957 #value: #doCopy |
962 #activeHelpKey: #editCopy |
958 #activeHelpKey: #editCopy |
963 #enabled: #hasSelectionHolder |
959 #enabled: #valueOfCanCopy |
964 #shortcutKeyCharacter: #Copy |
960 ) |
965 ) |
961 #(#MenuItem |
966 #(#MenuItem |
962 #label: 'Paste' |
967 #label: 'Paste' |
963 #value: #doPaste |
968 #value: #doPaste |
964 #activeHelpKey: #editPaste |
969 #activeHelpKey: #editPaste |
965 #enabled: #valueOfCanPaste |
970 #enabled: #valueOfCanPaste |
966 ) |
971 #shortcutKeyCharacter: #Paste |
967 #(#MenuItem |
972 ) |
968 #label: 'Delete' |
973 #(#MenuItem |
969 #value: #doDelete |
974 #label: 'Delete' |
970 #activeHelpKey: #editPaste |
975 #value: #doDelete |
971 #enabled: #valueOfCanCut |
976 #activeHelpKey: #editPaste |
972 ) |
977 #enabled: #hasSelectionHolder |
973 #(#MenuItem |
978 #shortcutKeyCharacter: #Delete |
974 #label: '-' |
979 ) |
975 ) |
980 #(#MenuItem |
976 #(#MenuItem |
981 #label: '-' |
977 #label: 'Move Up' |
982 ) |
978 #value: #doMoveTabUpOrDown: |
983 #(#MenuItem |
979 #activeHelpKey: #editMoveUp |
984 #label: 'Move Up' |
980 #enabled: #canMoveTabItemUpOrDown |
985 #value: #doMoveTabUpOrDown: |
981 #argument: #up |
986 #activeHelpKey: #editMoveUp |
982 #labelImage: #(#ResourceRetriever #Icon #upIcon 'Move Up') |
987 #enabled: #canMoveTabItemUpOrDown |
983 ) |
988 #argument: #up |
984 #(#MenuItem |
989 #labelImage: #(#ResourceRetriever #Icon #upIcon 'Move Up') |
985 #label: 'Move Down' |
990 ) |
986 #value: #doMoveTabUpOrDown: |
991 #(#MenuItem |
987 #activeHelpKey: #editMoveDown |
992 #label: 'Move Down' |
988 #enabled: #canMoveTabItemUpOrDown |
993 #value: #doMoveTabUpOrDown: |
989 #argument: #down |
994 #activeHelpKey: #editMoveDown |
990 #labelImage: #(#ResourceRetriever #Icon #downIcon 'Move Down') |
995 #enabled: #canMoveTabItemUpOrDown |
991 ) |
996 #argument: #down |
992 ) nil |
997 #labelImage: #(#ResourceRetriever #Icon #downIcon 'Move Down') |
993 nil |
998 ) |
|
999 #(#MenuItem |
|
1000 #label: '-' |
|
1001 #isVisible: #hiddenAccelerator |
|
1002 ) |
|
1003 #(#MenuItem |
|
1004 #label: 'Accept' |
|
1005 #translateLabel: true |
|
1006 #isVisible: #hiddenAccelerator |
|
1007 #value: #accept |
|
1008 #enabled: #valueOfEnablingCommitButtons |
|
1009 #shortcutKeyCharacter: #Accept |
|
1010 ) |
|
1011 ) |
|
1012 nil |
|
1013 nil |
994 ) |
1014 ) |
995 ! |
1015 ! |
996 |
1016 |
997 menuToolbar |
1017 menuToolbar |
998 "This resource specification was automatically generated |
1018 "This resource specification was automatically generated |
1038 #(#MenuItem |
1058 #(#MenuItem |
1039 #label: 'Cut' |
1059 #label: 'Cut' |
1040 #isButton: true |
1060 #isButton: true |
1041 #value: #doCut |
1061 #value: #doCut |
1042 #activeHelpKey: #editCut |
1062 #activeHelpKey: #editCut |
1043 #enabled: #valueOfCanCut |
1063 #enabled: #hasSelectionHolder |
1044 #labelImage: #(#ResourceRetriever #Icon #cutIcon) |
1064 #labelImage: #(#ResourceRetriever #Icon #cutIcon) |
1045 ) |
1065 ) |
1046 #(#MenuItem |
1066 #(#MenuItem |
1047 #label: 'Copy' |
1067 #label: 'Copy' |
1048 #isButton: true |
1068 #isButton: true |
1049 #value: #doCopy |
1069 #value: #doCopy |
1050 #activeHelpKey: #editCopy |
1070 #activeHelpKey: #editCopy |
1051 #enabled: #valueOfCanCopy |
1071 #enabled: #hasSelectionHolder |
1052 #labelImage: #(#ResourceRetriever #Icon #copyIcon) |
1072 #labelImage: #(#ResourceRetriever #Icon #copyIcon) |
1053 ) |
1073 ) |
1054 #(#MenuItem |
1074 #(#MenuItem |
1055 #label: 'Paste' |
1075 #label: 'Paste' |
1056 #isButton: true |
1076 #isButton: true |
1135 "/ holder addDependent:self. |
1155 "/ holder addDependent:self. |
1136 ]. |
1156 ]. |
1137 ^ holder. |
1157 ^ holder. |
1138 ! |
1158 ! |
1139 |
1159 |
|
1160 hasSelectionHolder |
|
1161 ^ builder booleanValueAspectFor:#hasSelectionHolder |
|
1162 ! |
|
1163 |
1140 hasVerticalScrollBar |
1164 hasVerticalScrollBar |
1141 "automatically generated by UIPainter ..." |
1165 "automatically generated by UIPainter ..." |
1142 |
1166 |
1143 "*** the code below creates a default model when invoked." |
1167 "*** the code below creates a default model when invoked." |
1144 "*** (which may not be the one you wanted)" |
1168 "*** (which may not be the one you wanted)" |
1347 "build from a aTabList" |
1372 "build from a aTabList" |
1348 |
1373 |
1349 self selection:0. |
1374 self selection:0. |
1350 listOfTabs removeAll. |
1375 listOfTabs removeAll. |
1351 |
1376 |
1352 aTabList do:[:aTabItem| |
1377 aTabList do:[:aTabItem| listOfTabs add: aTabItem ]. |
1353 listOfTabs add: aTabItem. |
|
1354 ]. |
|
1355 modified := false. |
1378 modified := false. |
1356 |
1379 listOfTabs notEmpty ifTrue:[ self selection:1 ]. |
1357 listOfTabs notEmpty ifTrue:[ |
1380 |
1358 self selection:1 |
|
1359 ]. |
|
1360 |
|
1361 self updateInfoLabel |
|
1362 ! ! |
1381 ! ! |
1363 |
1382 |
1364 !TabListEditor methodsFor:'change & update'! |
1383 !TabListEditor methodsFor:'change & update'! |
1365 |
1384 |
1366 update:something with:aParameter from:someObject |
1385 update:something with:aParameter from:someObject |
1367 "one of my aspects has changed; update modified channel |
1386 "one of my aspects has changed; update modified channel |
1368 " |
1387 " |
1369 |list size index| |
1388 |list| |
1370 |
1389 |
1371 someObject = self selectionHolder ifTrue:[ |
1390 someObject = self selectionHolder ifTrue:[ |
1372 ^ self selectionChanged |
1391 ^ self selectionChanged |
1373 ]. |
1392 ]. |
1374 |
1393 |
1375 someObject = self testMode ifFalse:[ |
1394 someObject = self testMode ifFalse:[ |
1376 ^ super update:something with:aParameter from:someObject. |
1395 ^ super update:something with:aParameter from:someObject. |
1377 ]. |
1396 ]. |
1378 |
1397 |
1379 size := listOfTabs size. |
|
1380 |
|
1381 someObject value ifTrue:[ |
1398 someObject value ifTrue:[ |
1382 index := 0. |
1399 listOfTabs notEmpty ifTrue:[ |
1383 |
|
1384 size ~~ 0 ifTrue:[ |
|
1385 list := listOfTabs collect:[:aTab| |tab| |
1400 list := listOfTabs collect:[:aTab| |tab| |
1386 tab := aTab copy. |
1401 tab := aTab copy. |
1387 tab setAttributesFromClass:specClass. |
1402 tab setAttributesFromClass:specClass. |
1388 tab |
1403 tab |
1389 ]. |
1404 ] |
1390 ] |
1405 ]. |
1391 ] ifFalse:[ |
1406 self selection:0. |
1392 index := 1 min:size |
1407 ]. |
1393 ]. |
|
1394 self selectionHolder value:index. |
|
1395 self testItemList value:list. |
1408 self testItemList value:list. |
1396 self updateInfoLabel. |
1409 self updateInfoLabel. |
1397 |
1410 |
1398 ! ! |
1411 ! ! |
1399 |
1412 |
1447 noteBookModel value == 0 ifTrue:[noteBookModel value:1] |
1460 noteBookModel value == 0 ifTrue:[noteBookModel value:1] |
1448 ] ifFalse:[ |
1461 ] ifFalse:[ |
1449 noteBookModel value:0 |
1462 noteBookModel value:0 |
1450 ]. |
1463 ]. |
1451 self cancel. |
1464 self cancel. |
1452 self valueOfCanCut value:hasSelection. |
1465 self hasSelectionHolder value:hasSelection. |
1453 self valueOfCanCopy value:hasSelection. |
|
1454 self valueOfCanPaste. |
1466 self valueOfCanPaste. |
1455 ! |
1467 ! |
1456 |
1468 |
1457 setSelection:anIndex |
1469 setSelection:anIndex |
1458 self selectionHolder value:(anIndex ? 0) withoutNotifying:self |
1470 |index| |
|
1471 |
|
1472 index := anIndex ? 0. |
|
1473 self selectionHolder value:index withoutNotifying:self |
1459 ! ! |
1474 ! ! |
1460 |
1475 |
1461 !TabListEditor methodsFor:'startup / release'! |
1476 !TabListEditor methodsFor:'startup / release'! |
1462 |
1477 |
1463 initialize |
1478 initialize |
1560 ! |
1575 ! |
1561 |
1576 |
1562 doDelete |
1577 doDelete |
1563 "delete selected tab |
1578 "delete selected tab |
1564 " |
1579 " |
1565 |index| |
1580 |index size| |
1566 |
1581 |
1567 (index := self selection) ~~ 0 ifTrue:[ |
1582 (index := self selection) ~~ 0 ifTrue:[ |
1568 self testMode value: false. |
1583 self testMode value: false. |
1569 self setSelection:0. |
1584 |
|
1585 (size := listOfTabs size) == 1 ifTrue:[ |
|
1586 self selection:0 |
|
1587 ] ifFalse:[ |
|
1588 self setSelection:0 |
|
1589 ]. |
1570 listOfTabs removeIndex:index. |
1590 listOfTabs removeIndex:index. |
1571 index > listOfTabs size ifTrue:[index := index - 1]. |
1591 index < size ifFalse:[ |
|
1592 index := index - 1 |
|
1593 ]. |
1572 self selection:index. |
1594 self selection:index. |
1573 self updateAllToolInstances. |
1595 self updateAllToolInstances. |
1574 modified := true. |
1596 modified := true. |
1575 ]. |
1597 ]. |
1576 |
1598 |