785 !TabListEditor methodsFor:'building'! |
785 !TabListEditor methodsFor:'building'! |
786 |
786 |
787 buildFromClass:aClass andSelector:aSelector |
787 buildFromClass:aClass andSelector:aSelector |
788 "build from class and selector |
788 "build from class and selector |
789 " |
789 " |
790 |cls spec list| |
790 |cls spec list selectionHolder| |
791 |
791 |
792 self testMode value: false. |
792 self testMode value: false. |
793 self selectionHolder value:0. |
793 (selectionHolder := self selectionHolder) value:0. |
794 |
794 |
795 "if opened on a tab list" |
795 "if opened on a tab list" |
796 (aClass isNil and: [aSelector isNil and: [listOfTabs size > 0]]) |
796 (aClass isNil and: [aSelector isNil and: [listOfTabs size > 0]]) |
797 ifTrue: |
797 ifTrue:[ |
798 [ |
|
799 listOfTabs notEmpty ifTrue:[ |
798 listOfTabs notEmpty ifTrue:[ |
800 self selectionHolder value:1 |
799 selectionHolder value:1 |
801 ]. |
800 ]. |
802 ^nil |
801 ^ nil |
803 ]. |
802 ]. |
804 |
803 |
805 self listOfLabels removeAll. |
804 self listOfLabels removeAll. |
806 listOfTabs removeAll. |
805 listOfTabs removeAll. |
807 |
806 |
853 ! |
852 ! |
854 |
853 |
855 buildFromTabList: aTabList |
854 buildFromTabList: aTabList |
856 "build from a aTabList" |
855 "build from a aTabList" |
857 |
856 |
|
857 |selectionHolder listOfLabels| |
|
858 |
858 rebuildMode := true. |
859 rebuildMode := true. |
859 |
860 |
860 self selectionHolder value: nil. |
861 (selectionHolder := self selectionHolder) value: nil. |
861 self listOfLabels removeAll. |
862 (listOfLabels := self listOfLabels) removeAll. |
862 listOfTabs removeAll. |
863 listOfTabs removeAll. |
863 |
864 |
864 aTabList do:[:aTabItem| |
865 aTabList do:[:aTabItem| |
865 listOfTabs add: aTabItem. |
866 listOfTabs add: aTabItem. |
866 self listOfLabels add: aTabItem label |
867 listOfLabels add: aTabItem label |
867 ]. |
868 ]. |
868 rebuildMode := false. |
869 rebuildMode := false. |
869 |
870 |
870 modified := false. |
871 modified := false. |
871 |
872 |
872 listOfTabs notEmpty ifTrue:[ |
873 listOfTabs notEmpty ifTrue:[ |
873 self selectionHolder value:1 |
874 selectionHolder value:1 |
874 ]. |
875 ]. |
875 |
876 |
876 self updateInfoLabel |
877 self updateInfoLabel |
877 ! ! |
878 ! ! |
878 |
879 |
908 selectedIndex |
908 selectedIndex |
909 ^ selectedIndex |
909 ^ selectedIndex |
910 ! |
910 ! |
911 |
911 |
912 selectedIndex:anIndex |
912 selectedIndex:anIndex |
913 |s oldSel| |
913 |oldSel specChannel| |
914 |
914 |
915 self listOfLabels notEmpty ifTrue: [self canShowTestMode value: true]. |
915 self listOfLabels notEmpty ifTrue: [self canShowTestMode value: true]. |
916 anIndex notNil ifTrue: [self testMode value: false]. |
916 anIndex notNil ifTrue: [self testMode value: false]. |
917 |
917 |
918 oldSel := selectedIndex. |
918 oldSel := selectedIndex. |
919 selectedIndex := anIndex ? 0. |
919 selectedIndex := anIndex ? 0. |
920 |
920 |
921 selectedIndex == oldSel ifTrue:[^ self]. |
921 selectedIndex == oldSel ifTrue:[^ self]. |
922 |
922 |
|
923 specChannel := self specChannel. |
|
924 |
923 oldSel == 0 ifTrue:[ |
925 oldSel == 0 ifTrue:[ |
924 self specChannel value:(self class tabSpec) |
926 specChannel value:(self class tabSpec) |
925 ] ifFalse:[ |
927 ] ifFalse:[ |
926 selectedIndex == 0 ifTrue:[ |
928 selectedIndex == 0 ifTrue:[ |
927 self specChannel value:nil |
929 specChannel value:nil |
928 ] |
930 ] |
929 ]. |
931 ]. |
930 self cancel. |
932 self cancel. |
931 |
933 |
932 testView notNil ifTrue:[ |
934 testView notNil ifTrue:[ |
1028 ] |
1027 ] |
1029 ! |
1028 ! |
1030 |
1029 |
1031 doCreateTabItem |
1030 doCreateTabItem |
1032 |
1031 |
1033 |tab| |
1032 |tab selectionHolder| |
|
1033 |
1034 self testMode value: false. |
1034 self testMode value: false. |
1035 tab := TabItem label:'Tab Item ', (listOfTabs size + 1) printString. |
1035 tab := TabItem label:'Tab Item ', (listOfTabs size + 1) printString. |
1036 |
1036 |
1037 listOfTabs add:tab afterIndex:selectedIndex. |
1037 listOfTabs add:tab afterIndex:selectedIndex. |
1038 self listOfLabels add:(tab label) afterIndex:selectedIndex. |
1038 self listOfLabels add:(tab label) afterIndex:selectedIndex. |
1039 |
1039 |
|
1040 selectionHolder := self selectionHolder. |
|
1041 |
1040 selectedIndex == 0 ifTrue:[ |
1042 selectedIndex == 0 ifTrue:[ |
1041 self selectionHolder value:1 |
1043 selectionHolder value:1 |
1042 ] ifFalse:[ |
1044 ] ifFalse:[ |
1043 self selectionHolder value:selectedIndex + 1. |
1045 selectionHolder value:selectedIndex + 1. |
1044 self cancel. |
1046 self cancel. |
1045 ]. |
1047 ]. |
1046 |
1048 |
1047 modified := true. |
1049 modified := true. |
1048 ! |
1050 ! |
1049 |
1051 |
1050 doCut |
1052 doCut |
1051 "cut selected tab |
1053 "cut selected tab |
1052 " |
1054 " |
1053 |list index| |
1055 |listOfLabels index selectionHolder| |
1054 |
1056 |
1055 (index := selectedIndex) ~~ 0 ifTrue:[ |
1057 (index := selectedIndex) ~~ 0 ifTrue:[ |
1056 self testMode value: false. |
1058 self testMode value: false. |
1057 list := self listOfLabels. |
1059 listOfLabels := self listOfLabels. |
1058 self clipboard:(listOfTabs at:index) deepCopy. |
1060 self clipboard:(listOfTabs at:index) deepCopy. |
1059 self selectionHolder value:0. |
1061 (selectionHolder := self selectionHolder) value:0. |
1060 listOfTabs removeIndex:index. |
1062 listOfTabs removeIndex:index. |
1061 list removeIndex:index. |
1063 listOfLabels removeIndex:index. |
1062 index > list size ifTrue:[ |
1064 index > listOfLabels size ifTrue:[ |
1063 index := index - 1 |
1065 index := index - 1 |
1064 ]. |
1066 ]. |
1065 self selectionHolder value:index. |
1067 selectionHolder value:index. |
1066 self listOfLabels isEmpty ifTrue: [self canShowTestMode value: false]. |
1068 listOfLabels isEmpty ifTrue: [self canShowTestMode value: false]. |
1067 self updateAllToolInstances. |
1069 self updateAllToolInstances. |
1068 modified := true. |
1070 modified := true. |
1069 ]. |
1071 ]. |
1070 |
1072 |
1071 ! |
1073 ! |
1072 |
1074 |
1073 doDelete |
1075 doDelete |
1074 "delete selected tab |
1076 "delete selected tab |
1075 " |
1077 " |
1076 |list index| |
1078 |listOfLabels index selectionHolder| |
1077 |
1079 |
1078 (index := selectedIndex) ~~ 0 ifTrue:[ |
1080 (index := selectedIndex) ~~ 0 ifTrue:[ |
1079 self testMode value: false. |
1081 self testMode value: false. |
1080 list := self listOfLabels. |
1082 listOfLabels := self listOfLabels. |
1081 self selectionHolder value:0. |
1083 (selectionHolder := self selectionHolder) value:0. |
1082 listOfTabs removeIndex:index. |
1084 listOfTabs removeIndex:index. |
1083 list removeIndex:index. |
1085 listOfLabels removeIndex:index. |
1084 index > list size ifTrue:[index := index - 1]. |
1086 index > listOfLabels size ifTrue:[index := index - 1]. |
1085 self selectionHolder value:index. |
1087 selectionHolder value:index. |
1086 self listOfLabels isEmpty ifTrue: [self canShowTestMode value: false]. |
1088 listOfLabels isEmpty ifTrue: [self canShowTestMode value: false]. |
1087 modified := true. |
1089 modified := true. |
1088 ]. |
1090 ]. |
1089 ! |
1091 ! |
1090 |
1092 |
1091 doGenerateAspectMethod |
1093 doGenerateAspectMethod |
1132 ! |
1134 ! |
1133 |
1135 |
1134 doMoveTabUpOrDown:what |
1136 doMoveTabUpOrDown:what |
1135 "step up or down |
1137 "step up or down |
1136 " |
1138 " |
1137 |tab list index| |
1139 |tab listOfLabels index nLabels| |
1138 |
1140 |
1139 (selectedIndex ~~ 0 and:[listOfTabs size > 1]) ifFalse:[ |
1141 (selectedIndex ~~ 0 and:[listOfTabs size > 1]) ifFalse:[ |
1140 ^ self |
1142 ^ self |
1141 ]. |
1143 ]. |
1142 |
1144 |
1143 list := self listOfLabels. |
1145 listOfLabels := self listOfLabels. |
1144 tab := listOfTabs at:selectedIndex. |
1146 tab := listOfTabs at:selectedIndex. |
1145 |
1147 |
1146 list removeIndex:selectedIndex. |
1148 listOfLabels removeIndex:selectedIndex. |
1147 listOfTabs removeIndex:selectedIndex. |
1149 listOfTabs removeIndex:selectedIndex. |
1148 |
1150 |
|
1151 nLabels := listOfLabels size. |
|
1152 |
1149 what == #down ifTrue:[ |
1153 what == #down ifTrue:[ |
1150 index := selectedIndex > list size ifTrue:[1] |
1154 index := selectedIndex > nLabels ifTrue:[1] |
1151 ifFalse:[selectedIndex + 1] |
1155 ifFalse:[selectedIndex + 1] |
1152 ] ifFalse:[ |
1156 ] ifFalse:[ |
1153 index := selectedIndex == 1 ifTrue:[list size + 1] |
1157 index := selectedIndex == 1 ifTrue:[nLabels + 1] |
1154 ifFalse:[selectedIndex - 1] |
1158 ifFalse:[selectedIndex - 1] |
1155 ]. |
1159 ]. |
1156 |
1160 |
1157 list add:(tab label) beforeIndex:index. |
1161 listOfLabels add:(tab label) beforeIndex:index. |
1158 listOfTabs add:tab beforeIndex:index. |
1162 listOfTabs add:tab beforeIndex:index. |
1159 |
1163 |
1160 rebuildMode := true. |
1164 rebuildMode := true. |
1161 self selectionHolder value:index. |
1165 self selectionHolder value:index. |
1162 rebuildMode := false. |
1166 rebuildMode := false. |
1166 ! |
1170 ! |
1167 |
1171 |
1168 doPaste |
1172 doPaste |
1169 "paste a tab |
1173 "paste a tab |
1170 " |
1174 " |
1171 |tab| |
1175 |tab selectionHolder| |
1172 |
1176 |
1173 self testMode value: false. |
1177 self testMode value: false. |
1174 (tab := self class clipboard deepCopy) isNil ifTrue: [^nil]. |
1178 (tab := self class clipboard deepCopy) isNil ifTrue: [^nil]. |
1175 listOfTabs add:tab afterIndex:selectedIndex. |
1179 listOfTabs add:tab afterIndex:selectedIndex. |
1176 self listOfLabels add:(tab label) afterIndex:selectedIndex. |
1180 self listOfLabels add:(tab label) afterIndex:selectedIndex. |
1177 |
1181 |
|
1182 selectionHolder := self selectionHolder. |
|
1183 |
1178 selectedIndex == 0 ifTrue:[ |
1184 selectedIndex == 0 ifTrue:[ |
1179 self selectionHolder value:1 |
1185 selectionHolder value:1 |
1180 ] ifFalse:[ |
1186 ] ifFalse:[ |
1181 self selectionHolder value:selectedIndex + 1. |
1187 selectionHolder value:selectedIndex + 1. |
1182 self cancel. |
1188 self cancel. |
1183 ]. |
1189 ]. |
1184 |
1190 |
1185 modified := true. |
1191 modified := true. |
1186 |
1192 |