TabListEditor.st
changeset 1374 635e878e5c09
parent 1373 623e692f53fc
child 1375 bab043fa81fa
equal deleted inserted replaced
1373:623e692f53fc 1374:635e878e5c09
   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: #(
   673                  #(#SelectionInListModelViewSpec
   673                  #(#SelectionInListModelViewSpec
   674                     #attributes: 
   674                     #attributes: 
   675                    #(#vpext
   675                    #(#vpext
   676                       
   676                       
   677                      #(#Array
   677                      #(#Array
       
   678                         #Array #Array
       
   679                         #Array #Array
   678                         #Point 0.264414
   680                         #Point 0.264414
   679                         1.0
   681                         1.0
   680                       )
   682                       )
   681                     )
   683                     )
   682                     #name: 'ListOfLabels'
   684                     #name: 'ListOfLabels'
   697                    #(#SpecCollection
   699                    #(#SpecCollection
   698                       #collection: #(
   700                       #collection: #(
   699                        #(#NoteBookViewSpec
   701                        #(#NoteBookViewSpec
   700                           #name: 'NoteBook'
   702                           #name: 'NoteBook'
   701                           #layout: #(#LayoutFrame 1 0.0 0 0.0 0 1.0 -30 1.0)
   703                           #layout: #(#LayoutFrame 1 0.0 0 0.0 0 1.0 -30 1.0)
       
   704                           #visibilityChannel: #hasSelectionHolder
       
   705                           #tabable: true
   702                           #model: #noteBookModel
   706                           #model: #noteBookModel
   703                           #menu: #noteBookTabList
   707                           #menu: #noteBookTabList
   704                           #useIndex: true
   708                           #useIndex: true
   705                           #keepCanvasAlive: true
   709                           #keepCanvasAlive: true
   706                         )
   710                         )
   712                         )
   716                         )
   713                        #(#NoteBookViewSpec
   717                        #(#NoteBookViewSpec
   714                           #name: 'TestNoteBook'
   718                           #name: 'TestNoteBook'
   715                           #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
   719                           #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
   716                           #visibilityChannel: #testMode
   720                           #visibilityChannel: #testMode
       
   721                           #tabable: true
   717                           #menu: #testItemList
   722                           #menu: #testItemList
   718                           #useIndex: true
   723                           #useIndex: true
   719                         )
   724                         )
   720                        )
   725                        )
   721                      
   726                      
   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
  1062          #(#MenuItem
  1082          #(#MenuItem
  1063             #label: 'Delete'
  1083             #label: 'Delete'
  1064             #isButton: true
  1084             #isButton: true
  1065             #value: #doDelete
  1085             #value: #doDelete
  1066             #activeHelpKey: #editDelete
  1086             #activeHelpKey: #editDelete
  1067             #enabled: #valueOfCanCut
  1087             #enabled: #hasSelectionHolder
  1068             #labelImage: #(#ResourceRetriever #Icon #deleteIcon)
  1088             #labelImage: #(#ResourceRetriever #Icon #deleteIcon)
  1069           )
  1089           )
  1070          #(#MenuItem
  1090          #(#MenuItem
  1071             #label: ''
  1091             #label: ''
  1072           )
  1092           )
  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)"
  1150         holder := true asValue.
  1174         holder := true asValue.
  1151         builder aspectAt:#hasVerticalScrollBar put:holder.
  1175         builder aspectAt:#hasVerticalScrollBar put:holder.
  1152 "/        holder addDependent:self.
  1176 "/        holder addDependent:self.
  1153     ].
  1177     ].
  1154     ^ holder.
  1178     ^ holder.
       
  1179 !
       
  1180 
       
  1181 hiddenAccelerator
       
  1182     "used to set menu entries with an accelerator not visible to the operator
       
  1183     "
       
  1184     ^ false
  1155 !
  1185 !
  1156 
  1186 
  1157 inputGroup
  1187 inputGroup
  1158 
  1188 
  1159     |holder|
  1189     |holder|
  1329             ]
  1359             ]
  1330         ]
  1360         ]
  1331     ].
  1361     ].
  1332 
  1362 
  1333     modified := false.
  1363     modified := false.
  1334 
  1364     listOfTabs notEmpty ifTrue:[ self selection:1 ].
  1335     listOfTabs notEmpty ifTrue:[
       
  1336         self selection:1
       
  1337     ].
       
  1338 
       
  1339     self updateInfoLabel
       
  1340 !
  1365 !
  1341 
  1366 
  1342 buildFromResourceSpec:aListSpec
  1367 buildFromResourceSpec:aListSpec
  1343     self buildFromTabList:aListSpec
  1368     self buildFromTabList:aListSpec
  1344 !
  1369 !
  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