# HG changeset patch # User Claus Gittinger # Date 1463097592 -7200 # Node ID 413a225308d1caa3440990614c05d18d86814e9e # Parent 1663b107709f2be8d1d2fcc722fd68a6a26c0fd6 #UI_ENHANCEMENT by cg class: Tools::ViewTreeInspectorApplication class definition added: #browserVisibleHolder #inspectorVisibleHolder #postBuildBrowserCanvas: #updateBrowser comment/format in: #inspectorModeIndexHolder changed:6 methods diff -r 1663b107709f -r 413a225308d1 Tools__ViewTreeApplication.st --- a/Tools__ViewTreeApplication.st Thu May 12 21:34:25 2016 +0200 +++ b/Tools__ViewTreeApplication.st Fri May 13 01:59:52 2016 +0200 @@ -17,7 +17,7 @@ instanceVariableNames:'model treeView hasSingleSelectionHolder clickedItem clickedPoint motionAction process followFocusChannel showNamesHolder inspectorView inspectorModeIndexHolder path - isCatchingEventsChannel' + isCatchingEventsChannel browser' classVariableNames:'' poolDictionaries:'' category:'Interface-Smalltalk' @@ -353,9 +353,22 @@ useIndex: true translateLabel: true ) + (SubCanvasSpec + name: 'Browser' + layout: (LayoutFrame 0 0 26 0 0 1 0 1) + visibilityChannel: browserVisibleHolder + hasHorizontalScrollBar: true + hasVerticalScrollBar: true + majorKey: #'Tools::NewSystemBrowser' + minorKey: singleClassWithoutVariableListBrowserSpec + createNewApplication: true + createNewBuilder: true + postBuildCallback: postBuildBrowserCanvas: + ) (ViewSpec name: 'Inspector' layout: (LayoutFrame 0 0 26 0 0 1 0 1) + visibilityChannel: inspectorVisibleHolder postBuildCallback: postBuildInspectorView: viewClassName: 'InspectorView' ) @@ -878,6 +891,22 @@ !ViewTreeInspectorApplication methodsFor:'aspects'! +browserVisibleHolder + "what is shown in the inspector: + 1->Widget + 2->Application + 3->WindowGroup + 4->Sensor + 5->Model + 6->Widget Class + 7->Application Class + " + + ^ BlockValue + with:[:v | self inspectorMode == #widgetClass or:[self inspectorMode == #applicationClass] ] + argument:self inspectorModeIndexHolder +! + canBrowseWindowSpecMethod ^ self hasSingleSelectionHolder value and:[ self windowSpecMethodOfSelection notNil ] ! @@ -911,14 +940,13 @@ 3->WindowGroup 4->Sensor 5->Model + 6->Widget Class + 7->Application Class " - (inspectorModeIndexHolder value == 1) ifTrue:[ ^#widget]. - (inspectorModeIndexHolder value == 2) ifTrue:[ ^#application]. - (inspectorModeIndexHolder value == 3) ifTrue:[ ^#group]. - (inspectorModeIndexHolder value == 4) ifTrue:[ ^#sensor]. - (inspectorModeIndexHolder value == 5) ifTrue:[ ^#model]. - ^ #application + |mode| + mode := inspectorModeIndexHolder value. + ^ #( widget application group sensor model widgetClass applicationClass) at:mode ifAbsent:#widget "Created: / 30-07-2013 / 07:44:59 / cg" ! @@ -930,6 +958,8 @@ 3->WindowGroup 4->Sensor 5->Model + 6->Widget Class + 7->Application Class " ^ inspectorModeIndexHolder @@ -938,11 +968,28 @@ ! inspectorModes - ^ #('Widget' 'Application' 'WindowGroup' 'Sensor' 'Model') + "/ labels of tabs + ^ #('Widget' 'Application' 'WindowGroup' 'Sensor' 'Model' 'Widget Class' 'App Class') "Created: / 30-07-2013 / 09:42:16 / cg" ! +inspectorVisibleHolder + "what is shown in the inspector: + 1->Widget + 2->Application + 3->WindowGroup + 4->Sensor + 5->Model + 6->Widget Class + 7->Application Class + " + + ^ BlockValue + with:[:v | v not ] + argument:self browserVisibleHolder +! + isCatchingEventsChannel ^ isCatchingEventsChannel ! @@ -1001,7 +1048,8 @@ ! windowSpecMethodOfSelection - |item view app spec builder specSelector implementors| + |item view app nonMeta meta masterApp + spec builder specSelector implementors| item := model selectedItem. item isNil ifTrue:[^ nil]. @@ -1011,7 +1059,7 @@ app := view application. app isNil ifTrue:[^ nil]. - + builder := app builder. builder isNil ifTrue:[^ nil]. @@ -1021,20 +1069,20 @@ specSelector := spec name. specSelector isNil ifTrue:[^ nil]. - (app class theNonMetaclass canUnderstand:specSelector) ifTrue:[ - ^ app class theNonMetaclass lookupMethodFor:specSelector. + ((nonMeta := app class theNonMetaclass) canUnderstand:specSelector) ifTrue:[ + ^ nonMeta lookupMethodFor:specSelector. ]. - (app class theMetaclass canUnderstand:specSelector) ifTrue:[ - ^ app class theMetaclass lookupMethodFor:specSelector. + ((meta := app class theMetaclass) canUnderstand:specSelector) ifTrue:[ + ^ meta lookupMethodFor:specSelector. ]. "/ maybe a simple dialog given a spec - app masterApplication notNil ifTrue:[ - (app masterApplication class theNonMetaclass canUnderstand:specSelector) ifTrue:[ - ^ app masterApplication class theNonMetaclass lookupMethodFor:specSelector. + (masterApp := app masterApplication) notNil ifTrue:[ + ((nonMeta := masterApp class theNonMetaclass) canUnderstand:specSelector) ifTrue:[ + ^ nonMeta lookupMethodFor:specSelector. ]. - (app masterApplication class theMetaclass canUnderstand:specSelector) ifTrue:[ - ^ app masterApplication class theMetaclass lookupMethodFor:specSelector. + ((meta := masterApp class theMetaclass) canUnderstand:specSelector) ifTrue:[ + ^ meta lookupMethodFor:specSelector. ]. ]. @@ -1102,17 +1150,41 @@ super update:something with:someArgument from:aModel. ! +updateBrowser + |cls widget| + + widget := self selectedView. + + "/ update the browser + self inspectorMode == #widgetClass ifTrue:[ + cls := widget class. + ] ifFalse:[ + cls := widget application class + ]. + browser switchToClass:cls selector:nil. +! + updateInspector - |view obj| + |view mode obj| view := self selectedView. - (view isNil or:[self inspectorMode == #widget]) ifTrue:[ + mode := self inspectorMode. + + ((mode == #widgetClass) or:[(mode == #applicationClass)]) ifTrue:[ + "/ update the browser + view notNil ifTrue:[ + self updateBrowser. + ]. + ^ self. + ]. + + (view isNil or:[mode == #widget]) ifTrue:[ obj := view. - ] ifFalse:[ (self inspectorMode == #group) ifTrue:[ + ] ifFalse:[ (mode == #group) ifTrue:[ obj := view windowGroup - ] ifFalse:[ (self inspectorMode == #sensor) ifTrue:[ + ] ifFalse:[ (mode == #sensor) ifTrue:[ obj := view sensor - ] ifFalse:[ (self inspectorMode == #model) ifTrue:[ + ] ifFalse:[ (mode == #model) ifTrue:[ obj := view model ] ifFalse:[ obj := view application. @@ -1366,6 +1438,13 @@ "Modified: / 30-07-2013 / 09:20:08 / cg" ! +postBuildBrowserCanvas:aSubCanvas + browser := aSubCanvas application. + + "/ browser navigationState meta onChangeEvaluate:(self updateBrowser). + "/ self updateBrowser. +! + postBuildInspectorView:anInspector inspectorView := anInspector. ! @@ -2143,30 +2222,28 @@ objectToInspectOrBrowse:what "return one of: - #view inspect class + #view inspect view/widget #group inspect windowGroup #model inspect model #application inspect application #controller inspect controller #process inspect application's process + #widgetClass browse widget's class " - |view inst| + |view| view := self selectedView. view isNil ifTrue:[^ nil]. - what == #group ifTrue:[ inst := view windowGroup ] - ifFalse:[what == #model ifTrue:[ inst := view model ] - ifFalse:[what == #application ifTrue:[ inst := view application ] - ifFalse:[what == #controller ifTrue:[ inst := view controller ] - ifFalse:[what == #process ifTrue:[ inst := view windowGroup process ] - ifFalse:[what == #sensor ifTrue:[ inst := view sensor ] - ifFalse:[inst := view ]]]]]]. - - (inst isNil and:[what == #application]) ifTrue:[ - inst := view topView - ]. - ^ inst + what == #group ifTrue:[ ^ view windowGroup ]. + what == #model ifTrue:[ ^ view model ]. + what == #controller ifTrue:[ ^ view controller ]. + what == #process ifTrue:[ ^ view windowGroup process ]. + what == #sensor ifTrue:[ ^ view sensor ]. + what == #application ifTrue:[ ^ view application ? view topView ]. + what == #applicationClass ifTrue:[ ^ view application ? view topView ]. + + ^ view "Modified: / 28-08-2013 / 23:58:27 / cg" !