# HG changeset patch # User ca # Date 872092669 -7200 # Node ID 1ecabfd468dc049cf6f742ede81a4aafc659889e # Parent 23712b1d3f3d8f911423599613eb1e06c2a48ed5 HelpTool is seperated like LayoutTool diff -r 23712b1d3f3d -r 1ecabfd468dc MenuEditor.st --- a/MenuEditor.st Wed Aug 20 17:55:38 1997 +0200 +++ b/MenuEditor.st Wed Aug 20 17:57:49 1997 +0200 @@ -13,7 +13,8 @@ ApplicationModel subclass:#MenuEditor - instanceVariableNames:'specClass tabSelection aspects slices activeHelpTool didInstall' + instanceVariableNames:'specClass specCanvas helpCanvas tabSelection aspects slices + didInstall' classVariableNames:'' poolDictionaries:'' category:'Interface-UIPainter' @@ -124,7 +125,7 @@ #(#FullSpec #'window:' #(#WindowSpec - #'name:' 'uIPainterView' + #'name:' 'ClassAndMethodSpec' #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #'label:' 'Painter' #'bounds:' #(#Rectangle 0 0 391 170) @@ -220,7 +221,7 @@ #(#FullSpec #'window:' #(#WindowSpec - #'name:' 'uIPainterView' + #'name:' 'ClassDefineSpec' #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #'label:' 'Painter' #'bounds:' #(#Rectangle 0 0 383 128) @@ -532,12 +533,12 @@ #(#MenuItem #'label:' 'from class ...' #'value:' #doFromClass - #'enabled:' #isOwnerOfHelpTool + #'enabled:' #isStandAlone ) #(#MenuItem #'label:' 'pick a menu' #'value:' #doPickAMenu - #'enabled:' #isOwnerOfHelpTool + #'enabled:' #isStandAlone ) #(#MenuItem #'label:' '=' @@ -596,7 +597,7 @@ #(#MenuItem #'label:' 'class' #'value:' #doDefineClass - #'enabled:' #isOwnerOfHelpTool + #'enabled:' #isStandAlone ) #(#MenuItem #'label:' '-' @@ -608,7 +609,7 @@ #(#MenuItem #'label:' 'install help spec.' #'value:' #doInstallHelp - #'enabled:' #isOwnerOfHelpTool + #'enabled:' #isStandAlone ) #(#MenuItem #'label:' '=' @@ -651,7 +652,7 @@ #(#FullSpec #'window:' #(#WindowSpec - #'name:' 'uIPainterView' + #'name:' 'MenuEditor' #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #'label:' 'Menu Builder' #'bounds:' #(#Rectangle 0 0 580 384) @@ -677,7 +678,7 @@ #'model:' #tabModel #'tabWidget:' #Window #'useIndex:' true - #'canvas:' #tabCanvas + #'canvas:' #noteBookView ) #(#HorizontalPanelViewSpec #'name:' 'confirmationPanel' @@ -731,7 +732,6 @@ (Basics basicsItemSpec) (Details detailsEditSpec) (Misc miscEditSpec) - (Help help) ) ! @@ -741,7 +741,6 @@ (Basics basicsLinkSpec) (Details detailsEditSpec) (Misc miscEditSpec) - (Help help) ) ! @@ -751,7 +750,6 @@ (Basics basicsMenuSpec) (Details detailsEditSpec) (Misc miscEditSpec) - (Help help) ) ! @@ -790,7 +788,7 @@ #(#FullSpec #'window:' #(#WindowSpec - #'name:' 'uIPainterView' + #'name:' 'BasicsItemSpec' #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #'label:' 'unnamed canvas' #'bounds:' #(#Rectangle 0 0 267 319) @@ -879,7 +877,7 @@ #(#FullSpec #'window:' #(#WindowSpec - #'name:' 'uIPainterView' + #'name:' 'BasicsLinkSpec' #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #'label:' 'unnamed canvas' #'bounds:' #(#Rectangle 0 0 267 319) @@ -952,7 +950,7 @@ #(#FullSpec #'window:' #(#WindowSpec - #'name:' 'uIPainterView' + #'name:' 'BasicsMenuSpec' #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #'label:' 'unnamed canvas' #'bounds:' #(#Rectangle 0 0 267 319) @@ -1013,7 +1011,7 @@ #(#FullSpec #'window:' #(#WindowSpec - #'name:' 'uIPainterView' + #'name:' 'BasicsRootSpec' #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #'label:' 'unnamed canvas' #'bounds:' #(#Rectangle 0 0 267 319) @@ -1060,7 +1058,7 @@ #(#FullSpec #'window:' #(#WindowSpec - #'name:' 'uIPainterView' + #'name:' 'BasicsSeparatorSpec' #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #'label:' 'unnamed canvas' #'bounds:' #(#Rectangle 0 0 267 319) @@ -1107,7 +1105,7 @@ #(#FullSpec #'window:' #(#WindowSpec - #'name:' 'uIPainterView' + #'name:' 'DetailsEditSpec' #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #'label:' 'unnamed canvas' #'bounds:' #(#Rectangle 0 0 259 288) @@ -1183,7 +1181,7 @@ #(#FullSpec #'window:' #(#WindowSpec - #'name:' 'uIPainterView' + #'name:' 'MiscEditSpec' #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #'label:' 'unnamed canvas' #'bounds:' #(#Rectangle 0 0 245 142) @@ -1281,6 +1279,13 @@ anItem enabled:true. ]. ^ menu +! + +useHelpDictionary:aDictionary + |tool| + + self noteBookView. + self helpTool dictionary:aDictionary. ! ! !MenuEditor methodsFor:'accessing menu'! @@ -1313,21 +1318,22 @@ node notNil ifTrue:[ self isHelpToolSelected ifTrue:[ - self activeHelpTool accept - ]. - cont := node contents buildFromAspects:aspects. - painter selectedNodeChanged + self helpTool accept. + node contents activeHelpKey:(self helpTool helpKey) + ] ifFalse:[ + cont := node contents buildFromAspects:aspects. + painter selectedNodeChanged + ] ]. self modifiedChannel value:false. didInstall := true - - "Modified: 31.7.1997 / 14:25:34 / cg" ! cancel |node| (node := self painter selectedNode) notNil ifTrue:[ + self helpTool helpKey:(self helpKey). aspects do:[:anAspect| anAspect value:nil ]. node contents toAspects:aspects. ]. @@ -1335,33 +1341,6 @@ ! ! -!MenuEditor methodsFor:'active help'! - -activeHelpTool - "access current active help editor - " - activeHelpTool isNil ifTrue:[ - self activeHelpTool:(UIHelpTool new) - ]. - ^ activeHelpTool -! - -activeHelpTool:anApplication - "change current active help editor - " - activeHelpTool := anApplication. - - activeHelpTool masterApplication isNil ifTrue:[ - activeHelpTool masterApplication:self. - ]. -! - -isOwnerOfHelpTool - "returns true in case of owner of the helptool - " - ^ self activeHelpTool masterApplication == self -! ! - !MenuEditor methodsFor:'aspects'! aspectFor:aKey @@ -1408,17 +1387,6 @@ "Modified: 28.7.1997 / 12:52:13 / cg" ! -menuPullDown - |menu| - - menu := Menu new. - menu fromLiteralArrayEncoding:(self class menuPullDown). - menu receiver:self. - ^ menu - - -! - modifiedChannel "automatically generated by UIPainter ..." @@ -1427,15 +1395,26 @@ "Modified: 28.7.1997 / 12:52:14 / cg" ! -tabCanvas +noteBookView "automatically generated by UIPainter ..." - |holder| - - (holder := builder bindingAt:#tabCanvas) isNil ifTrue:[ - builder aspectAt:#tabCanvas put:(holder := SubCanvas new). + |noteBook helpTool| + + (noteBook := builder bindingAt:#noteBookView) isNil ifTrue:[ + noteBook := View new. + helpTool := UIHelpTool new. + + helpTool masterApplication:self. + helpCanvas := SubCanvas origin:0.0@0.0 corner:1.0@1.0 in:noteBook. + specCanvas := SubCanvas origin:0.0@0.0 corner:1.0@1.0 in:noteBook. + + helpCanvas client:helpTool. + helpTool masterApplication:self. + helpTool modifiedHolder:(self modifiedChannel). + + builder aspectAt:#noteBookView put:noteBook. ]. - ^ holder + ^ noteBook ! tabList @@ -1517,6 +1496,155 @@ ! ! +!MenuEditor methodsFor:'interface specs'! + +menuPullDown + "this window spec was automatically generated by the ST/X MenuEditor" + + "do not manually edit this - the builder may not be able to + handle the specification if its corrupted." + + " + MenuEditor new openOnClass:MenuEditor andSelector:#menuPullDown + (Menu new fromLiteralArrayEncoding:(MenuEditor menuPullDown)) startUp + " + + + + ^ + + #(#Menu + + #( + #(#MenuItem + #'label:' 'file' + #'value:' #file + #'submenu:' + #(#Menu + + #( + #(#MenuItem + #'label:' 'new' + #'value:' #doNew + ) + #(#MenuItem + #'label:' 'from class ...' + #'value:' #doFromClass + #'enabled:' #isStandAlone + ) + #(#MenuItem + #'label:' 'pick a menu' + #'value:' #doPickAMenu + #'enabled:' #isStandAlone + ) + #(#MenuItem + #'label:' '=' + ) + #(#MenuItem + #'label:' 'quit' + #'value:' #closeRequest + ) + ) nil + nil + ) + ) + #(#MenuItem + #'label:' 'edit' + #'submenu:' + #(#Menu + + #( + #(#MenuItem + #'label:' 'cut' + #'value:' #doCut + ) + #(#MenuItem + #'label:' '=' + ) + #(#MenuItem + #'label:' 'create submenu static' + #'value:' #doCreateMenu + ) + #(#MenuItem + #'label:' 'create summenu dynamic' + #'value:' #doCreateLink + ) + #(#MenuItem + #'label:' '-' + ) + #(#MenuItem + #'label:' 'create item' + #'value:' #doCreateItem + ) + #(#MenuItem + #'label:' 'create separator' + #'value:' #doCreateSep + ) + ) nil + nil + ) + ) + #(#MenuItem + #'label:' 'code' + #'value:' #code + #'submenu:' + #(#Menu + + #( + #(#MenuItem + #'label:' 'class' + #'value:' #doDefineClass + #'enabled:' #isStandAlone + ) + #(#MenuItem + #'label:' '-' + ) + #(#MenuItem + #'label:' 'install menu spec.' + #'value:' #doInstallSpec + ) + #(#MenuItem + #'label:' 'install help spec.' + #'value:' #doInstallHelp + #'enabled:' #isStandAlone + ) + #(#MenuItem + #'label:' '=' + ) + #(#MenuItem + #'label:' 'browse application' + #'value:' #doBrowseAppClass + ) + ) nil + nil + ) + ) + #(#MenuItem + #'label:' 'test' + #'submenuChannel:' #submenuTest + ) + ) nil + nil + ) + + "Modified: 28.7.1997 / 18:12:10 / cg" +! ! + +!MenuEditor methodsFor:'private'! + +helpKey + |node| + + (node := self painter selectedNode) notNil ifTrue:[ + ^ node contents activeHelpKey + ]. + ^ nil +! + +helpTool + ^ helpCanvas application +! ! + !MenuEditor methodsFor:'queries'! didInstall @@ -1531,16 +1659,22 @@ isHelpToolSelected "returns true if current selection is help tool " - (slices notNil and:[tabSelection notNil]) ifTrue:[ - ^ (slices at:tabSelection) last == #help + slices notNil ifTrue:[ + ^ (slices at:tabSelection) first = UIHelpTool label ]. - ^ false + ^ false +! + +isStandAlone + "returns true in case of owner of the helptool + " + ^ self masterApplication isNil ! ! !MenuEditor methodsFor:'selection'! menuChanged - |node item slc sel| + |node item slc sel old| (node := self painter selectedNode) notNil ifTrue:[ aspects do:[:anAspect| anAspect value:nil ]. @@ -1555,24 +1689,31 @@ item submenuChannel isNil ifTrue:[slc := #slicesItem] ifFalse:[slc := #slicesLink] ]. + slc := (self class perform:slc) copyWith:#( 'Help' #dummy ). ] ifTrue:[ - slc := #slicesRootMenu - ] + slc := self class perform:#slicesRootMenu + ]. ] ifTrue:[ - slc := #slicesSeparatorMenu - ]. - slc := self class perform:slc. + slc := self class perform:#slicesSeparatorMenu. + ] ]. + self helpTool helpKey:(self helpKey). self modifiedChannel value:false. slc ~= slices ifTrue:[ + tabSelection notNil ifTrue:[ + old := (slices at:tabSelection) first + ]. + (slices := slc) notNil ifTrue:[ - tabSelection notNil ifTrue:[sel := tabSelection min:(slices size)] - ifFalse:[sel := 1]. - - self tabList value:(slices collect:[:s| s first]). - self tabModel setValue:nil. - self tabModel value:sel. + sel := slices collect:[:s| s first]. + tabSelection := nil. + self tabList value:sel. + + (old notNil and:[(sel := sel findFirst:[:n|n = old]) ~~ 0]) ifFalse:[ + sel := 1 + ]. + self tabModel value:sel ] ifFalse:[ self tabList value:nil. self tabSelection:nil. @@ -1588,19 +1729,26 @@ tabSelection:aSelection |tool sel| - tabSelection == aSelection ifTrue:[ + tabSelection = aSelection ifTrue:[ ^ self ]. (tabSelection := aSelection) isNil ifTrue:[ - ^ self tabCanvas client:nil + slices isNil ifTrue:[ + specCanvas client:nil. + ^ specCanvas raise. + ]. + tabSelection == 1 ifTrue:[^ self]. + tabSelection := 1 ]. + self isHelpToolSelected ifTrue:[ - self tabCanvas client:(tool := self activeHelpTool). - tool model:(self aspectFor:#activeHelpKey) + self helpTool helpKey:(self helpKey). + helpCanvas raise. ] ifFalse:[ sel := (slices at:tabSelection) last. - self tabCanvas client:self spec:(self class perform:sel) builder:builder + specCanvas client:self spec:(self class perform:sel) builder:builder. + specCanvas raise. ] ! ! @@ -1613,8 +1761,8 @@ self specClass:aClass. newClass := self specClass. - (self isOwnerOfHelpTool and:[oldClass ~= newClass]) ifTrue:[ - self activeHelpTool helpSpecFrom:newClass + (self isStandAlone and:[oldClass ~= newClass]) ifTrue:[ + self helpTool helpSpecFrom:newClass ]. self painter buildFrom:newClass andSelector:aSelector. ! @@ -1631,7 +1779,6 @@ label accessCharaterPos submenuChannel - activeHelpKey enabled value nameKey @@ -1742,7 +1889,9 @@ doInstallHelp "install help text " - self activeHelpTool installHelpSpecInto:(self specClass) + self isStandAlone ifTrue:[ + self helpTool installHelpSpecInto:(self specClass) + ] ! doInstallSpec @@ -1914,6 +2063,14 @@ !MenuEditor::Item methodsFor:'accessing'! +activeHelpKey + ^ activeHelpKey +! + +activeHelpKey:aKey + activeHelpKey := aKey +! + label "return the value of the instance variable 'label' (automatically generated)" @@ -1997,7 +2154,6 @@ (aspects at:#label) value:(label := name) ]. - activeHelpKey := (aspects at:#activeHelpKey) value. enabled := (aspects at:#enabled) value. value := (aspects at:#value) value. nameKey := (aspects at:#nameKey) value. @@ -2057,7 +2213,6 @@ (aspects at:#seperatorSelection) selectionIndex:type. ] ifFalse:[ (aspects at:#label) value:label. - (aspects at:#activeHelpKey) value:activeHelpKey. (aspects at:#enabled) value:enabled. (aspects at:#value) value:value. (aspects at:#nameKey) value:nameKey. diff -r 23712b1d3f3d -r 1ecabfd468dc UIPainter.st --- a/UIPainter.st Wed Aug 20 17:55:38 1997 +0200 +++ b/UIPainter.st Wed Aug 20 17:57:49 1997 +0200 @@ -12,8 +12,8 @@ ApplicationModel subclass:#UIPainter - instanceVariableNames:'activeHelpTool layoutTool specTool treeView selectionPanel - tabSelection specClass specSelector specSuperclass aspects' + instanceVariableNames:'treeView selectionPanel tabSelection specClass specSelector + specSuperclass aspects layoutCanvas helpCanvas specCanvas' classVariableNames:'IconStepUp IconStepOut IconStepIn IconStepDown' poolDictionaries:'' category:'Interface-UIPainter' @@ -106,115 +106,106 @@ " ^ super helpSpec addPairsFrom:#( -#alignSelectionCenterVer -'align selected widgets vertical' - -#alignSelectionLeft -'align selected widgets to the left edge of the dominant widget ( underlined )' - -#alignSelectionRight -'align selected widgets to the right edge of the dominant widget ( underlined )' - -#alignSelectionLeftAndRight -'align selected widgets to the right and left edge of the dominant widget ( underlined )' - -#alignSelectionTop -'align selected widgets to the top edge of the dominant widget ( underlined )' - -#alignSelectionBottom -'align selected widgets to the bottom edge of the dominant widget ( underlined )' - -#alignSelectionTopAndBottom -'align selected widgets to the top and bottom edge of the dominant widget ( underlined )' - -#alignSelectionCenterVer -'align selected widgets horizontal to the center of the dominant widget ( underlined )' - -#alignSelectionCenterHor -'align selected widgets vertical to the center of the dominant widget ( underlined )' - -#spreadSelectionVer -'vertical spacing between selected widgets is made the same' - -#spreadSelectionHor -'horizontal spacing between selected widgets is made the same' - -#centerSelectionHor -'center widgets horizontal to their top widget' - -#centerSelectionVer -'center vertical horizontal in contained view' - -#setToDefaultExtent -'set selected widgets to their default extent' +#moveSelectionLeft +'move selected widgets left while pressing the button' #setToDefaultWidth 'set selected widgets to their default width' -#setToDefaultHeight -'set selected widgets to their default height' - -#copyExtent -'copy extent of the selected widget' - -#pasteExtent -'change extent of all selected widgets to the last copied extent' - -#pasteWidth -'change width of all selected widgets to the last copied extent width' - -#pasteHeight -'change height of all selected widgets to the last copied extent height' - -#copyLayout -'copy layout of the selected widget' - -#pasteLayout -'change layout of all selected widgets to the last copied layout' - #pasteBuffer 'paste widgets at current mouse position' -#pasteWithLayout -'paste widgets without changing their layouts' - -#accept -'write back changes' - -#cancel -'reread specification and layout' - #galleryShown 'show or hide gallery view' -#painterShown -'show or hide painter view' - -#moveSelectionLeft -'move selected widgets left while pressing the button' - -#moveSelectionRight -'move selected widgets right while pressing the button' - #moveSelectionDown 'move selected widgets down while pressing the button' #moveSelectionUp 'move selected widgets up while pressing the button' +#spreadSelectionVer +'vertical spacing between selected widgets is made the same' + #menuChangeHierarchy 'change hierarchy of the selected widget' +#copyExtent +'copy extent of the selected widget' + +#moveSelectionRight +'move selected widgets right while pressing the button' + +#cancel +'reread specification and layout' + +#pasteWithLayout +'paste widgets without changing their layouts' + +#alignSelectionRight +'align selected widgets to the right edge of the dominant widget' + +#alignSelectionLeftAndRight +'align selected widgets to the right and left edge of the dominant widget' + +#pasteWidth +'change width of all selected widgets to the last copied extent width' + +#alignSelectionTopAndBottom +'align selected widgets to the top and bottom edge of the dominant widget' + +#copyLayout +'copy layout of the selected widget' + +#painterShown +'show or hide painter view' + +#pasteExtent +'change extent of all selected widgets to the last copied extent' + +#pasteHeight +'change height of all selected widgets to the last copied extent height' + +#accept +'write back changes' + +#centerSelectionVer +'center vertical horizontal in contained view' + +#centerSelectionHor +'center widgets horizontal to their top widget' + #menuAlignment 'provides a set of alignment operation on the current selected widgets' - +#alignSelectionCenterVer +'align selected widgets horizontal to the center of the dominant widget' + +#pasteLayout +'change layout of all selected widgets to the last copied layout' + +#alignSelectionLeft +'align selected widgets to the left edge of the dominant widget' + +#spreadSelectionHor +'horizontal spacing between selected widgets is made the same' + +#alignSelectionBottom +'align selected widgets to the bottom edge of the dominant widget' + +#setToDefaultExtent +'set selected widgets to their default extent' + +#alignSelectionCenterHor +'align selected widgets vertical to the center of the dominant widget' + +#alignSelectionTop +'align selected widgets to the top edge of the dominant widget' + +#setToDefaultHeight +'set selected widgets to their default height' ) - - - - ! ! !UIPainter class methodsFor:'icons'! @@ -340,7 +331,7 @@ #(#FullSpec #'window:' #(#WindowSpec - #'name:' 'uIPainterView' + #'name:' 'NameAndSelectorSpec' #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) #'label:' 'Painter' #'bounds:' #(#Rectangle 0 0 391 170) @@ -474,11 +465,6 @@ #'enableChannel:' #enableChannel #'tabable:' true #'menu:' #tabList - #'style:' - #(#FontDescription - #helvetica #medium - #roman #'10' - ) #'model:' #tabModel #'tabWidget:' #Window #'canvas:' #noteBookView @@ -664,6 +650,7 @@ #(#MenuItem #'label:' 'align left' #'value:' #alignSelectionLeft + #'activeHelpKey:' #alignSelectionLeft #'labelImage:' #(#ResourceRetriever nil #iconAlignL @@ -1242,9 +1229,11 @@ specification will change immediately dependant on the attributes derived from the specification. " - |layout| + |layout spec prop key layoutTool| self isLayoutToolSelected ifTrue:[ + layoutTool := self layoutTool. + (layout := layoutTool layout) notNil ifTrue:[ layoutTool layoutType == #Extent ifTrue:[ layoutTool layoutView == self painter topView ifTrue:[ @@ -1257,22 +1246,37 @@ ] ] ] ifFalse:[ + spec := self specTool specification. + self isHelpToolSelected ifTrue:[ - activeHelpTool accept - ]. - self painter updateFromSpec:(specTool specification). + self helpTool accept. + key := self helpTool helpKey. + prop := treeView propertySelected. + + prop notNil ifTrue:[ + prop spec activeHelpKey:key + ]. + spec activeHelpKey:key. + ] ifFalse:[ + self painter updateFromSpec:spec. + ] ]. self modifiedChannel value:false. - ! cancel "cancel all changes done to the specification; reread attributes from the assigned component " + |spec key| + self isModified ifTrue:[ - specTool specification:(self painter specForSelection). - self setViewInLayoutTool:(layoutTool layoutView). + (spec := self painter specForSelection) notNil ifTrue:[ + key := spec activeHelpKey. + ]. + self helpTool helpKey:key. + self specTool specification:spec. + self setViewInLayoutTool:(self layoutTool layoutView). self modifiedChannel value:false. ] ! @@ -1305,6 +1309,8 @@ ! openEditMenu + "opens a menu editor on current widget + " |cls aspect editor| specClass isNil ifTrue:[ @@ -1318,7 +1324,7 @@ ]. cls notNil ifTrue:[ - (aspect := specTool specification menu) notNil ifTrue:[ + (aspect := self specTool specification menu) notNil ifTrue:[ aspect := aspect asSymbol ] ifFalse:[ "/ cg: q&d hack ... @@ -1331,21 +1337,17 @@ aspect := aspect view asMenu. ] ]. - -"/ aspect isNil ifTrue:[ -"/ self warn:'first enter (and confirm) the menus selector.'. -"/ ^ self. -"/ ]. ]. editor := MenuEditor new. editor masterApplication:self. - editor activeHelpTool:(self activeHelpTool). + editor useHelpDictionary:(self helpTool dictionary). editor openModalOnClass:cls andSelector:aspect. + self helpTool updateList. editor selectorName ~= aspect ifTrue:[ editor didInstall ifTrue:[ - specTool specification menu:editor selectorName asSymbol. + self specTool specification menu:editor selectorName asSymbol. self modifiedChannel value:true. self accept ] @@ -1357,17 +1359,6 @@ !UIPainter methodsFor:'active help'! -activeHelpTool - "setup help tool - " - activeHelpTool isNil ifTrue:[ - activeHelpTool := UIHelpTool new. - activeHelpTool helpSpecFrom:specClass. - activeHelpTool masterApplication:self. - ]. - ^ activeHelpTool -! - showHelp:aHelpText for:view "hook to allow an application to display active help texts in its own info area. @@ -1448,27 +1439,36 @@ noteBookView "returns the notebook view; initialize components within the notebook " - |noteBook channel n1 n2| + |noteBook channel helpTool layoutTool specTool| (noteBook := builder bindingAt:#noteBookView) isNil ifTrue:[ noteBook := View new. layoutTool := UILayoutTool new. + helpTool := UIHelpTool new. + helpTool helpSpecFrom:specClass. specTool := UISpecificationTool new. channel := self modifiedChannel. layoutTool masterApplication:self. specTool masterApplication:self. - - n1 := SubCanvas origin:0.0@0.0 corner:1.0@1.0 in:noteBook. - n2 := SubCanvas origin:0.0@0.0 corner:1.0@1.0 in:noteBook. - - n1 client:layoutTool. - specTool builder:(n2 client:specTool). + helpTool masterApplication:self. + + layoutCanvas := SubCanvas origin:0.0@0.0 corner:1.0@1.0 in:noteBook. + helpCanvas := SubCanvas origin:0.0@0.0 corner:1.0@1.0 in:noteBook. + specCanvas := SubCanvas origin:0.0@0.0 corner:1.0@1.0 in:noteBook. + + layoutCanvas client:layoutTool. + helpCanvas client:helpTool. + specTool builder:(specCanvas client:specTool). layoutTool masterApplication:self. specTool masterApplication:self. + helpTool masterApplication:self. + layoutTool modifiedHolder:channel. + helpTool modifiedHolder:channel. specTool modifiedHolder:channel. + builder aspectAt:#noteBookView put:noteBook. ]. ^ noteBook @@ -1532,7 +1532,7 @@ widget changed " self isModified ifFalse:[ - layoutTool update. + self layoutTool update. self modifiedChannel value:false ] ! @@ -1544,11 +1544,11 @@ |p| (p := treeView propertySelected) notNil ifTrue:[ - specTool specification:(p spec copy). + self specTool specification:(p spec copy). self setViewInLayoutTool:(p view). self modifiedChannel value:false ] ifFalse:[ - layoutTool layoutView notNil ifTrue:[ + self layoutTool layoutView notNil ifTrue:[ self modifiedChannel value:false. self treeSelection ] @@ -1638,10 +1638,18 @@ aView unmap. ! -painter - "returns the painter/canvas view - " - ^ treeView canvas +raiseTabView + + self isLayoutToolSelected ifTrue:[ + layoutCanvas raise + ] ifFalse:[ + self isHelpToolSelected ifTrue:[ + helpCanvas raise + ] ifFalse:[ + self specTool selection:tabSelection. + specCanvas raise + ] + ] ! raiseUIView:aView @@ -1669,7 +1677,7 @@ superclassName:superClassName selector:(selector ? ''). - specClass := clsName. + self specClass:clsName. specSelector := (selector ? ''). specSuperclass := superClassName. @@ -1679,13 +1687,53 @@ setViewInLayoutTool:aView "set view for layout tool " - self painter topView ~~ aView ifTrue:[ - layoutTool layoutView:aView type:nil - ] ifFalse:[ - layoutTool layoutView:aView type:#Extent + |type| + + self painter topView == aView ifTrue:[ + type := #Extent + ]. + self layoutTool layoutView:aView type:type + +! + +specClass:aClass + specClass := aClass. + self helpTool helpSpecFrom:specClass. +! ! + +!UIPainter methodsFor:'private tools'! + +helpTool + "returns the help tool + " + helpCanvas isNil ifTrue:[ + self noteBookView ]. - - + ^ helpCanvas application +! + +layoutTool + "returns the layout tool + " + layoutCanvas isNil ifTrue:[ + self noteBookView + ]. + ^ layoutCanvas application +! + +painter + "returns the painter/canvas view + " + ^ treeView canvas +! + +specTool + "returns the spec tool + " + specCanvas isNil ifTrue:[ + self noteBookView + ]. + ^ specCanvas application ! ! !UIPainter methodsFor:'queries'! @@ -1713,14 +1761,15 @@ "returns true if current selected tab in the noteBook is assigned to the 'Help' tool " - ^ tabSelection = 'Help' + ^ tabSelection = UIHelpTool label + ! isLayoutToolSelected "returns true if current selected tab in the noteBook is assigned to the 'Layout' tool " - ^ tabSelection = layoutTool class label + ^ tabSelection = UILayoutTool label ! isModified @@ -1746,8 +1795,6 @@ tabSelection:something "the tab selection of the notebook changed " - |raiseViewIdx| - (something isNil or:[tabSelection = something]) ifTrue:[ ^ self ]. @@ -1759,14 +1806,8 @@ self accept ]. - raiseViewIdx := 1. tabSelection := something. - - self isLayoutToolSelected ifFalse:[ - specTool selection:tabSelection. - raiseViewIdx := 2 - ]. - (self noteBookView subViews at:raiseViewIdx) raise. + self raiseTabView. self cancel. ! @@ -1796,11 +1837,13 @@ ]. tabComponent := builder componentAt:#noteBook. self setViewInLayoutTool:view. - specTool specification:spec. + self specTool specification:spec. spec notNil ifTrue:[ + self helpTool helpKey:(spec activeHelpKey). list := spec class slices collect:[:aSlice| aSlice first asString]. - view notNil ifTrue:[list add:(layoutTool class label)]. + list add:(UIHelpTool label). + list add:(UILayoutTool label). self tabList value:list. self showHelp:(spec class name) for:nil. tabComponent enabled:true. @@ -1808,18 +1851,13 @@ (tabSelection := tabComponent selection) isNil ifTrue:[ tabComponent setSelection:(tabSelection := list first) ]. - self isLayoutToolSelected ifTrue:[ - (self noteBookView subViews at:1) raise - ] ifFalse:[ - specTool selection:tabSelection. - (self noteBookView subViews at:2) raise - ] + self raiseTabView ] ifFalse:[ + self helpTool helpKey:nil. tabComponent enabled:false. self showHelp:'' for:nil. ]. self modifiedChannel value:false. - ! ! !UIPainter methodsFor:'startup / release'! @@ -1841,9 +1879,7 @@ selectionPanel closeRequest ]. selectionPanel := nil. - layoutTool := nil. treeView := nil. - activeHelpTool := nil. super closeRequest. @@ -2078,7 +2114,7 @@ (self openDialogInterface:#nameAndSelectorSpec) ifTrue:[ - specClass := (self aspectFor:#classNameChannel) value. + specClass := (self aspectFor:#classNameChannel) value. specSelector := (self aspectFor:#methodNameChannel) value. specSelector notNil ifTrue:[specSelector := specSelector asSymbol]. specSuperclass := (self aspectFor:#superclassNameChannel) value. @@ -2090,9 +2126,9 @@ ] ] - ] doWhile:[again] - - "Modified: 17.6.1997 / 14:42:02 / cg" + ] doWhile:[again]. + + self specClass:specClass. ! ! !UIPainter methodsFor:'user interaction - move'! @@ -2246,11 +2282,7 @@ doInstallHelp "install help text " - activeHelpTool notNil ifTrue:[ - activeHelpTool installHelpSpecInto:specClass - ] ifFalse:[ - self information:'no help text defined' - ] + self helpTool installHelpSpecInto:specClass ! doInstallSpec