#UI_ENHANCEMENT by cg
class: Tools::ViewTreeInspectorApplication
class definition
added:
#browserVisibleHolder
#inspectorVisibleHolder
#postBuildBrowserCanvas:
#updateBrowser
comment/format in: #inspectorModeIndexHolder
changed:6 methods
--- 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"
!