diff -r 623e692f53fc -r 635e878e5c09 TabListEditor.st --- a/TabListEditor.st Thu Apr 13 14:32:20 2000 +0200 +++ b/TabListEditor.st Thu Apr 13 18:12:48 2000 +0200 @@ -652,7 +652,7 @@ #name: 'Tab List Editor' #min: #(#Point 440 280) #max: #(#Point 1152 900) - #bounds: #(#Rectangle 17 449 488 816) + #bounds: #(#Rectangle 12 22 548 391) #menu: #menu ) #component: @@ -675,6 +675,8 @@ #(#vpext #(#Array + #Array #Array + #Array #Array #Point 0.264414 1.0 ) @@ -699,6 +701,8 @@ #(#NoteBookViewSpec #name: 'NoteBook' #layout: #(#LayoutFrame 1 0.0 0 0.0 0 1.0 -30 1.0) + #visibilityChannel: #hasSelectionHolder + #tabable: true #model: #noteBookModel #menu: #noteBookTabList #useIndex: true @@ -714,6 +718,7 @@ #name: 'TestNoteBook' #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #visibilityChannel: #testMode + #tabable: true #menu: #testItemList #useIndex: true ) @@ -941,56 +946,71 @@ - ^ - - #(#Menu - - #( - #(#MenuItem - #label: 'Cut' - #value: #doCut - #activeHelpKey: #editCut - #enabled: #valueOfCanCut - ) - #(#MenuItem - #label: 'Copy' - #value: #doCopy - #activeHelpKey: #editCopy - #enabled: #valueOfCanCopy - ) - #(#MenuItem - #label: 'Paste' - #value: #doPaste - #activeHelpKey: #editPaste - #enabled: #valueOfCanPaste - ) - #(#MenuItem - #label: 'Delete' - #value: #doDelete - #activeHelpKey: #editPaste - #enabled: #valueOfCanCut - ) - #(#MenuItem - #label: '-' - ) - #(#MenuItem - #label: 'Move Up' - #value: #doMoveTabUpOrDown: - #activeHelpKey: #editMoveUp - #enabled: #canMoveTabItemUpOrDown - #argument: #up - #labelImage: #(#ResourceRetriever #Icon #upIcon 'Move Up') - ) - #(#MenuItem - #label: 'Move Down' - #value: #doMoveTabUpOrDown: - #activeHelpKey: #editMoveDown - #enabled: #canMoveTabItemUpOrDown - #argument: #down - #labelImage: #(#ResourceRetriever #Icon #downIcon 'Move Down') - ) - ) nil - nil + ^ + #(#Menu + #( + #(#MenuItem + #label: 'Cut' + #value: #doCut + #activeHelpKey: #editCut + #enabled: #hasSelectionHolder + #shortcutKeyCharacter: #Cut + ) + #(#MenuItem + #label: 'Copy' + #value: #doCopy + #activeHelpKey: #editCopy + #enabled: #hasSelectionHolder + #shortcutKeyCharacter: #Copy + ) + #(#MenuItem + #label: 'Paste' + #value: #doPaste + #activeHelpKey: #editPaste + #enabled: #valueOfCanPaste + #shortcutKeyCharacter: #Paste + ) + #(#MenuItem + #label: 'Delete' + #value: #doDelete + #activeHelpKey: #editPaste + #enabled: #hasSelectionHolder + #shortcutKeyCharacter: #Delete + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Move Up' + #value: #doMoveTabUpOrDown: + #activeHelpKey: #editMoveUp + #enabled: #canMoveTabItemUpOrDown + #argument: #up + #labelImage: #(#ResourceRetriever #Icon #upIcon 'Move Up') + ) + #(#MenuItem + #label: 'Move Down' + #value: #doMoveTabUpOrDown: + #activeHelpKey: #editMoveDown + #enabled: #canMoveTabItemUpOrDown + #argument: #down + #labelImage: #(#ResourceRetriever #Icon #downIcon 'Move Down') + ) + #(#MenuItem + #label: '-' + #isVisible: #hiddenAccelerator + ) + #(#MenuItem + #label: 'Accept' + #translateLabel: true + #isVisible: #hiddenAccelerator + #value: #accept + #enabled: #valueOfEnablingCommitButtons + #shortcutKeyCharacter: #Accept + ) + ) + nil + nil ) ! @@ -1040,7 +1060,7 @@ #isButton: true #value: #doCut #activeHelpKey: #editCut - #enabled: #valueOfCanCut + #enabled: #hasSelectionHolder #labelImage: #(#ResourceRetriever #Icon #cutIcon) ) #(#MenuItem @@ -1048,7 +1068,7 @@ #isButton: true #value: #doCopy #activeHelpKey: #editCopy - #enabled: #valueOfCanCopy + #enabled: #hasSelectionHolder #labelImage: #(#ResourceRetriever #Icon #copyIcon) ) #(#MenuItem @@ -1064,7 +1084,7 @@ #isButton: true #value: #doDelete #activeHelpKey: #editDelete - #enabled: #valueOfCanCut + #enabled: #hasSelectionHolder #labelImage: #(#ResourceRetriever #Icon #deleteIcon) ) #(#MenuItem @@ -1137,6 +1157,10 @@ ^ holder. ! +hasSelectionHolder + ^ builder booleanValueAspectFor:#hasSelectionHolder +! + hasVerticalScrollBar "automatically generated by UIPainter ..." @@ -1154,6 +1178,12 @@ ^ holder. ! +hiddenAccelerator + "used to set menu entries with an accelerator not visible to the operator + " + ^ false +! + inputGroup |holder| @@ -1331,12 +1361,7 @@ ]. modified := false. - - listOfTabs notEmpty ifTrue:[ - self selection:1 - ]. - - self updateInfoLabel + listOfTabs notEmpty ifTrue:[ self selection:1 ]. ! buildFromResourceSpec:aListSpec @@ -1349,16 +1374,10 @@ self selection:0. listOfTabs removeAll. - aTabList do:[:aTabItem| - listOfTabs add: aTabItem. - ]. + aTabList do:[:aTabItem| listOfTabs add: aTabItem ]. modified := false. + listOfTabs notEmpty ifTrue:[ self selection:1 ]. - listOfTabs notEmpty ifTrue:[ - self selection:1 - ]. - - self updateInfoLabel ! ! !TabListEditor methodsFor:'change & update'! @@ -1366,7 +1385,7 @@ update:something with:aParameter from:someObject "one of my aspects has changed; update modified channel " - |list size index| + |list| someObject = self selectionHolder ifTrue:[ ^ self selectionChanged @@ -1376,22 +1395,16 @@ ^ super update:something with:aParameter from:someObject. ]. - size := listOfTabs size. - someObject value ifTrue:[ - index := 0. - - size ~~ 0 ifTrue:[ + listOfTabs notEmpty ifTrue:[ list := listOfTabs collect:[:aTab| |tab| tab := aTab copy. tab setAttributesFromClass:specClass. tab - ]. - ] - ] ifFalse:[ - index := 1 min:size + ] + ]. + self selection:0. ]. - self selectionHolder value:index. self testItemList value:list. self updateInfoLabel. @@ -1449,13 +1462,15 @@ noteBookModel value:0 ]. self cancel. - self valueOfCanCut value:hasSelection. - self valueOfCanCopy value:hasSelection. + self hasSelectionHolder value:hasSelection. self valueOfCanPaste. ! setSelection:anIndex - self selectionHolder value:(anIndex ? 0) withoutNotifying:self + |index| + + index := anIndex ? 0. + self selectionHolder value:index withoutNotifying:self ! ! !TabListEditor methodsFor:'startup / release'! @@ -1562,13 +1577,20 @@ doDelete "delete selected tab " - |index| + |index size| (index := self selection) ~~ 0 ifTrue:[ self testMode value: false. - self setSelection:0. + + (size := listOfTabs size) == 1 ifTrue:[ + self selection:0 + ] ifFalse:[ + self setSelection:0 + ]. listOfTabs removeIndex:index. - index > listOfTabs size ifTrue:[index := index - 1]. + index < size ifFalse:[ + index := index - 1 + ]. self selection:index. self updateAllToolInstances. modified := true.