TabListEditor.st
changeset 1145 8d3ca8f7bb71
parent 1066 5096f66ba82d
child 1183 ee9956e2689b
equal deleted inserted replaced
1144:480d64f9ad81 1145:8d3ca8f7bb71
   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 
   882     "one of my aspects has changed; update modified channel
   883     "one of my aspects has changed; update modified channel
   883     "
   884     "
   884     super update:something with:aParameter from:someObject.
   885     super update:something with:aParameter from:someObject.
   885 
   886 
   886     someObject = self testMode
   887     someObject = self testMode
   887     ifTrue:
   888     ifTrue:[              
   888     [              
       
   889         someObject value
   889         someObject value
   890             ifTrue: [self doTest]
   890             ifTrue: [self doTest]
   891             ifFalse:[testView lower. self selectionHolder value:1].
   891             ifFalse:[testView lower. self selectionHolder value:1].
   892 
   892 
   893         self updateInfoLabel
   893         self updateInfoLabel
   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:[
   942 !TabListEditor methodsFor:'startup / release'!
   944 !TabListEditor methodsFor:'startup / release'!
   943 
   945 
   944 initialize
   946 initialize
   945     "setup aspects used by column description specifications
   947     "setup aspects used by column description specifications
   946     "
   948     "
   947     |holder|
       
   948 
   949 
   949     super initialize.
   950     super initialize.
   950 
   951 
   951     listOfTabs    := OrderedCollection new.
   952     listOfTabs    := OrderedCollection new.
   952     selectedIndex := 0.
   953     selectedIndex := 0.
   953     rebuildMode   := false.
   954     rebuildMode   := false.
   954 
       
   955 
       
   956 !
   955 !
   957 
   956 
   958 openModalOnTabList: aTabList
   957 openModalOnTabList: aTabList
   959     "build a tab list from aTabList and open it modal"
   958     "build a tab list from aTabList and open it modal"
   960 
   959 
   975 accept
   974 accept
   976     "accept changes
   975     "accept changes
   977     "
   976     "
   978     |label|
   977     |label|
   979 
   978 
   980     self acceptChannel value:true.      "/ toggle to force inputFields to accept
   979     self acceptChannel 
   981     self acceptChannel value:false.    
   980 	value:true; value:false.      "/ toggle to force inputFields to accept
   982 
   981 
   983     selectedIndex ~~ 0 ifTrue:[
   982     selectedIndex ~~ 0 ifTrue:[
   984         rebuildMode := true.
   983         rebuildMode := true.
   985         label := listOfTabs at:selectedIndex.
   984         label := listOfTabs at:selectedIndex.
   986 
   985 
  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