Tools__ViewTreeApplication.st
author Stefan Vogel <sv@exept.de>
Fri, 11 Jan 2008 20:55:14 +0100
changeset 2242 63b5fdc3c8a3
parent 2177 87bb1815460b
child 2451 cbda60900ced
permissions -rw-r--r--
No debugger when there are unavailable classes in the widget gallery
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2177
87bb1815460b initial checkin
ca
parents:
diff changeset
     1
"{ Package: 'stx:libtool2' }"
87bb1815460b initial checkin
ca
parents:
diff changeset
     2
87bb1815460b initial checkin
ca
parents:
diff changeset
     3
"{ NameSpace: Tools }"
87bb1815460b initial checkin
ca
parents:
diff changeset
     4
87bb1815460b initial checkin
ca
parents:
diff changeset
     5
ApplicationModel subclass:#ViewTreeApplication
87bb1815460b initial checkin
ca
parents:
diff changeset
     6
	instanceVariableNames:'model treeView hasSingleSelectionHolder clickedItem clickedPoint
87bb1815460b initial checkin
ca
parents:
diff changeset
     7
		motionAction infoChannel testModeChannel process
87bb1815460b initial checkin
ca
parents:
diff changeset
     8
		followFocusChannel'
87bb1815460b initial checkin
ca
parents:
diff changeset
     9
	classVariableNames:''
87bb1815460b initial checkin
ca
parents:
diff changeset
    10
	poolDictionaries:''
87bb1815460b initial checkin
ca
parents:
diff changeset
    11
	category:'A-Views-Support'
87bb1815460b initial checkin
ca
parents:
diff changeset
    12
!
87bb1815460b initial checkin
ca
parents:
diff changeset
    13
87bb1815460b initial checkin
ca
parents:
diff changeset
    14
Object subclass:#MenuDesc
87bb1815460b initial checkin
ca
parents:
diff changeset
    15
	instanceVariableNames:'title value action'
87bb1815460b initial checkin
ca
parents:
diff changeset
    16
	classVariableNames:''
87bb1815460b initial checkin
ca
parents:
diff changeset
    17
	poolDictionaries:''
87bb1815460b initial checkin
ca
parents:
diff changeset
    18
	privateIn:ViewTreeApplication
87bb1815460b initial checkin
ca
parents:
diff changeset
    19
!
87bb1815460b initial checkin
ca
parents:
diff changeset
    20
87bb1815460b initial checkin
ca
parents:
diff changeset
    21
!ViewTreeApplication class methodsFor:'documentation'!
87bb1815460b initial checkin
ca
parents:
diff changeset
    22
87bb1815460b initial checkin
ca
parents:
diff changeset
    23
documentation
87bb1815460b initial checkin
ca
parents:
diff changeset
    24
"
87bb1815460b initial checkin
ca
parents:
diff changeset
    25
     Small application showing a ViewTreeModel use.
87bb1815460b initial checkin
ca
parents:
diff changeset
    26
87bb1815460b initial checkin
ca
parents:
diff changeset
    27
     It displays a hierarchical list of a selected TopView and
87bb1815460b initial checkin
ca
parents:
diff changeset
    28
     all its contained subViews.
87bb1815460b initial checkin
ca
parents:
diff changeset
    29
     Useful to have a look at subcomponents - to see how views
87bb1815460b initial checkin
ca
parents:
diff changeset
    30
     are structured.
87bb1815460b initial checkin
ca
parents:
diff changeset
    31
87bb1815460b initial checkin
ca
parents:
diff changeset
    32
87bb1815460b initial checkin
ca
parents:
diff changeset
    33
    [Instance variables:]
87bb1815460b initial checkin
ca
parents:
diff changeset
    34
        model           <ViewTreeModel>      the used ViewTreeModel
87bb1815460b initial checkin
ca
parents:
diff changeset
    35
        clickedItem     <ViewTreeItem>       item under the clickedPoint (motion action)
87bb1815460b initial checkin
ca
parents:
diff changeset
    36
        clickedPoint    <Point>              point where the motion action started from.
87bb1815460b initial checkin
ca
parents:
diff changeset
    37
        motionAction    <Action>             (oneArg-) action called durring buttonMotion.
87bb1815460b initial checkin
ca
parents:
diff changeset
    38
87bb1815460b initial checkin
ca
parents:
diff changeset
    39
87bb1815460b initial checkin
ca
parents:
diff changeset
    40
    [author:]
87bb1815460b initial checkin
ca
parents:
diff changeset
    41
        Claus Atzkern
87bb1815460b initial checkin
ca
parents:
diff changeset
    42
87bb1815460b initial checkin
ca
parents:
diff changeset
    43
    [see also:]
87bb1815460b initial checkin
ca
parents:
diff changeset
    44
        ViewTreeModel
87bb1815460b initial checkin
ca
parents:
diff changeset
    45
        ViewTreeItem
87bb1815460b initial checkin
ca
parents:
diff changeset
    46
"
87bb1815460b initial checkin
ca
parents:
diff changeset
    47
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
    48
87bb1815460b initial checkin
ca
parents:
diff changeset
    49
!ViewTreeApplication class methodsFor:'initialization'!
87bb1815460b initial checkin
ca
parents:
diff changeset
    50
87bb1815460b initial checkin
ca
parents:
diff changeset
    51
initialize
87bb1815460b initial checkin
ca
parents:
diff changeset
    52
    "add myself to the launcher menu
87bb1815460b initial checkin
ca
parents:
diff changeset
    53
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
    54
    self installInLauncher.
87bb1815460b initial checkin
ca
parents:
diff changeset
    55
!
87bb1815460b initial checkin
ca
parents:
diff changeset
    56
87bb1815460b initial checkin
ca
parents:
diff changeset
    57
installInLauncher
87bb1815460b initial checkin
ca
parents:
diff changeset
    58
    "add myself to the launcher menu
87bb1815460b initial checkin
ca
parents:
diff changeset
    59
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
    60
    |menuItem icon|
87bb1815460b initial checkin
ca
parents:
diff changeset
    61
87bb1815460b initial checkin
ca
parents:
diff changeset
    62
    NewLauncher isNil ifTrue:[^ self].
87bb1815460b initial checkin
ca
parents:
diff changeset
    63
87bb1815460b initial checkin
ca
parents:
diff changeset
    64
    icon := ToolbarIconLibrary inspectLocals20x20Icon magnifiedTo:28@28.
87bb1815460b initial checkin
ca
parents:
diff changeset
    65
87bb1815460b initial checkin
ca
parents:
diff changeset
    66
    menuItem := MenuItem new 
87bb1815460b initial checkin
ca
parents:
diff changeset
    67
                    label: 'View Inspector';
87bb1815460b initial checkin
ca
parents:
diff changeset
    68
                    value: [ ViewTreeApplication open];
87bb1815460b initial checkin
ca
parents:
diff changeset
    69
                    isButton: true;
87bb1815460b initial checkin
ca
parents:
diff changeset
    70
                    icon: icon;
87bb1815460b initial checkin
ca
parents:
diff changeset
    71
                    nameKey: #viewInspect.
87bb1815460b initial checkin
ca
parents:
diff changeset
    72
87bb1815460b initial checkin
ca
parents:
diff changeset
    73
    menuItem startGroup:#right.
87bb1815460b initial checkin
ca
parents:
diff changeset
    74
    NewLauncher addMenuItem:menuItem in:'toolbar'
87bb1815460b initial checkin
ca
parents:
diff changeset
    75
                   position:#( #before #help)
87bb1815460b initial checkin
ca
parents:
diff changeset
    76
                      space:false.
87bb1815460b initial checkin
ca
parents:
diff changeset
    77
87bb1815460b initial checkin
ca
parents:
diff changeset
    78
"
87bb1815460b initial checkin
ca
parents:
diff changeset
    79
self installInLauncher
87bb1815460b initial checkin
ca
parents:
diff changeset
    80
self removeFromLauncher
87bb1815460b initial checkin
ca
parents:
diff changeset
    81
"
87bb1815460b initial checkin
ca
parents:
diff changeset
    82
!
87bb1815460b initial checkin
ca
parents:
diff changeset
    83
87bb1815460b initial checkin
ca
parents:
diff changeset
    84
postAutoload
87bb1815460b initial checkin
ca
parents:
diff changeset
    85
    "add myself to the launcher menu
87bb1815460b initial checkin
ca
parents:
diff changeset
    86
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
    87
    self installInLauncher.
87bb1815460b initial checkin
ca
parents:
diff changeset
    88
"
87bb1815460b initial checkin
ca
parents:
diff changeset
    89
self installInLauncher
87bb1815460b initial checkin
ca
parents:
diff changeset
    90
self removeFromLauncher
87bb1815460b initial checkin
ca
parents:
diff changeset
    91
"
87bb1815460b initial checkin
ca
parents:
diff changeset
    92
!
87bb1815460b initial checkin
ca
parents:
diff changeset
    93
87bb1815460b initial checkin
ca
parents:
diff changeset
    94
removeFromLauncher
87bb1815460b initial checkin
ca
parents:
diff changeset
    95
    "remove myself from the launcher menu
87bb1815460b initial checkin
ca
parents:
diff changeset
    96
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
    97
    NewLauncher isNil ifTrue:[^ self].
87bb1815460b initial checkin
ca
parents:
diff changeset
    98
    NewLauncher removeUserTool:#viewInspect
87bb1815460b initial checkin
ca
parents:
diff changeset
    99
87bb1815460b initial checkin
ca
parents:
diff changeset
   100
"
87bb1815460b initial checkin
ca
parents:
diff changeset
   101
self installInLauncher
87bb1815460b initial checkin
ca
parents:
diff changeset
   102
self removeFromLauncher
87bb1815460b initial checkin
ca
parents:
diff changeset
   103
"
87bb1815460b initial checkin
ca
parents:
diff changeset
   104
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   105
87bb1815460b initial checkin
ca
parents:
diff changeset
   106
unload
87bb1815460b initial checkin
ca
parents:
diff changeset
   107
    "class is about to be unloaded - remove myself from the launcher menu
87bb1815460b initial checkin
ca
parents:
diff changeset
   108
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   109
    self removeFromLauncher.
87bb1815460b initial checkin
ca
parents:
diff changeset
   110
    super unload.
87bb1815460b initial checkin
ca
parents:
diff changeset
   111
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
   112
87bb1815460b initial checkin
ca
parents:
diff changeset
   113
!ViewTreeApplication class methodsFor:'interface specs'!
87bb1815460b initial checkin
ca
parents:
diff changeset
   114
87bb1815460b initial checkin
ca
parents:
diff changeset
   115
windowSpec
87bb1815460b initial checkin
ca
parents:
diff changeset
   116
    "This resource specification was automatically generated
87bb1815460b initial checkin
ca
parents:
diff changeset
   117
     by the UIPainter of ST/X."
87bb1815460b initial checkin
ca
parents:
diff changeset
   118
87bb1815460b initial checkin
ca
parents:
diff changeset
   119
    "Do not manually edit this!! If it is corrupted,
87bb1815460b initial checkin
ca
parents:
diff changeset
   120
     the UIPainter may not be able to read the specification."
87bb1815460b initial checkin
ca
parents:
diff changeset
   121
87bb1815460b initial checkin
ca
parents:
diff changeset
   122
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   123
     UIPainter new openOnClass:ViewTreeApplication andSelector:#windowSpec
87bb1815460b initial checkin
ca
parents:
diff changeset
   124
     ViewTreeApplication new openInterface:#windowSpec
87bb1815460b initial checkin
ca
parents:
diff changeset
   125
     ViewTreeApplication open
87bb1815460b initial checkin
ca
parents:
diff changeset
   126
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   127
87bb1815460b initial checkin
ca
parents:
diff changeset
   128
    <resource: #canvas>
87bb1815460b initial checkin
ca
parents:
diff changeset
   129
87bb1815460b initial checkin
ca
parents:
diff changeset
   130
    ^ 
87bb1815460b initial checkin
ca
parents:
diff changeset
   131
     #(FullSpec
87bb1815460b initial checkin
ca
parents:
diff changeset
   132
        name: windowSpec
87bb1815460b initial checkin
ca
parents:
diff changeset
   133
        window: 
87bb1815460b initial checkin
ca
parents:
diff changeset
   134
       (WindowSpec
87bb1815460b initial checkin
ca
parents:
diff changeset
   135
          label: 'ViewTreeInspector'
87bb1815460b initial checkin
ca
parents:
diff changeset
   136
          name: 'ViewTreeInspector'
87bb1815460b initial checkin
ca
parents:
diff changeset
   137
          min: (Point 10 10)
87bb1815460b initial checkin
ca
parents:
diff changeset
   138
          max: (Point 1024 9999)
87bb1815460b initial checkin
ca
parents:
diff changeset
   139
          bounds: (Rectangle 0 0 325 654)
87bb1815460b initial checkin
ca
parents:
diff changeset
   140
          menu: menu
87bb1815460b initial checkin
ca
parents:
diff changeset
   141
        )
87bb1815460b initial checkin
ca
parents:
diff changeset
   142
        component: 
87bb1815460b initial checkin
ca
parents:
diff changeset
   143
       (SpecCollection
87bb1815460b initial checkin
ca
parents:
diff changeset
   144
          collection: (
87bb1815460b initial checkin
ca
parents:
diff changeset
   145
           (MenuPanelSpec
87bb1815460b initial checkin
ca
parents:
diff changeset
   146
              name: 'toolbarMenu'
87bb1815460b initial checkin
ca
parents:
diff changeset
   147
              layout: (LayoutFrame 0 0.0 0 0 0 1.0 32 0)
87bb1815460b initial checkin
ca
parents:
diff changeset
   148
              menu: toolbarMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   149
              textDefault: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   150
            )
87bb1815460b initial checkin
ca
parents:
diff changeset
   151
           (HierarchicalListViewSpec
87bb1815460b initial checkin
ca
parents:
diff changeset
   152
              name: 'List'
87bb1815460b initial checkin
ca
parents:
diff changeset
   153
              layout: (LayoutFrame 0 0.0 32 0.0 0 1.0 -24 1.0)
87bb1815460b initial checkin
ca
parents:
diff changeset
   154
              level: 1
87bb1815460b initial checkin
ca
parents:
diff changeset
   155
              model: model
87bb1815460b initial checkin
ca
parents:
diff changeset
   156
              menu: middleButtonMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   157
              hasHorizontalScrollBar: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   158
              hasVerticalScrollBar: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   159
              miniScrollerHorizontal: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   160
              miniScrollerVertical: false
87bb1815460b initial checkin
ca
parents:
diff changeset
   161
              backgroundColor: (Color 49.999237048905 49.999237048905 100.0)
87bb1815460b initial checkin
ca
parents:
diff changeset
   162
              listModel: listOfItems
87bb1815460b initial checkin
ca
parents:
diff changeset
   163
              multipleSelectOk: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   164
              useIndex: false
87bb1815460b initial checkin
ca
parents:
diff changeset
   165
              highlightMode: label
87bb1815460b initial checkin
ca
parents:
diff changeset
   166
              doubleClickSelector: doubleClicked:
87bb1815460b initial checkin
ca
parents:
diff changeset
   167
              valueChangeSelector: selectionChanged
87bb1815460b initial checkin
ca
parents:
diff changeset
   168
              showLeftIndicators: false
87bb1815460b initial checkin
ca
parents:
diff changeset
   169
              indicatorSelector: indicatorClicked:
87bb1815460b initial checkin
ca
parents:
diff changeset
   170
              useDefaultIcons: false
87bb1815460b initial checkin
ca
parents:
diff changeset
   171
              postBuildCallback: postBuildTree:
87bb1815460b initial checkin
ca
parents:
diff changeset
   172
            )
87bb1815460b initial checkin
ca
parents:
diff changeset
   173
           (LabelSpec
87bb1815460b initial checkin
ca
parents:
diff changeset
   174
              name: 'infoChannel'
87bb1815460b initial checkin
ca
parents:
diff changeset
   175
              layout: (LayoutFrame 0 0.0 -24 1.0 0 1.0 0 1.0)
87bb1815460b initial checkin
ca
parents:
diff changeset
   176
              level: 1
87bb1815460b initial checkin
ca
parents:
diff changeset
   177
              translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   178
              labelChannel: infoChannel
87bb1815460b initial checkin
ca
parents:
diff changeset
   179
              adjust: left
87bb1815460b initial checkin
ca
parents:
diff changeset
   180
            )
87bb1815460b initial checkin
ca
parents:
diff changeset
   181
           )
87bb1815460b initial checkin
ca
parents:
diff changeset
   182
         
87bb1815460b initial checkin
ca
parents:
diff changeset
   183
        )
87bb1815460b initial checkin
ca
parents:
diff changeset
   184
      )
87bb1815460b initial checkin
ca
parents:
diff changeset
   185
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
   186
87bb1815460b initial checkin
ca
parents:
diff changeset
   187
!ViewTreeApplication class methodsFor:'menu specs'!
87bb1815460b initial checkin
ca
parents:
diff changeset
   188
87bb1815460b initial checkin
ca
parents:
diff changeset
   189
menu
87bb1815460b initial checkin
ca
parents:
diff changeset
   190
    "This resource specification was automatically generated
87bb1815460b initial checkin
ca
parents:
diff changeset
   191
     by the MenuEditor of ST/X."
87bb1815460b initial checkin
ca
parents:
diff changeset
   192
87bb1815460b initial checkin
ca
parents:
diff changeset
   193
    "Do not manually edit this!! If it is corrupted,
87bb1815460b initial checkin
ca
parents:
diff changeset
   194
     the MenuEditor may not be able to read the specification."
87bb1815460b initial checkin
ca
parents:
diff changeset
   195
87bb1815460b initial checkin
ca
parents:
diff changeset
   196
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   197
     MenuEditor new openOnClass:ViewTreeApplication andSelector:#menu
87bb1815460b initial checkin
ca
parents:
diff changeset
   198
     (Menu new fromLiteralArrayEncoding:(ViewTreeApplication menu)) startUp
87bb1815460b initial checkin
ca
parents:
diff changeset
   199
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   200
87bb1815460b initial checkin
ca
parents:
diff changeset
   201
    <resource: #menu>
87bb1815460b initial checkin
ca
parents:
diff changeset
   202
87bb1815460b initial checkin
ca
parents:
diff changeset
   203
    ^ 
87bb1815460b initial checkin
ca
parents:
diff changeset
   204
     #(Menu
87bb1815460b initial checkin
ca
parents:
diff changeset
   205
        (
87bb1815460b initial checkin
ca
parents:
diff changeset
   206
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   207
            label: 'File'
87bb1815460b initial checkin
ca
parents:
diff changeset
   208
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   209
            submenu: 
87bb1815460b initial checkin
ca
parents:
diff changeset
   210
           (Menu
87bb1815460b initial checkin
ca
parents:
diff changeset
   211
              (
87bb1815460b initial checkin
ca
parents:
diff changeset
   212
               (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   213
                  label: 'Pick a View'
87bb1815460b initial checkin
ca
parents:
diff changeset
   214
                  itemValue: doPickViews
87bb1815460b initial checkin
ca
parents:
diff changeset
   215
                  translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   216
                )
87bb1815460b initial checkin
ca
parents:
diff changeset
   217
               (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   218
                  enabled: hasPickedView
87bb1815460b initial checkin
ca
parents:
diff changeset
   219
                  label: 'Release Picked View'
87bb1815460b initial checkin
ca
parents:
diff changeset
   220
                  itemValue: doUnpick
87bb1815460b initial checkin
ca
parents:
diff changeset
   221
                  translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   222
                )
87bb1815460b initial checkin
ca
parents:
diff changeset
   223
               (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   224
                  label: '-'
87bb1815460b initial checkin
ca
parents:
diff changeset
   225
                )
87bb1815460b initial checkin
ca
parents:
diff changeset
   226
               (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   227
                  label: 'Exit'
87bb1815460b initial checkin
ca
parents:
diff changeset
   228
                  itemValue: closeRequest
87bb1815460b initial checkin
ca
parents:
diff changeset
   229
                  translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   230
                )
87bb1815460b initial checkin
ca
parents:
diff changeset
   231
               )
87bb1815460b initial checkin
ca
parents:
diff changeset
   232
              nil
87bb1815460b initial checkin
ca
parents:
diff changeset
   233
              nil
87bb1815460b initial checkin
ca
parents:
diff changeset
   234
            )
87bb1815460b initial checkin
ca
parents:
diff changeset
   235
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   236
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   237
            label: ''
87bb1815460b initial checkin
ca
parents:
diff changeset
   238
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   239
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   240
            enabled: hasSingleSelectionHolder
87bb1815460b initial checkin
ca
parents:
diff changeset
   241
            label: 'Menu'
87bb1815460b initial checkin
ca
parents:
diff changeset
   242
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   243
            submenuChannel: middleButtonMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   244
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   245
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   246
            label: 'Components'
87bb1815460b initial checkin
ca
parents:
diff changeset
   247
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   248
            startGroup: right
87bb1815460b initial checkin
ca
parents:
diff changeset
   249
            submenuChannel: submenuComponents:
87bb1815460b initial checkin
ca
parents:
diff changeset
   250
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   251
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   252
            label: 'Applications'
87bb1815460b initial checkin
ca
parents:
diff changeset
   253
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   254
            submenuChannel: submenuApplications:
87bb1815460b initial checkin
ca
parents:
diff changeset
   255
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   256
         )
87bb1815460b initial checkin
ca
parents:
diff changeset
   257
        nil
87bb1815460b initial checkin
ca
parents:
diff changeset
   258
        nil
87bb1815460b initial checkin
ca
parents:
diff changeset
   259
      )
87bb1815460b initial checkin
ca
parents:
diff changeset
   260
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   261
87bb1815460b initial checkin
ca
parents:
diff changeset
   262
middleButtonMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   263
    "This resource specification was automatically generated
87bb1815460b initial checkin
ca
parents:
diff changeset
   264
     by the MenuEditor of ST/X."
87bb1815460b initial checkin
ca
parents:
diff changeset
   265
87bb1815460b initial checkin
ca
parents:
diff changeset
   266
    "Do not manually edit this!! If it is corrupted,
87bb1815460b initial checkin
ca
parents:
diff changeset
   267
     the MenuEditor may not be able to read the specification."
87bb1815460b initial checkin
ca
parents:
diff changeset
   268
87bb1815460b initial checkin
ca
parents:
diff changeset
   269
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   270
     MenuEditor new openOnClass:ViewTreeApplication andSelector:#middleButtonMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   271
     (Menu new fromLiteralArrayEncoding:(ViewTreeApplication middleButtonMenu)) startUp
87bb1815460b initial checkin
ca
parents:
diff changeset
   272
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   273
87bb1815460b initial checkin
ca
parents:
diff changeset
   274
    <resource: #menu>
87bb1815460b initial checkin
ca
parents:
diff changeset
   275
87bb1815460b initial checkin
ca
parents:
diff changeset
   276
    ^ 
87bb1815460b initial checkin
ca
parents:
diff changeset
   277
     #(Menu
87bb1815460b initial checkin
ca
parents:
diff changeset
   278
        (
87bb1815460b initial checkin
ca
parents:
diff changeset
   279
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   280
            label: 'Geometry'
87bb1815460b initial checkin
ca
parents:
diff changeset
   281
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   282
            submenuChannel: submenuGeometry:
87bb1815460b initial checkin
ca
parents:
diff changeset
   283
            keepLinkedMenu: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   284
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   285
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   286
            label: 'Interface'
87bb1815460b initial checkin
ca
parents:
diff changeset
   287
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   288
            submenuChannel: submenuInterface:
87bb1815460b initial checkin
ca
parents:
diff changeset
   289
            keepLinkedMenu: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   290
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   291
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   292
            label: 'Visibility'
87bb1815460b initial checkin
ca
parents:
diff changeset
   293
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   294
            submenuChannel: submenuVisibility:
87bb1815460b initial checkin
ca
parents:
diff changeset
   295
            keepLinkedMenu: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   296
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   297
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   298
            label: '-'
87bb1815460b initial checkin
ca
parents:
diff changeset
   299
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   300
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   301
            label: 'Browse View Class'
87bb1815460b initial checkin
ca
parents:
diff changeset
   302
            itemValue: doBrowse:
87bb1815460b initial checkin
ca
parents:
diff changeset
   303
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   304
            argument: view
87bb1815460b initial checkin
ca
parents:
diff changeset
   305
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   306
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   307
            label: 'Browse Model Class'
87bb1815460b initial checkin
ca
parents:
diff changeset
   308
            itemValue: doBrowse:
87bb1815460b initial checkin
ca
parents:
diff changeset
   309
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   310
            isVisible: hasModel
87bb1815460b initial checkin
ca
parents:
diff changeset
   311
            argument: model
87bb1815460b initial checkin
ca
parents:
diff changeset
   312
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   313
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   314
            label: 'Browse Application Class'
87bb1815460b initial checkin
ca
parents:
diff changeset
   315
            itemValue: doBrowse:
87bb1815460b initial checkin
ca
parents:
diff changeset
   316
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   317
            isVisible: hasApplication
87bb1815460b initial checkin
ca
parents:
diff changeset
   318
            argument: application
87bb1815460b initial checkin
ca
parents:
diff changeset
   319
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   320
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   321
            label: 'Browse Controller Class'
87bb1815460b initial checkin
ca
parents:
diff changeset
   322
            itemValue: doBrowse:
87bb1815460b initial checkin
ca
parents:
diff changeset
   323
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   324
            isVisible: hasController
87bb1815460b initial checkin
ca
parents:
diff changeset
   325
            argument: controller
87bb1815460b initial checkin
ca
parents:
diff changeset
   326
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   327
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   328
            label: '-'
87bb1815460b initial checkin
ca
parents:
diff changeset
   329
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   330
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   331
            label: 'Inspect View'
87bb1815460b initial checkin
ca
parents:
diff changeset
   332
            itemValue: doInspect:
87bb1815460b initial checkin
ca
parents:
diff changeset
   333
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   334
            argument: view
87bb1815460b initial checkin
ca
parents:
diff changeset
   335
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   336
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   337
            label: 'Inspect Window Group'
87bb1815460b initial checkin
ca
parents:
diff changeset
   338
            itemValue: doInspect:
87bb1815460b initial checkin
ca
parents:
diff changeset
   339
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   340
            argument: group
87bb1815460b initial checkin
ca
parents:
diff changeset
   341
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   342
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   343
            label: 'Inspect Model'
87bb1815460b initial checkin
ca
parents:
diff changeset
   344
            itemValue: doInspect:
87bb1815460b initial checkin
ca
parents:
diff changeset
   345
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   346
            isVisible: hasModel
87bb1815460b initial checkin
ca
parents:
diff changeset
   347
            argument: model
87bb1815460b initial checkin
ca
parents:
diff changeset
   348
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   349
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   350
            label: 'Inspect Application'
87bb1815460b initial checkin
ca
parents:
diff changeset
   351
            itemValue: doInspect:
87bb1815460b initial checkin
ca
parents:
diff changeset
   352
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   353
            isVisible: hasApplication
87bb1815460b initial checkin
ca
parents:
diff changeset
   354
            argument: application
87bb1815460b initial checkin
ca
parents:
diff changeset
   355
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   356
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   357
            label: 'Inspect Controller'
87bb1815460b initial checkin
ca
parents:
diff changeset
   358
            itemValue: doInspect:
87bb1815460b initial checkin
ca
parents:
diff changeset
   359
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   360
            isVisible: hasController
87bb1815460b initial checkin
ca
parents:
diff changeset
   361
            argument: controller
87bb1815460b initial checkin
ca
parents:
diff changeset
   362
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   363
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   364
            label: '-'
87bb1815460b initial checkin
ca
parents:
diff changeset
   365
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   366
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   367
            label: 'Flash'
87bb1815460b initial checkin
ca
parents:
diff changeset
   368
            itemValue: doFlash
87bb1815460b initial checkin
ca
parents:
diff changeset
   369
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   370
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   371
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   372
            label: '-'
87bb1815460b initial checkin
ca
parents:
diff changeset
   373
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   374
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   375
            label: 'Destroy'
87bb1815460b initial checkin
ca
parents:
diff changeset
   376
            itemValue: doDestroy
87bb1815460b initial checkin
ca
parents:
diff changeset
   377
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   378
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   379
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   380
            label: '-'
87bb1815460b initial checkin
ca
parents:
diff changeset
   381
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   382
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   383
            label: 'Instance Variables'
87bb1815460b initial checkin
ca
parents:
diff changeset
   384
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   385
            submenuChannel: submenuInspector:
87bb1815460b initial checkin
ca
parents:
diff changeset
   386
            keepLinkedMenu: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   387
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   388
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   389
            label: '='
87bb1815460b initial checkin
ca
parents:
diff changeset
   390
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   391
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   392
            label: ''
87bb1815460b initial checkin
ca
parents:
diff changeset
   393
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   394
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   395
            enabled: selectedComponentHasChildren
87bb1815460b initial checkin
ca
parents:
diff changeset
   396
            label: 'Applications'
87bb1815460b initial checkin
ca
parents:
diff changeset
   397
            nameKey: single
87bb1815460b initial checkin
ca
parents:
diff changeset
   398
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   399
            submenuChannel: submenuApplications:
87bb1815460b initial checkin
ca
parents:
diff changeset
   400
            keepLinkedMenu: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   401
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   402
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   403
            enabled: selectedComponentHasChildren
87bb1815460b initial checkin
ca
parents:
diff changeset
   404
            label: 'Components'
87bb1815460b initial checkin
ca
parents:
diff changeset
   405
            nameKey: single
87bb1815460b initial checkin
ca
parents:
diff changeset
   406
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   407
            submenuChannel: submenuComponents:
87bb1815460b initial checkin
ca
parents:
diff changeset
   408
            keepLinkedMenu: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   409
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   410
         )
87bb1815460b initial checkin
ca
parents:
diff changeset
   411
        nil
87bb1815460b initial checkin
ca
parents:
diff changeset
   412
        nil
87bb1815460b initial checkin
ca
parents:
diff changeset
   413
      )
87bb1815460b initial checkin
ca
parents:
diff changeset
   414
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   415
87bb1815460b initial checkin
ca
parents:
diff changeset
   416
toolbarMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   417
    "This resource specification was automatically generated
87bb1815460b initial checkin
ca
parents:
diff changeset
   418
     by the MenuEditor of ST/X."
87bb1815460b initial checkin
ca
parents:
diff changeset
   419
87bb1815460b initial checkin
ca
parents:
diff changeset
   420
    "Do not manually edit this!! If it is corrupted,
87bb1815460b initial checkin
ca
parents:
diff changeset
   421
     the MenuEditor may not be able to read the specification."
87bb1815460b initial checkin
ca
parents:
diff changeset
   422
87bb1815460b initial checkin
ca
parents:
diff changeset
   423
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   424
     MenuEditor new openOnClass:ViewTreeApplication andSelector:#toolbarMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   425
     (Menu new fromLiteralArrayEncoding:(ViewTreeApplication toolbarMenu)) startUp
87bb1815460b initial checkin
ca
parents:
diff changeset
   426
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   427
87bb1815460b initial checkin
ca
parents:
diff changeset
   428
    <resource: #menu>
87bb1815460b initial checkin
ca
parents:
diff changeset
   429
87bb1815460b initial checkin
ca
parents:
diff changeset
   430
    ^ 
87bb1815460b initial checkin
ca
parents:
diff changeset
   431
     #(Menu
87bb1815460b initial checkin
ca
parents:
diff changeset
   432
        (
87bb1815460b initial checkin
ca
parents:
diff changeset
   433
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   434
            label: 'Test Mode'
87bb1815460b initial checkin
ca
parents:
diff changeset
   435
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   436
            indication: testModeChannel
87bb1815460b initial checkin
ca
parents:
diff changeset
   437
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   438
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   439
            enabled: testModeChannel
87bb1815460b initial checkin
ca
parents:
diff changeset
   440
            label: 'Follow Focus'
87bb1815460b initial checkin
ca
parents:
diff changeset
   441
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   442
            indication: followFocusChannel
87bb1815460b initial checkin
ca
parents:
diff changeset
   443
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   444
         (MenuItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   445
            label: 'Select On Click'
87bb1815460b initial checkin
ca
parents:
diff changeset
   446
            translateLabel: true
87bb1815460b initial checkin
ca
parents:
diff changeset
   447
            indication: selectOnClickHolder
87bb1815460b initial checkin
ca
parents:
diff changeset
   448
          )
87bb1815460b initial checkin
ca
parents:
diff changeset
   449
         )
87bb1815460b initial checkin
ca
parents:
diff changeset
   450
        nil
87bb1815460b initial checkin
ca
parents:
diff changeset
   451
        nil
87bb1815460b initial checkin
ca
parents:
diff changeset
   452
      )
87bb1815460b initial checkin
ca
parents:
diff changeset
   453
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
   454
87bb1815460b initial checkin
ca
parents:
diff changeset
   455
!ViewTreeApplication methodsFor:'actions'!
87bb1815460b initial checkin
ca
parents:
diff changeset
   456
87bb1815460b initial checkin
ca
parents:
diff changeset
   457
doubleClicked:anIndex
87bb1815460b initial checkin
ca
parents:
diff changeset
   458
    self doInspect:#view.
87bb1815460b initial checkin
ca
parents:
diff changeset
   459
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   460
87bb1815460b initial checkin
ca
parents:
diff changeset
   461
indicatorClicked:anIndex
87bb1815460b initial checkin
ca
parents:
diff changeset
   462
    |item sensor|
87bb1815460b initial checkin
ca
parents:
diff changeset
   463
87bb1815460b initial checkin
ca
parents:
diff changeset
   464
    item := model listOfItems at:anIndex ifAbsent:nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
   465
87bb1815460b initial checkin
ca
parents:
diff changeset
   466
    item notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   467
        (     (sensor := self window sensor) notNil
87bb1815460b initial checkin
ca
parents:
diff changeset
   468
         and:[(sensor ctrlDown or:[sensor shiftDown])]
87bb1815460b initial checkin
ca
parents:
diff changeset
   469
        ) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   470
            item recursiveToggleExpand
87bb1815460b initial checkin
ca
parents:
diff changeset
   471
        ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   472
            item toggleExpand
87bb1815460b initial checkin
ca
parents:
diff changeset
   473
        ]
87bb1815460b initial checkin
ca
parents:
diff changeset
   474
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   475
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
   476
87bb1815460b initial checkin
ca
parents:
diff changeset
   477
!ViewTreeApplication methodsFor:'aspects'!
87bb1815460b initial checkin
ca
parents:
diff changeset
   478
87bb1815460b initial checkin
ca
parents:
diff changeset
   479
followFocusChannel
87bb1815460b initial checkin
ca
parents:
diff changeset
   480
    "boolean holder, which indicates whether selection changed dependend on the focus view
87bb1815460b initial checkin
ca
parents:
diff changeset
   481
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   482
    ^ followFocusChannel
87bb1815460b initial checkin
ca
parents:
diff changeset
   483
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   484
87bb1815460b initial checkin
ca
parents:
diff changeset
   485
hasSingleSelectionHolder
87bb1815460b initial checkin
ca
parents:
diff changeset
   486
    "boolean holder, true if one item is selected
87bb1815460b initial checkin
ca
parents:
diff changeset
   487
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   488
    ^ hasSingleSelectionHolder
87bb1815460b initial checkin
ca
parents:
diff changeset
   489
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   490
87bb1815460b initial checkin
ca
parents:
diff changeset
   491
infoChannel
87bb1815460b initial checkin
ca
parents:
diff changeset
   492
    "channel, which keeps a printable information
87bb1815460b initial checkin
ca
parents:
diff changeset
   493
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   494
    ^ infoChannel
87bb1815460b initial checkin
ca
parents:
diff changeset
   495
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   496
87bb1815460b initial checkin
ca
parents:
diff changeset
   497
listOfItems
87bb1815460b initial checkin
ca
parents:
diff changeset
   498
    "returns the hierarchical list of items
87bb1815460b initial checkin
ca
parents:
diff changeset
   499
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   500
    ^ model listOfItems
87bb1815460b initial checkin
ca
parents:
diff changeset
   501
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   502
87bb1815460b initial checkin
ca
parents:
diff changeset
   503
model
87bb1815460b initial checkin
ca
parents:
diff changeset
   504
    "returns my selection model, a ViewTreeModel
87bb1815460b initial checkin
ca
parents:
diff changeset
   505
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   506
    ^ model
87bb1815460b initial checkin
ca
parents:
diff changeset
   507
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   508
87bb1815460b initial checkin
ca
parents:
diff changeset
   509
selectOnClickHolder
87bb1815460b initial checkin
ca
parents:
diff changeset
   510
    "boolean holder, which indicates whether the selection will change on click
87bb1815460b initial checkin
ca
parents:
diff changeset
   511
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   512
    ^ model selectOnClickHolder
87bb1815460b initial checkin
ca
parents:
diff changeset
   513
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   514
87bb1815460b initial checkin
ca
parents:
diff changeset
   515
testModeChannel
87bb1815460b initial checkin
ca
parents:
diff changeset
   516
    "boolean holder, which indicates whether running in test or edit mode (eat input events)
87bb1815460b initial checkin
ca
parents:
diff changeset
   517
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   518
    ^ testModeChannel
87bb1815460b initial checkin
ca
parents:
diff changeset
   519
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
   520
87bb1815460b initial checkin
ca
parents:
diff changeset
   521
!ViewTreeApplication methodsFor:'change & update'!
87bb1815460b initial checkin
ca
parents:
diff changeset
   522
87bb1815460b initial checkin
ca
parents:
diff changeset
   523
selectionChanged
87bb1815460b initial checkin
ca
parents:
diff changeset
   524
    "called if the selection changed
87bb1815460b initial checkin
ca
parents:
diff changeset
   525
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   526
    |info view item|
87bb1815460b initial checkin
ca
parents:
diff changeset
   527
87bb1815460b initial checkin
ca
parents:
diff changeset
   528
    item := model selectedItem.
87bb1815460b initial checkin
ca
parents:
diff changeset
   529
87bb1815460b initial checkin
ca
parents:
diff changeset
   530
    item notNil ifTrue:[ |state|
87bb1815460b initial checkin
ca
parents:
diff changeset
   531
        view := item widget.
87bb1815460b initial checkin
ca
parents:
diff changeset
   532
87bb1815460b initial checkin
ca
parents:
diff changeset
   533
        view id isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   534
            state := 'no ID'.
87bb1815460b initial checkin
ca
parents:
diff changeset
   535
        ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   536
            view shown ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   537
                state := 'visible'.
87bb1815460b initial checkin
ca
parents:
diff changeset
   538
            ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   539
                state := 'invisible'
87bb1815460b initial checkin
ca
parents:
diff changeset
   540
            ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   541
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   542
        info := '%1 [%2] - %3' bindWith:(view class name)
87bb1815460b initial checkin
ca
parents:
diff changeset
   543
                                   with:(view name ? '') with:state allBold.
87bb1815460b initial checkin
ca
parents:
diff changeset
   544
87bb1815460b initial checkin
ca
parents:
diff changeset
   545
    ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   546
        info := ''
87bb1815460b initial checkin
ca
parents:
diff changeset
   547
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   548
    hasSingleSelectionHolder value:(view notNil).
87bb1815460b initial checkin
ca
parents:
diff changeset
   549
    infoChannel value:info.
87bb1815460b initial checkin
ca
parents:
diff changeset
   550
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   551
87bb1815460b initial checkin
ca
parents:
diff changeset
   552
update:something with:someArgument from:aModel
87bb1815460b initial checkin
ca
parents:
diff changeset
   553
87bb1815460b initial checkin
ca
parents:
diff changeset
   554
    aModel == testModeChannel ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   555
        model testMode:(testModeChannel value).
87bb1815460b initial checkin
ca
parents:
diff changeset
   556
        ^ self
87bb1815460b initial checkin
ca
parents:
diff changeset
   557
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   558
    super update:something with:someArgument from:aModel.
87bb1815460b initial checkin
ca
parents:
diff changeset
   559
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
   560
87bb1815460b initial checkin
ca
parents:
diff changeset
   561
!ViewTreeApplication methodsFor:'event processing'!
87bb1815460b initial checkin
ca
parents:
diff changeset
   562
87bb1815460b initial checkin
ca
parents:
diff changeset
   563
processButtonMotionEvent:ev
87bb1815460b initial checkin
ca
parents:
diff changeset
   564
    "handle a button motion event
87bb1815460b initial checkin
ca
parents:
diff changeset
   565
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   566
    |click|
87bb1815460b initial checkin
ca
parents:
diff changeset
   567
87bb1815460b initial checkin
ca
parents:
diff changeset
   568
    motionAction notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   569
        click := ev view sensor mousePoint.
87bb1815460b initial checkin
ca
parents:
diff changeset
   570
87bb1815460b initial checkin
ca
parents:
diff changeset
   571
        click = clickedPoint ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   572
            (clickedItem isNil or:[(click dist:clickedPoint) > 5.0]) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   573
                motionAction value:click
87bb1815460b initial checkin
ca
parents:
diff changeset
   574
            ]
87bb1815460b initial checkin
ca
parents:
diff changeset
   575
        ]
87bb1815460b initial checkin
ca
parents:
diff changeset
   576
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   577
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   578
87bb1815460b initial checkin
ca
parents:
diff changeset
   579
processButtonPressEvent:ev
87bb1815460b initial checkin
ca
parents:
diff changeset
   580
    "handle a buttopn press event
87bb1815460b initial checkin
ca
parents:
diff changeset
   581
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   582
    |sensor lastRectangle|
87bb1815460b initial checkin
ca
parents:
diff changeset
   583
87bb1815460b initial checkin
ca
parents:
diff changeset
   584
    sensor      := model rootView sensor.
87bb1815460b initial checkin
ca
parents:
diff changeset
   585
    clickedItem := model listOfItems detectItemRespondsToView:(ev view).
87bb1815460b initial checkin
ca
parents:
diff changeset
   586
87bb1815460b initial checkin
ca
parents:
diff changeset
   587
    (sensor ctrlDown or:[sensor shiftDown]) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   588
        clickedItem notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   589
            self selectOnClickHolder value ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   590
                model toggleSelectItem:clickedItem
87bb1815460b initial checkin
ca
parents:
diff changeset
   591
            ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   592
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   593
        clickedItem := motionAction := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
   594
    ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   595
        clickedPoint  := ev view sensor mousePoint.
87bb1815460b initial checkin
ca
parents:
diff changeset
   596
        lastRectangle := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
   597
87bb1815460b initial checkin
ca
parents:
diff changeset
   598
        motionAction :=[:p| |rootView|
87bb1815460b initial checkin
ca
parents:
diff changeset
   599
            rootView    := model rootView device rootView.
87bb1815460b initial checkin
ca
parents:
diff changeset
   600
            clickedItem := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
   601
87bb1815460b initial checkin
ca
parents:
diff changeset
   602
            rootView xoring:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   603
                lastRectangle notNil ifTrue:[ rootView displayRectangle:lastRectangle ]
87bb1815460b initial checkin
ca
parents:
diff changeset
   604
                                    ifFalse:[ rootView clippedByChildren:false ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   605
87bb1815460b initial checkin
ca
parents:
diff changeset
   606
                p isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   607
                    rootView clippedByChildren:true.
87bb1815460b initial checkin
ca
parents:
diff changeset
   608
                    motionAction := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
   609
                ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   610
                    lastRectangle := Rectangle origin:(clickedPoint min:p) corner:(clickedPoint max:p).
87bb1815460b initial checkin
ca
parents:
diff changeset
   611
                    rootView displayRectangle:lastRectangle.
87bb1815460b initial checkin
ca
parents:
diff changeset
   612
                ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   613
                rootView flush.
87bb1815460b initial checkin
ca
parents:
diff changeset
   614
            ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   615
            lastRectangle
87bb1815460b initial checkin
ca
parents:
diff changeset
   616
        ]
87bb1815460b initial checkin
ca
parents:
diff changeset
   617
    ]
87bb1815460b initial checkin
ca
parents:
diff changeset
   618
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   619
87bb1815460b initial checkin
ca
parents:
diff changeset
   620
processButtonReleaseEvent:anEvent
87bb1815460b initial checkin
ca
parents:
diff changeset
   621
    "handle a button release event
87bb1815460b initial checkin
ca
parents:
diff changeset
   622
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   623
    |rootView rectangle newItems widget origin|
87bb1815460b initial checkin
ca
parents:
diff changeset
   624
87bb1815460b initial checkin
ca
parents:
diff changeset
   625
    motionAction isNil ifTrue:[ ^ self ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   626
    clickedItem notNil ifTrue:[ ^ model selectItem:clickedItem ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   627
87bb1815460b initial checkin
ca
parents:
diff changeset
   628
    (rectangle := motionAction value:nil) notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   629
        rootView  := model rootView device rootView.
87bb1815460b initial checkin
ca
parents:
diff changeset
   630
        newItems := OrderedCollection new.
87bb1815460b initial checkin
ca
parents:
diff changeset
   631
87bb1815460b initial checkin
ca
parents:
diff changeset
   632
        model rootItem recursiveDo:[:anItem|
87bb1815460b initial checkin
ca
parents:
diff changeset
   633
            widget := anItem widget.
87bb1815460b initial checkin
ca
parents:
diff changeset
   634
            origin := widget originRelativeTo:rootView.
87bb1815460b initial checkin
ca
parents:
diff changeset
   635
87bb1815460b initial checkin
ca
parents:
diff changeset
   636
            (rectangle containsRect:(Rectangle origin:origin extent:(widget extent))) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   637
                newItems add:anItem.
87bb1815460b initial checkin
ca
parents:
diff changeset
   638
            ]
87bb1815460b initial checkin
ca
parents:
diff changeset
   639
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   640
        model value:newItems.
87bb1815460b initial checkin
ca
parents:
diff changeset
   641
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   642
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   643
87bb1815460b initial checkin
ca
parents:
diff changeset
   644
processEvent:anEvent
87bb1815460b initial checkin
ca
parents:
diff changeset
   645
    "process an event
87bb1815460b initial checkin
ca
parents:
diff changeset
   646
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   647
    |button menu|
87bb1815460b initial checkin
ca
parents:
diff changeset
   648
87bb1815460b initial checkin
ca
parents:
diff changeset
   649
    anEvent isKeyPressEvent ifTrue:[ ^ self processKeyPressEvent:anEvent ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   650
    anEvent isButtonEvent  ifFalse:[ ^ self ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   651
87bb1815460b initial checkin
ca
parents:
diff changeset
   652
    button := anEvent button.
87bb1815460b initial checkin
ca
parents:
diff changeset
   653
87bb1815460b initial checkin
ca
parents:
diff changeset
   654
    (button == 2 or:[button == #menu]) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   655
        motionAction isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   656
            anEvent isButtonPressEvent ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   657
                self selectOnClickHolder value ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   658
                    menu := self middleButtonMenu value.
87bb1815460b initial checkin
ca
parents:
diff changeset
   659
                    menu notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   660
                        menu := MenuPanel menu:(Menu new fromLiteralArrayEncoding:menu)
87bb1815460b initial checkin
ca
parents:
diff changeset
   661
                                      receiver:self.
87bb1815460b initial checkin
ca
parents:
diff changeset
   662
                        menu startUp.
87bb1815460b initial checkin
ca
parents:
diff changeset
   663
                    ]
87bb1815460b initial checkin
ca
parents:
diff changeset
   664
                ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   665
            ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   666
            clickedItem := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
   667
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   668
        ^ self
87bb1815460b initial checkin
ca
parents:
diff changeset
   669
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   670
87bb1815460b initial checkin
ca
parents:
diff changeset
   671
    anEvent isButtonPressEvent  ifTrue:[ ^ self processButtonPressEvent:anEvent  ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   672
    anEvent isButtonMotionEvent ifTrue:[ ^ self processButtonMotionEvent:anEvent ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   673
87bb1815460b initial checkin
ca
parents:
diff changeset
   674
    anEvent isButtonReleaseEvent ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   675
        self selectOnClickHolder value ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   676
            self processButtonReleaseEvent:anEvent
87bb1815460b initial checkin
ca
parents:
diff changeset
   677
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   678
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   679
    clickedItem := motionAction := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
   680
87bb1815460b initial checkin
ca
parents:
diff changeset
   681
    anEvent type == #'buttonMultiPress:x:y:' ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   682
        self selectOnClickHolder value ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   683
            self doInspect:#view.
87bb1815460b initial checkin
ca
parents:
diff changeset
   684
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   685
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   686
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   687
87bb1815460b initial checkin
ca
parents:
diff changeset
   688
processKeyPressEvent:anEvent
87bb1815460b initial checkin
ca
parents:
diff changeset
   689
    "process an key press event
87bb1815460b initial checkin
ca
parents:
diff changeset
   690
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   691
    |item prnt idx key max next|
87bb1815460b initial checkin
ca
parents:
diff changeset
   692
87bb1815460b initial checkin
ca
parents:
diff changeset
   693
    key := anEvent key.
87bb1815460b initial checkin
ca
parents:
diff changeset
   694
    key isSymbol ifFalse:[^ self].
87bb1815460b initial checkin
ca
parents:
diff changeset
   695
87bb1815460b initial checkin
ca
parents:
diff changeset
   696
    key == #Delete    ifTrue:[ ^ self doDestroy ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   697
    key == #InspectIt ifTrue:[ ^ self doInspect:#view ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   698
87bb1815460b initial checkin
ca
parents:
diff changeset
   699
    (   key == #CursorUp
87bb1815460b initial checkin
ca
parents:
diff changeset
   700
    or:[key == #CursorDown
87bb1815460b initial checkin
ca
parents:
diff changeset
   701
    or:[key == #CursorLeft
87bb1815460b initial checkin
ca
parents:
diff changeset
   702
    or:[key == #CursorRight]]]
87bb1815460b initial checkin
ca
parents:
diff changeset
   703
    ) ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   704
        ^ self
87bb1815460b initial checkin
ca
parents:
diff changeset
   705
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   706
    item := model selectedItem.
87bb1815460b initial checkin
ca
parents:
diff changeset
   707
87bb1815460b initial checkin
ca
parents:
diff changeset
   708
    item isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   709
        ^ model selectedItem:(model first ? model rootItem)
87bb1815460b initial checkin
ca
parents:
diff changeset
   710
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   711
87bb1815460b initial checkin
ca
parents:
diff changeset
   712
    prnt := item parent.
87bb1815460b initial checkin
ca
parents:
diff changeset
   713
    prnt isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   714
        "/ is the root item
87bb1815460b initial checkin
ca
parents:
diff changeset
   715
        (key == #CursorUp or:[key == #CursorLeft]) ifTrue:[item := model listOfItems last]
87bb1815460b initial checkin
ca
parents:
diff changeset
   716
                                                  ifFalse:[item := item at:1 ifAbsent:item].
87bb1815460b initial checkin
ca
parents:
diff changeset
   717
87bb1815460b initial checkin
ca
parents:
diff changeset
   718
      ^ model selectedItem:item
87bb1815460b initial checkin
ca
parents:
diff changeset
   719
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   720
    key == #CursorLeft ifTrue:[ ^ model selectedItem:prnt ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   721
87bb1815460b initial checkin
ca
parents:
diff changeset
   722
    key == #CursorRight ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   723
        next := item at:1 ifAbsent:nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
   724
        next notNil ifTrue:[ model selectedItem:next ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   725
      ^ self
87bb1815460b initial checkin
ca
parents:
diff changeset
   726
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   727
87bb1815460b initial checkin
ca
parents:
diff changeset
   728
    max := prnt size.
87bb1815460b initial checkin
ca
parents:
diff changeset
   729
87bb1815460b initial checkin
ca
parents:
diff changeset
   730
    key == #CursorUp ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   731
        idx := prnt identityIndexOf:item.
87bb1815460b initial checkin
ca
parents:
diff changeset
   732
        idx == 1 ifTrue:[idx := max + 1].
87bb1815460b initial checkin
ca
parents:
diff changeset
   733
        model selectedItem:(prnt at:idx - 1).
87bb1815460b initial checkin
ca
parents:
diff changeset
   734
      ^ self.
87bb1815460b initial checkin
ca
parents:
diff changeset
   735
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   736
87bb1815460b initial checkin
ca
parents:
diff changeset
   737
    key == #CursorDown ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   738
        idx := prnt identityIndexOf:item.
87bb1815460b initial checkin
ca
parents:
diff changeset
   739
        idx == max ifTrue:[idx := 0].
87bb1815460b initial checkin
ca
parents:
diff changeset
   740
        model selectedItem:(prnt at:idx + 1).
87bb1815460b initial checkin
ca
parents:
diff changeset
   741
      ^ self.
87bb1815460b initial checkin
ca
parents:
diff changeset
   742
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   743
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   744
87bb1815460b initial checkin
ca
parents:
diff changeset
   745
processMappedView:aView
87bb1815460b initial checkin
ca
parents:
diff changeset
   746
    "process a mapped event
87bb1815460b initial checkin
ca
parents:
diff changeset
   747
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   748
    |parent anchor|
87bb1815460b initial checkin
ca
parents:
diff changeset
   749
87bb1815460b initial checkin
ca
parents:
diff changeset
   750
    parent := self listOfItems detectItemRespondsToView:aView.
87bb1815460b initial checkin
ca
parents:
diff changeset
   751
    parent isNil ifTrue:[ ^ self ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   752
87bb1815460b initial checkin
ca
parents:
diff changeset
   753
    NotFoundSignal handle:[:ex|
87bb1815460b initial checkin
ca
parents:
diff changeset
   754
        "contained subvies used by spec are not yet created;
87bb1815460b initial checkin
ca
parents:
diff changeset
   755
         thus we have to wait until last used subview is build
87bb1815460b initial checkin
ca
parents:
diff changeset
   756
        "
87bb1815460b initial checkin
ca
parents:
diff changeset
   757
        anchor := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
   758
    ] do:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   759
        anchor := parent class buildViewsFrom:(parent widget).
87bb1815460b initial checkin
ca
parents:
diff changeset
   760
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   761
    anchor notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   762
        parent updateFromChildren:anchor children.
87bb1815460b initial checkin
ca
parents:
diff changeset
   763
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   764
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
   765
87bb1815460b initial checkin
ca
parents:
diff changeset
   766
!ViewTreeApplication methodsFor:'initialization & release'!
87bb1815460b initial checkin
ca
parents:
diff changeset
   767
87bb1815460b initial checkin
ca
parents:
diff changeset
   768
closeDownViews
87bb1815460b initial checkin
ca
parents:
diff changeset
   769
    "release the grapped application
87bb1815460b initial checkin
ca
parents:
diff changeset
   770
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   771
    process := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
   772
    super closeDownViews.
87bb1815460b initial checkin
ca
parents:
diff changeset
   773
    self doUnpick.
87bb1815460b initial checkin
ca
parents:
diff changeset
   774
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   775
87bb1815460b initial checkin
ca
parents:
diff changeset
   776
initialize
87bb1815460b initial checkin
ca
parents:
diff changeset
   777
    "setup my model and channels
87bb1815460b initial checkin
ca
parents:
diff changeset
   778
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   779
    super initialize.
87bb1815460b initial checkin
ca
parents:
diff changeset
   780
87bb1815460b initial checkin
ca
parents:
diff changeset
   781
    infoChannel              := ''    asValue.
87bb1815460b initial checkin
ca
parents:
diff changeset
   782
    hasSingleSelectionHolder := false asValue.
87bb1815460b initial checkin
ca
parents:
diff changeset
   783
    followFocusChannel       := false asValue.
87bb1815460b initial checkin
ca
parents:
diff changeset
   784
87bb1815460b initial checkin
ca
parents:
diff changeset
   785
    model := ViewTreeModel new.
87bb1815460b initial checkin
ca
parents:
diff changeset
   786
    model inputEventAction:[:ev| self processEvent:ev ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   787
    model mappedViewAction:[:vw| self processMappedView:vw ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   788
    model application:self.
87bb1815460b initial checkin
ca
parents:
diff changeset
   789
87bb1815460b initial checkin
ca
parents:
diff changeset
   790
    testModeChannel := model testMode asValue.
87bb1815460b initial checkin
ca
parents:
diff changeset
   791
    testModeChannel addDependent:self.
87bb1815460b initial checkin
ca
parents:
diff changeset
   792
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   793
87bb1815460b initial checkin
ca
parents:
diff changeset
   794
postBuildTree:aTree
87bb1815460b initial checkin
ca
parents:
diff changeset
   795
    treeView := aTree scrolledView.
87bb1815460b initial checkin
ca
parents:
diff changeset
   796
    treeView hasConstantHeight:true.
87bb1815460b initial checkin
ca
parents:
diff changeset
   797
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
   798
87bb1815460b initial checkin
ca
parents:
diff changeset
   799
!ViewTreeApplication methodsFor:'menu queries'!
87bb1815460b initial checkin
ca
parents:
diff changeset
   800
87bb1815460b initial checkin
ca
parents:
diff changeset
   801
hasApplication
87bb1815460b initial checkin
ca
parents:
diff changeset
   802
    "returns true if the current selected view has an application
87bb1815460b initial checkin
ca
parents:
diff changeset
   803
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   804
    |view|
87bb1815460b initial checkin
ca
parents:
diff changeset
   805
87bb1815460b initial checkin
ca
parents:
diff changeset
   806
    view := self selectedView.
87bb1815460b initial checkin
ca
parents:
diff changeset
   807
  ^ (view notNil and:[view application notNil])
87bb1815460b initial checkin
ca
parents:
diff changeset
   808
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   809
87bb1815460b initial checkin
ca
parents:
diff changeset
   810
hasController
87bb1815460b initial checkin
ca
parents:
diff changeset
   811
    "returns true if the current selected item's view has a controller
87bb1815460b initial checkin
ca
parents:
diff changeset
   812
     other than nil or the view itself
87bb1815460b initial checkin
ca
parents:
diff changeset
   813
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   814
    |view controller|
87bb1815460b initial checkin
ca
parents:
diff changeset
   815
87bb1815460b initial checkin
ca
parents:
diff changeset
   816
    view := self selectedView.
87bb1815460b initial checkin
ca
parents:
diff changeset
   817
87bb1815460b initial checkin
ca
parents:
diff changeset
   818
    view notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   819
        controller := view controller.
87bb1815460b initial checkin
ca
parents:
diff changeset
   820
      ^ (controller notNil and:[controller ~~ view])
87bb1815460b initial checkin
ca
parents:
diff changeset
   821
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   822
    ^ false
87bb1815460b initial checkin
ca
parents:
diff changeset
   823
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   824
87bb1815460b initial checkin
ca
parents:
diff changeset
   825
hasModel
87bb1815460b initial checkin
ca
parents:
diff changeset
   826
    "returns true if the current selected view has a model
87bb1815460b initial checkin
ca
parents:
diff changeset
   827
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   828
    |view|
87bb1815460b initial checkin
ca
parents:
diff changeset
   829
87bb1815460b initial checkin
ca
parents:
diff changeset
   830
    view := self selectedView.
87bb1815460b initial checkin
ca
parents:
diff changeset
   831
  ^ (view notNil and:[view model notNil])
87bb1815460b initial checkin
ca
parents:
diff changeset
   832
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   833
87bb1815460b initial checkin
ca
parents:
diff changeset
   834
hasPickedView
87bb1815460b initial checkin
ca
parents:
diff changeset
   835
    "returns true if a view is picked
87bb1815460b initial checkin
ca
parents:
diff changeset
   836
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   837
    ^ model rootItem notNil
87bb1815460b initial checkin
ca
parents:
diff changeset
   838
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
   839
87bb1815460b initial checkin
ca
parents:
diff changeset
   840
!ViewTreeApplication methodsFor:'menu specs'!
87bb1815460b initial checkin
ca
parents:
diff changeset
   841
87bb1815460b initial checkin
ca
parents:
diff changeset
   842
middleButtonMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   843
    "returns the middleButton menu for the single selected item or nil
87bb1815460b initial checkin
ca
parents:
diff changeset
   844
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   845
    ^ [ model selectedItem notNil ifTrue:[self class middleButtonMenu]
87bb1815460b initial checkin
ca
parents:
diff changeset
   846
                                 ifFalse:[nil]
87bb1815460b initial checkin
ca
parents:
diff changeset
   847
      ]
87bb1815460b initial checkin
ca
parents:
diff changeset
   848
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   849
87bb1815460b initial checkin
ca
parents:
diff changeset
   850
submenuApplications:aMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   851
    |applications menu item list addBlock|
87bb1815460b initial checkin
ca
parents:
diff changeset
   852
87bb1815460b initial checkin
ca
parents:
diff changeset
   853
    item := aMenu selection nameKey == #single ifTrue:[model selectedItem]
87bb1815460b initial checkin
ca
parents:
diff changeset
   854
                                              ifFalse:[model rootItem].
87bb1815460b initial checkin
ca
parents:
diff changeset
   855
    item isNil ifTrue:[^ nil].
87bb1815460b initial checkin
ca
parents:
diff changeset
   856
87bb1815460b initial checkin
ca
parents:
diff changeset
   857
    applications := IdentityDictionary new.
87bb1815460b initial checkin
ca
parents:
diff changeset
   858
87bb1815460b initial checkin
ca
parents:
diff changeset
   859
    addBlock := [:el| |cls ctr|
87bb1815460b initial checkin
ca
parents:
diff changeset
   860
        cls := self resolveApplicationClassFor:el.
87bb1815460b initial checkin
ca
parents:
diff changeset
   861
87bb1815460b initial checkin
ca
parents:
diff changeset
   862
        cls notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   863
            ctr := applications at:cls ifAbsent:0.
87bb1815460b initial checkin
ca
parents:
diff changeset
   864
            applications at:cls put:(ctr + 1).
87bb1815460b initial checkin
ca
parents:
diff changeset
   865
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   866
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   867
    item recursiveDo:addBlock.
87bb1815460b initial checkin
ca
parents:
diff changeset
   868
    addBlock value:item.
87bb1815460b initial checkin
ca
parents:
diff changeset
   869
87bb1815460b initial checkin
ca
parents:
diff changeset
   870
    applications isEmpty ifTrue:[^ nil ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   871
    list := SortedCollection sortBlock:[:a :b| a title < b title ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   872
87bb1815460b initial checkin
ca
parents:
diff changeset
   873
    applications keysAndValuesDo:[:cls :ctr|
87bb1815460b initial checkin
ca
parents:
diff changeset
   874
       list add:(MenuDesc title:(cls name)
87bb1815460b initial checkin
ca
parents:
diff changeset
   875
                          value:(ctr printString)
87bb1815460b initial checkin
ca
parents:
diff changeset
   876
                         action:[self doSelectNextOfApplicationClass:cls startingIn:item]
87bb1815460b initial checkin
ca
parents:
diff changeset
   877
                 ).
87bb1815460b initial checkin
ca
parents:
diff changeset
   878
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   879
87bb1815460b initial checkin
ca
parents:
diff changeset
   880
    menu := MenuDesc buildFromList:list onGC:aMenu.
87bb1815460b initial checkin
ca
parents:
diff changeset
   881
    menu do:[:el|
87bb1815460b initial checkin
ca
parents:
diff changeset
   882
        el hideMenuOnActivated:false
87bb1815460b initial checkin
ca
parents:
diff changeset
   883
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   884
    ^ menu
87bb1815460b initial checkin
ca
parents:
diff changeset
   885
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   886
87bb1815460b initial checkin
ca
parents:
diff changeset
   887
submenuComponents:aMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   888
    |widgets list total menu item|
87bb1815460b initial checkin
ca
parents:
diff changeset
   889
87bb1815460b initial checkin
ca
parents:
diff changeset
   890
    item := aMenu selection nameKey == #single ifTrue:[model selectedItem]
87bb1815460b initial checkin
ca
parents:
diff changeset
   891
                                              ifFalse:[model rootItem].
87bb1815460b initial checkin
ca
parents:
diff changeset
   892
    item isNil ifTrue:[^ nil].
87bb1815460b initial checkin
ca
parents:
diff changeset
   893
87bb1815460b initial checkin
ca
parents:
diff changeset
   894
    widgets := IdentityDictionary new.
87bb1815460b initial checkin
ca
parents:
diff changeset
   895
    total   := 0.
87bb1815460b initial checkin
ca
parents:
diff changeset
   896
87bb1815460b initial checkin
ca
parents:
diff changeset
   897
    item recursiveDo:[:el| |cls ctr|
87bb1815460b initial checkin
ca
parents:
diff changeset
   898
        cls := el widget.
87bb1815460b initial checkin
ca
parents:
diff changeset
   899
87bb1815460b initial checkin
ca
parents:
diff changeset
   900
        cls notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
   901
            cls := cls class.
87bb1815460b initial checkin
ca
parents:
diff changeset
   902
            ctr := widgets at:cls ifAbsent:0.
87bb1815460b initial checkin
ca
parents:
diff changeset
   903
            widgets at:cls put:(ctr + 1).
87bb1815460b initial checkin
ca
parents:
diff changeset
   904
            total := total + 1.
87bb1815460b initial checkin
ca
parents:
diff changeset
   905
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   906
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   907
    total == 0 ifTrue:[^ nil].
87bb1815460b initial checkin
ca
parents:
diff changeset
   908
    list := SortedCollection sortBlock:[:a :b| a title < b title ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   909
87bb1815460b initial checkin
ca
parents:
diff changeset
   910
    widgets keysAndValuesDo:[:cls :ctr|
87bb1815460b initial checkin
ca
parents:
diff changeset
   911
        list add:(MenuDesc title:(cls name)
87bb1815460b initial checkin
ca
parents:
diff changeset
   912
                           value:(ctr printString)
87bb1815460b initial checkin
ca
parents:
diff changeset
   913
                          action:[self doSelectNextOfClass:cls startingIn:item]
87bb1815460b initial checkin
ca
parents:
diff changeset
   914
                 ).
87bb1815460b initial checkin
ca
parents:
diff changeset
   915
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   916
    list := list asOrderedCollection.
87bb1815460b initial checkin
ca
parents:
diff changeset
   917
    list add:(MenuDesc separator).
87bb1815460b initial checkin
ca
parents:
diff changeset
   918
    list add:(MenuDesc title:'Total' value:(total printString)).
87bb1815460b initial checkin
ca
parents:
diff changeset
   919
    menu := MenuDesc buildFromList:list onGC:aMenu.
87bb1815460b initial checkin
ca
parents:
diff changeset
   920
    menu do:[:el|
87bb1815460b initial checkin
ca
parents:
diff changeset
   921
        el hideMenuOnActivated:false
87bb1815460b initial checkin
ca
parents:
diff changeset
   922
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   923
    ^ menu
87bb1815460b initial checkin
ca
parents:
diff changeset
   924
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   925
87bb1815460b initial checkin
ca
parents:
diff changeset
   926
submenuGeometry:aMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   927
    "builds and returns the geometry submenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   928
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   929
    |view point inst list x y|
87bb1815460b initial checkin
ca
parents:
diff changeset
   930
87bb1815460b initial checkin
ca
parents:
diff changeset
   931
    view := self selectedView.
87bb1815460b initial checkin
ca
parents:
diff changeset
   932
    view isNil ifTrue:[^ nil].
87bb1815460b initial checkin
ca
parents:
diff changeset
   933
87bb1815460b initial checkin
ca
parents:
diff changeset
   934
    list := OrderedCollection new.
87bb1815460b initial checkin
ca
parents:
diff changeset
   935
87bb1815460b initial checkin
ca
parents:
diff changeset
   936
    "/ origin
87bb1815460b initial checkin
ca
parents:
diff changeset
   937
    point := view relativeOrigin.
87bb1815460b initial checkin
ca
parents:
diff changeset
   938
    point isNil ifTrue:[ point := view origin ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   939
87bb1815460b initial checkin
ca
parents:
diff changeset
   940
    x := view left.
87bb1815460b initial checkin
ca
parents:
diff changeset
   941
    y := view top.
87bb1815460b initial checkin
ca
parents:
diff changeset
   942
87bb1815460b initial checkin
ca
parents:
diff changeset
   943
    (x == point x and:[y == point y]) ifTrue:[ inst := point ]
87bb1815460b initial checkin
ca
parents:
diff changeset
   944
                                     ifFalse:[ inst := '%1 --> (%2@%3)' bindWith:point with:x with:y ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   945
87bb1815460b initial checkin
ca
parents:
diff changeset
   946
    list add:(MenuDesc title:'origin' value:inst).
87bb1815460b initial checkin
ca
parents:
diff changeset
   947
87bb1815460b initial checkin
ca
parents:
diff changeset
   948
    "/ corner
87bb1815460b initial checkin
ca
parents:
diff changeset
   949
    point := view relativeCorner.
87bb1815460b initial checkin
ca
parents:
diff changeset
   950
    point isNil ifTrue:[ point := view corner ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   951
87bb1815460b initial checkin
ca
parents:
diff changeset
   952
    x := view right.
87bb1815460b initial checkin
ca
parents:
diff changeset
   953
    y := view bottom.
87bb1815460b initial checkin
ca
parents:
diff changeset
   954
87bb1815460b initial checkin
ca
parents:
diff changeset
   955
    (x == point x and:[y == point y]) ifTrue:[ inst := point ]
87bb1815460b initial checkin
ca
parents:
diff changeset
   956
                                     ifFalse:[ inst := '%1 --> (%2@%3)' bindWith:point with:x with:y ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   957
87bb1815460b initial checkin
ca
parents:
diff changeset
   958
    list add:(MenuDesc title:'corner' value:inst).
87bb1815460b initial checkin
ca
parents:
diff changeset
   959
87bb1815460b initial checkin
ca
parents:
diff changeset
   960
    "/ extent
87bb1815460b initial checkin
ca
parents:
diff changeset
   961
    (point := view relativeExtent) isNil ifTrue:[point := view extent].
87bb1815460b initial checkin
ca
parents:
diff changeset
   962
    list add:(MenuDesc title:'extent' value:point).
87bb1815460b initial checkin
ca
parents:
diff changeset
   963
87bb1815460b initial checkin
ca
parents:
diff changeset
   964
    "/ preferred extent
87bb1815460b initial checkin
ca
parents:
diff changeset
   965
    list add:(MenuDesc title:'pref. extent' value:(view preferredExtent)).
87bb1815460b initial checkin
ca
parents:
diff changeset
   966
    list add:(MenuDesc separator).
87bb1815460b initial checkin
ca
parents:
diff changeset
   967
87bb1815460b initial checkin
ca
parents:
diff changeset
   968
    "/ view insets
87bb1815460b initial checkin
ca
parents:
diff changeset
   969
    inst := 'l:%1  r:%2  t:%3  b:%4' bindWith:(view leftInset)
87bb1815460b initial checkin
ca
parents:
diff changeset
   970
                                         with:(view rightInset)
87bb1815460b initial checkin
ca
parents:
diff changeset
   971
                                         with:(view topInset)
87bb1815460b initial checkin
ca
parents:
diff changeset
   972
                                         with:(view bottomInset).
87bb1815460b initial checkin
ca
parents:
diff changeset
   973
87bb1815460b initial checkin
ca
parents:
diff changeset
   974
    list add:(MenuDesc title:'insets'      value:inst).
87bb1815460b initial checkin
ca
parents:
diff changeset
   975
    list add:(MenuDesc title:'borderWidth' value:(view borderWidth)).
87bb1815460b initial checkin
ca
parents:
diff changeset
   976
    list add:(MenuDesc title:'level'       value:(view level)).
87bb1815460b initial checkin
ca
parents:
diff changeset
   977
    list add:(MenuDesc separator).
87bb1815460b initial checkin
ca
parents:
diff changeset
   978
87bb1815460b initial checkin
ca
parents:
diff changeset
   979
    (inst := view layout) notNil ifTrue:[ inst := inst displayString ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   980
    list add:(MenuDesc title:'layout' value:inst).
87bb1815460b initial checkin
ca
parents:
diff changeset
   981
87bb1815460b initial checkin
ca
parents:
diff changeset
   982
    (inst := view transformation) notNil ifTrue:[ inst := inst displayString ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   983
    list add:(MenuDesc title:'transformation' value:inst).
87bb1815460b initial checkin
ca
parents:
diff changeset
   984
87bb1815460b initial checkin
ca
parents:
diff changeset
   985
  ^ MenuDesc buildFromList:list onGC:aMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   986
!
87bb1815460b initial checkin
ca
parents:
diff changeset
   987
87bb1815460b initial checkin
ca
parents:
diff changeset
   988
submenuInspector:aMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   989
    "builds and returns the inspector submenu
87bb1815460b initial checkin
ca
parents:
diff changeset
   990
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
   991
    |view list n names label value|
87bb1815460b initial checkin
ca
parents:
diff changeset
   992
87bb1815460b initial checkin
ca
parents:
diff changeset
   993
    view := self selectedView.
87bb1815460b initial checkin
ca
parents:
diff changeset
   994
    view isNil ifTrue:[^ nil].
87bb1815460b initial checkin
ca
parents:
diff changeset
   995
87bb1815460b initial checkin
ca
parents:
diff changeset
   996
    n := view class instSize.
87bb1815460b initial checkin
ca
parents:
diff changeset
   997
    n > 0 ifFalse:[^ nil ].
87bb1815460b initial checkin
ca
parents:
diff changeset
   998
87bb1815460b initial checkin
ca
parents:
diff changeset
   999
    list  := OrderedCollection new:n.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1000
    names := view class allInstVarNames.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1001
87bb1815460b initial checkin
ca
parents:
diff changeset
  1002
    1 to:n do:[:i| |action|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1003
        label := (names at:i) printString.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1004
        value := view instVarAt:i.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1005
        value isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1006
            value  := '------'.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1007
            action := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1008
        ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1009
            value  := value displayString contractAtEndTo:40.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1010
            action := [(view instVarAt:i) inspect].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1011
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1012
        list add:(MenuDesc title:label value:value action:action).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1013
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1014
87bb1815460b initial checkin
ca
parents:
diff changeset
  1015
    ^ MenuDesc buildFromList:list onGC:aMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
  1016
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1017
87bb1815460b initial checkin
ca
parents:
diff changeset
  1018
submenuInterface:aMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
  1019
    "builds and returns the interface submenu
87bb1815460b initial checkin
ca
parents:
diff changeset
  1020
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
  1021
    |view label inst value list|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1022
87bb1815460b initial checkin
ca
parents:
diff changeset
  1023
    view := self selectedView.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1024
    view isNil ifTrue:[^ nil].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1025
87bb1815460b initial checkin
ca
parents:
diff changeset
  1026
    list := OrderedCollection new.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1027
87bb1815460b initial checkin
ca
parents:
diff changeset
  1028
    inst  := view controller.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1029
    value := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1030
87bb1815460b initial checkin
ca
parents:
diff changeset
  1031
    inst isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1032
        label := nil
87bb1815460b initial checkin
ca
parents:
diff changeset
  1033
    ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1034
        inst == view ifTrue:[ label := '== view itself' ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1035
                    ifFalse:[ label := inst displayString.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1036
                              value := [view controller inspect].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1037
                            ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1038
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1039
    list add:(MenuDesc title:'controller' value:label action:value).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1040
87bb1815460b initial checkin
ca
parents:
diff changeset
  1041
    inst := view delegate.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1042
    inst notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1043
        list add:(MenuDesc title:'delegate' value:(inst displayString) action:[ view delegate inspect ]).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1044
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1045
87bb1815460b initial checkin
ca
parents:
diff changeset
  1046
    inst := view application.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1047
87bb1815460b initial checkin
ca
parents:
diff changeset
  1048
    inst notNil ifTrue:[ |topAppl|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1049
        list add:(MenuDesc title:'application' value:inst action:[ view application inspect ]).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1050
87bb1815460b initial checkin
ca
parents:
diff changeset
  1051
        topAppl := inst topApplication.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1052
87bb1815460b initial checkin
ca
parents:
diff changeset
  1053
        (topAppl notNil and:[topAppl ~~ inst]) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1054
            list add:(MenuDesc title:'topApplication' value:topAppl action:[ inst topApplication inspect ]).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1055
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1056
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1057
    list add:(MenuDesc separator).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1058
87bb1815460b initial checkin
ca
parents:
diff changeset
  1059
    (view respondsTo:#'model:') ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1060
        inst := model.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1061
87bb1815460b initial checkin
ca
parents:
diff changeset
  1062
        inst isNil ifTrue:[ label := value := nil ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1063
                  ifFalse:[ label := inst displayString.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1064
                            value := [ view model inspect ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1065
                          ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1066
87bb1815460b initial checkin
ca
parents:
diff changeset
  1067
        list add:(MenuDesc title:'model' value:label action:value).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1068
87bb1815460b initial checkin
ca
parents:
diff changeset
  1069
        (inst notNil and:[view respondsTo:#modelInterface]) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1070
            view modelInterface keysAndValuesDo:[:key : val|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1071
                val isNil ifTrue:[ label := nil ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1072
                         ifFalse:[ label := val displayString ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1073
87bb1815460b initial checkin
ca
parents:
diff changeset
  1074
                list add:(MenuDesc title:('      - ', key) value:label ).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1075
            ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1076
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1077
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1078
87bb1815460b initial checkin
ca
parents:
diff changeset
  1079
    (view respondsTo:#enableChannel) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1080
        inst := view enableChannel.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1081
87bb1815460b initial checkin
ca
parents:
diff changeset
  1082
        inst isNil ifTrue:[ label := value := nil ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1083
                  ifFalse:[ label := inst displayString.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1084
                            value := [ view enableChannel inspect ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1085
                          ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1086
87bb1815460b initial checkin
ca
parents:
diff changeset
  1087
        list add:(MenuDesc title:'enableChannel' value:label action:value).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1088
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1089
87bb1815460b initial checkin
ca
parents:
diff changeset
  1090
    list last isSeparator ifFalse:[ list add:(MenuDesc separator) ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1091
87bb1815460b initial checkin
ca
parents:
diff changeset
  1092
    (view respondsTo:#listHolder) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1093
        inst := view listHolder.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1094
87bb1815460b initial checkin
ca
parents:
diff changeset
  1095
        inst isNil ifTrue:[ label := value := nil ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1096
                  ifFalse:[ label := inst class printString.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1097
                            value := [ view listHolder inspect ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1098
                          ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1099
        list add:(MenuDesc title:'listHolder' value:label action:value).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1100
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1101
87bb1815460b initial checkin
ca
parents:
diff changeset
  1102
    (view respondsTo:#list) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1103
        inst := view list.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1104
87bb1815460b initial checkin
ca
parents:
diff changeset
  1105
        inst isNil ifTrue:[ label := value := nil ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1106
                  ifFalse:[ label := '%1 [%2]' bindWith:(inst class printString) with:(inst size).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1107
                            value := [ view list inspect ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1108
                          ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1109
87bb1815460b initial checkin
ca
parents:
diff changeset
  1110
        list add:(MenuDesc title:'list' value:label action:value).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1111
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1112
87bb1815460b initial checkin
ca
parents:
diff changeset
  1113
    list last isSeparator ifTrue:[ list removeLast ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1114
  ^ MenuDesc buildFromList:list onGC:aMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
  1115
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1116
87bb1815460b initial checkin
ca
parents:
diff changeset
  1117
submenuVisibility:aMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
  1118
    "builds and returns the geometry submenu
87bb1815460b initial checkin
ca
parents:
diff changeset
  1119
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
  1120
    |view list value|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1121
87bb1815460b initial checkin
ca
parents:
diff changeset
  1122
    view := self selectedView.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1123
    view isNil ifTrue:[^ nil].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1124
87bb1815460b initial checkin
ca
parents:
diff changeset
  1125
    list := OrderedCollection new.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1126
87bb1815460b initial checkin
ca
parents:
diff changeset
  1127
    list add:(MenuDesc title:'device'     value:(view device printString)).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1128
    list add:(MenuDesc title:'drawableId' value:(view id)).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1129
    list add:(MenuDesc title:'gcId'       value:(view gcId)).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1130
87bb1815460b initial checkin
ca
parents:
diff changeset
  1131
    list add:(MenuDesc separator).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1132
87bb1815460b initial checkin
ca
parents:
diff changeset
  1133
    list add:(MenuDesc title:'shown'    value:(view shown)).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1134
    list add:(MenuDesc title:'realized' value:(view realized)).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1135
87bb1815460b initial checkin
ca
parents:
diff changeset
  1136
    list add:(MenuDesc separator).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1137
87bb1815460b initial checkin
ca
parents:
diff changeset
  1138
    list add:(MenuDesc title:'hiddenOnRealize' value:(view isHiddenOnRealize)).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1139
87bb1815460b initial checkin
ca
parents:
diff changeset
  1140
    (value := view visibilityChannel) isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1141
        list add:(MenuDesc title:'visibilityChannel' value:'------').
87bb1815460b initial checkin
ca
parents:
diff changeset
  1142
    ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1143
        list add:(MenuDesc title:'visibilityChannel'
87bb1815460b initial checkin
ca
parents:
diff changeset
  1144
                           value:(value displayString)
87bb1815460b initial checkin
ca
parents:
diff changeset
  1145
                          action:[view visibilityChannel inspect]).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1146
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1147
87bb1815460b initial checkin
ca
parents:
diff changeset
  1148
        
87bb1815460b initial checkin
ca
parents:
diff changeset
  1149
  ^ MenuDesc buildFromList:list onGC:aMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
  1150
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1151
87bb1815460b initial checkin
ca
parents:
diff changeset
  1152
!ViewTreeApplication methodsFor:'private'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1153
87bb1815460b initial checkin
ca
parents:
diff changeset
  1154
selectFocusView
87bb1815460b initial checkin
ca
parents:
diff changeset
  1155
    |rootView focusItem focusView|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1156
87bb1815460b initial checkin
ca
parents:
diff changeset
  1157
    rootView := model rootView.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1158
87bb1815460b initial checkin
ca
parents:
diff changeset
  1159
    (rootView notNil and:[rootView shown]) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1160
        focusView := rootView windowGroup focusView.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1161
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1162
    focusView isNil ifTrue:[^ self ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1163
87bb1815460b initial checkin
ca
parents:
diff changeset
  1164
    focusItem := model selectedItem.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1165
87bb1815460b initial checkin
ca
parents:
diff changeset
  1166
    (focusItem notNil and:[focusItem widget == focusView]) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1167
        ^ self
87bb1815460b initial checkin
ca
parents:
diff changeset
  1168
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1169
    focusItem := model listOfItems recursiveDetect:[:el| el widget == focusView ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1170
87bb1815460b initial checkin
ca
parents:
diff changeset
  1171
    focusItem notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1172
        model selectItem:focusItem.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1173
    ].        
87bb1815460b initial checkin
ca
parents:
diff changeset
  1174
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1175
87bb1815460b initial checkin
ca
parents:
diff changeset
  1176
setRootItem:aRootItemOrNil
87bb1815460b initial checkin
ca
parents:
diff changeset
  1177
    |theProcess|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1178
87bb1815460b initial checkin
ca
parents:
diff changeset
  1179
    aRootItemOrNil isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1180
        process := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1181
    ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1182
        "/ expand tree to level 3
87bb1815460b initial checkin
ca
parents:
diff changeset
  1183
        aRootItemOrNil do:[:aRootChild|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1184
            aRootChild do:[:aSubChild| aSubChild expand ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1185
            aRootChild expand.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1186
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1187
        aRootItemOrNil expand.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1188
87bb1815460b initial checkin
ca
parents:
diff changeset
  1189
        process isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1190
            theProcess := process :=
87bb1815460b initial checkin
ca
parents:
diff changeset
  1191
                Process for:[   |update|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1192
87bb1815460b initial checkin
ca
parents:
diff changeset
  1193
                                update := false.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1194
87bb1815460b initial checkin
ca
parents:
diff changeset
  1195
                               [process == theProcess] whileTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1196
                                    Delay waitForSeconds:0.5.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1197
87bb1815460b initial checkin
ca
parents:
diff changeset
  1198
                                    (treeView notNil and:[process == theProcess and:[treeView shown]]) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1199
                                        (self isInTestmode and:[followFocusChannel value == true]) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1200
                                            self selectFocusView.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1201
                                        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1202
                                        update ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1203
                                            self updateShownStatus.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1204
                                        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1205
                                        update := update not.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1206
                                    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1207
                                ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1208
87bb1815460b initial checkin
ca
parents:
diff changeset
  1209
                             ] priority:8.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1210
            theProcess name:'ViewTreeApplication::Follow Focus'.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1211
            theProcess resume.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1212
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1213
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1214
    model rootItem:aRootItemOrNil.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1215
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1216
87bb1815460b initial checkin
ca
parents:
diff changeset
  1217
updateShownStatus
87bb1815460b initial checkin
ca
parents:
diff changeset
  1218
    |rootItem min max visState listIdx visY0 visY1 height damage|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1219
87bb1815460b initial checkin
ca
parents:
diff changeset
  1220
    rootItem := model rootItem.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1221
    (rootItem notNil and:[rootItem widget shown]) ifFalse:[^ self].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1222
87bb1815460b initial checkin
ca
parents:
diff changeset
  1223
    max := 0.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1224
    min := 9999999.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1225
87bb1815460b initial checkin
ca
parents:
diff changeset
  1226
    rootItem recursiveEachVisibleItemDo:[:anItem|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1227
        visState := (anItem widget shown).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1228
87bb1815460b initial checkin
ca
parents:
diff changeset
  1229
        visState ~~ anItem isDrawnShown ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1230
            anItem isDrawnShown:visState.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1231
            listIdx := treeView identityIndexOf:anItem.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1232
87bb1815460b initial checkin
ca
parents:
diff changeset
  1233
            listIdx > 0 ifTrue:[    
87bb1815460b initial checkin
ca
parents:
diff changeset
  1234
                max := max max:listIdx.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1235
                min := min min:listIdx.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1236
            ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1237
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1238
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1239
    max < min ifTrue:[^ self].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1240
    max := max + 1.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1241
87bb1815460b initial checkin
ca
parents:
diff changeset
  1242
    visY0  := (treeView yVisibleOfLine:min) max:0.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1243
    visY1  := (treeView yVisibleOfLine:max) min:(treeView height).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1244
    height := visY1 - visY0.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1245
    
87bb1815460b initial checkin
ca
parents:
diff changeset
  1246
    height > 2 ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1247
        treeView shown ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1248
            damage := Rectangle left:0 top:visY0 width:(treeView width) height:height.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1249
            treeView invalidateDeviceRectangle:damage repairNow:false.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1250
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1251
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1252
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1253
87bb1815460b initial checkin
ca
parents:
diff changeset
  1254
!ViewTreeApplication methodsFor:'queries'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1255
87bb1815460b initial checkin
ca
parents:
diff changeset
  1256
isInTestmode
87bb1815460b initial checkin
ca
parents:
diff changeset
  1257
    "returns true if running in test mode - no events eaten
87bb1815460b initial checkin
ca
parents:
diff changeset
  1258
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
  1259
    ^ testModeChannel value == true
87bb1815460b initial checkin
ca
parents:
diff changeset
  1260
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1261
87bb1815460b initial checkin
ca
parents:
diff changeset
  1262
!ViewTreeApplication methodsFor:'selection'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1263
87bb1815460b initial checkin
ca
parents:
diff changeset
  1264
selectedView
87bb1815460b initial checkin
ca
parents:
diff changeset
  1265
    "returns the selected view or nil
87bb1815460b initial checkin
ca
parents:
diff changeset
  1266
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
  1267
    |item|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1268
87bb1815460b initial checkin
ca
parents:
diff changeset
  1269
    item := model selectedItem.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1270
    item notNil ifTrue:[ ^ item widget ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1271
  ^ nil
87bb1815460b initial checkin
ca
parents:
diff changeset
  1272
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1273
87bb1815460b initial checkin
ca
parents:
diff changeset
  1274
!ViewTreeApplication methodsFor:'testing'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1275
87bb1815460b initial checkin
ca
parents:
diff changeset
  1276
resolveApplicationClassFor:aTreeItem
87bb1815460b initial checkin
ca
parents:
diff changeset
  1277
    aTreeItem isApplicationClass ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1278
       ^ aTreeItem applicationClass
87bb1815460b initial checkin
ca
parents:
diff changeset
  1279
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1280
    ^ nil
87bb1815460b initial checkin
ca
parents:
diff changeset
  1281
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1282
87bb1815460b initial checkin
ca
parents:
diff changeset
  1283
selectedComponentHasChildren
87bb1815460b initial checkin
ca
parents:
diff changeset
  1284
    |item|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1285
87bb1815460b initial checkin
ca
parents:
diff changeset
  1286
    item := model selectedItem.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1287
    ^ (item notNil and:[item hasChildren])
87bb1815460b initial checkin
ca
parents:
diff changeset
  1288
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1289
87bb1815460b initial checkin
ca
parents:
diff changeset
  1290
!ViewTreeApplication methodsFor:'user operations'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1291
87bb1815460b initial checkin
ca
parents:
diff changeset
  1292
doBrowse:what
87bb1815460b initial checkin
ca
parents:
diff changeset
  1293
    "open browser on:
87bb1815460b initial checkin
ca
parents:
diff changeset
  1294
        #view           browse class
87bb1815460b initial checkin
ca
parents:
diff changeset
  1295
        #model          browse model class
87bb1815460b initial checkin
ca
parents:
diff changeset
  1296
        #application    browse application class
87bb1815460b initial checkin
ca
parents:
diff changeset
  1297
        #controller     browse controller class
87bb1815460b initial checkin
ca
parents:
diff changeset
  1298
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
  1299
    |view inst|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1300
87bb1815460b initial checkin
ca
parents:
diff changeset
  1301
    view := self selectedView.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1302
    view isNil ifTrue:[^ self].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1303
87bb1815460b initial checkin
ca
parents:
diff changeset
  1304
             what == #view        ifTrue:[ inst := view ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1305
    ifFalse:[what == #model       ifTrue:[ inst := view model ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1306
    ifFalse:[what == #application ifTrue:[ inst := view application ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1307
    ifFalse:[what == #controller  ifTrue:[ inst := view controller ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1308
    ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1309
        ^ self
87bb1815460b initial checkin
ca
parents:
diff changeset
  1310
    ]]]].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1311
87bb1815460b initial checkin
ca
parents:
diff changeset
  1312
    inst notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1313
        inst class browserClass openInClass:(inst class) selector:nil
87bb1815460b initial checkin
ca
parents:
diff changeset
  1314
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1315
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1316
87bb1815460b initial checkin
ca
parents:
diff changeset
  1317
doDestroy
87bb1815460b initial checkin
ca
parents:
diff changeset
  1318
    "destroy the current selected view
87bb1815460b initial checkin
ca
parents:
diff changeset
  1319
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
  1320
    |item parent|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1321
87bb1815460b initial checkin
ca
parents:
diff changeset
  1322
    item := model selectedItem.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1323
    item isNil ifTrue:[ ^ self].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1324
87bb1815460b initial checkin
ca
parents:
diff changeset
  1325
    parent := item parent.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1326
87bb1815460b initial checkin
ca
parents:
diff changeset
  1327
    parent isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1328
        "/ the root
87bb1815460b initial checkin
ca
parents:
diff changeset
  1329
        model withSelectionHiddenDo:[item deleteAll].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1330
      ^ self
87bb1815460b initial checkin
ca
parents:
diff changeset
  1331
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1332
87bb1815460b initial checkin
ca
parents:
diff changeset
  1333
    model withSelectionHiddenDo:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1334
        |idx nsel|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1335
87bb1815460b initial checkin
ca
parents:
diff changeset
  1336
        idx := parent identityIndexOf:item.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1337
87bb1815460b initial checkin
ca
parents:
diff changeset
  1338
        idx == parent size ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1339
            nsel := parent at:(idx - 1) ifAbsent:parent
87bb1815460b initial checkin
ca
parents:
diff changeset
  1340
        ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1341
            nsel := parent at:(idx + 1)
87bb1815460b initial checkin
ca
parents:
diff changeset
  1342
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1343
        model setValue:nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1344
        item delete.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1345
87bb1815460b initial checkin
ca
parents:
diff changeset
  1346
        parent isLayoutContainer ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1347
            parent widget sizeChanged:nil
87bb1815460b initial checkin
ca
parents:
diff changeset
  1348
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1349
        model value:nsel.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1350
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1351
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1352
87bb1815460b initial checkin
ca
parents:
diff changeset
  1353
doFlash
87bb1815460b initial checkin
ca
parents:
diff changeset
  1354
    "flash the selected view
87bb1815460b initial checkin
ca
parents:
diff changeset
  1355
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
  1356
    |view|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1357
87bb1815460b initial checkin
ca
parents:
diff changeset
  1358
    view := self selectedView.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1359
    view isNil ifTrue:[ ^ self].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1360
87bb1815460b initial checkin
ca
parents:
diff changeset
  1361
    view shown ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1362
        model withSelectionHiddenDo:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1363
            view perform:#flash ifNotUnderstood:nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1364
        ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1365
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1366
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1367
87bb1815460b initial checkin
ca
parents:
diff changeset
  1368
doInspect:what
87bb1815460b initial checkin
ca
parents:
diff changeset
  1369
    "open inspector on:
87bb1815460b initial checkin
ca
parents:
diff changeset
  1370
        #view           inspect class
87bb1815460b initial checkin
ca
parents:
diff changeset
  1371
        #group          inspect windowGroup
87bb1815460b initial checkin
ca
parents:
diff changeset
  1372
        #model          inspect model
87bb1815460b initial checkin
ca
parents:
diff changeset
  1373
        #application    inspect application
87bb1815460b initial checkin
ca
parents:
diff changeset
  1374
        #controller     inspect controller
87bb1815460b initial checkin
ca
parents:
diff changeset
  1375
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
  1376
    |inst|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1377
87bb1815460b initial checkin
ca
parents:
diff changeset
  1378
    inst := self selectedView.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1379
    inst isNil ifTrue:[^ self].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1380
87bb1815460b initial checkin
ca
parents:
diff changeset
  1381
             what == #group       ifTrue:[ inst := inst windowGroup ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1382
    ifFalse:[what == #model       ifTrue:[ inst := inst model ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1383
    ifFalse:[what == #application ifTrue:[ inst := inst application ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1384
    ifFalse:[what == #controller  ifTrue:[ inst := inst controller  ]]]].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1385
87bb1815460b initial checkin
ca
parents:
diff changeset
  1386
    inst notNil ifTrue:[ inst inspect ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1387
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1388
87bb1815460b initial checkin
ca
parents:
diff changeset
  1389
doPickViews
87bb1815460b initial checkin
ca
parents:
diff changeset
  1390
    "pick a window's topView
87bb1815460b initial checkin
ca
parents:
diff changeset
  1391
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
  1392
    |window|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1393
87bb1815460b initial checkin
ca
parents:
diff changeset
  1394
    self doUnpick.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1395
87bb1815460b initial checkin
ca
parents:
diff changeset
  1396
    window := Screen current viewFromUser.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1397
    window isNil ifTrue:[^ self].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1398
87bb1815460b initial checkin
ca
parents:
diff changeset
  1399
    window := window topView.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1400
87bb1815460b initial checkin
ca
parents:
diff changeset
  1401
    (    window == Screen current rootView
87bb1815460b initial checkin
ca
parents:
diff changeset
  1402
     or:[window == self window topView]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1403
    ) ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1404
        ^ self
87bb1815460b initial checkin
ca
parents:
diff changeset
  1405
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1406
    self setRootItem:(ViewTreeItem buildViewsFrom:window).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1407
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1408
87bb1815460b initial checkin
ca
parents:
diff changeset
  1409
doSelectNextOfApplicationClass:aClass startingIn:anItem
87bb1815460b initial checkin
ca
parents:
diff changeset
  1410
    |startItem firstFound searchNext|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1411
87bb1815460b initial checkin
ca
parents:
diff changeset
  1412
    startItem  := model last.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1413
    searchNext := startItem notNil.        
87bb1815460b initial checkin
ca
parents:
diff changeset
  1414
    firstFound := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1415
87bb1815460b initial checkin
ca
parents:
diff changeset
  1416
    anItem recursiveDo:[:el|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1417
        el == startItem ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1418
            searchNext := false
87bb1815460b initial checkin
ca
parents:
diff changeset
  1419
        ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1420
            (self resolveApplicationClassFor:el) == aClass ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1421
                searchNext ifFalse:[^ model selectItem:el].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1422
87bb1815460b initial checkin
ca
parents:
diff changeset
  1423
                firstFound isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1424
                    firstFound := el
87bb1815460b initial checkin
ca
parents:
diff changeset
  1425
                ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1426
            ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1427
        ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1428
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1429
    firstFound notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1430
        self window beep.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1431
        model selectItem:firstFound
87bb1815460b initial checkin
ca
parents:
diff changeset
  1432
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1433
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1434
87bb1815460b initial checkin
ca
parents:
diff changeset
  1435
doSelectNextOfClass:aClass startingIn:anItem
87bb1815460b initial checkin
ca
parents:
diff changeset
  1436
    |startItem firstFound searchNext|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1437
87bb1815460b initial checkin
ca
parents:
diff changeset
  1438
    startItem  := model last.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1439
    searchNext := startItem notNil.        
87bb1815460b initial checkin
ca
parents:
diff changeset
  1440
    firstFound := nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1441
87bb1815460b initial checkin
ca
parents:
diff changeset
  1442
    anItem recursiveDo:[:el|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1443
        el == startItem ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1444
            searchNext := false
87bb1815460b initial checkin
ca
parents:
diff changeset
  1445
        ] ifFalse:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1446
            el widget class == aClass ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1447
                searchNext ifFalse:[^ model selectItem:el].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1448
87bb1815460b initial checkin
ca
parents:
diff changeset
  1449
                firstFound isNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1450
                    firstFound := el
87bb1815460b initial checkin
ca
parents:
diff changeset
  1451
                ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1452
            ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1453
        ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1454
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1455
    firstFound notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1456
        self window beep.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1457
        model selectItem:firstFound
87bb1815460b initial checkin
ca
parents:
diff changeset
  1458
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1459
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1460
87bb1815460b initial checkin
ca
parents:
diff changeset
  1461
doUnpick
87bb1815460b initial checkin
ca
parents:
diff changeset
  1462
    "release current picked window and contained subwindows
87bb1815460b initial checkin
ca
parents:
diff changeset
  1463
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
  1464
    self setRootItem:nil.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1465
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1466
87bb1815460b initial checkin
ca
parents:
diff changeset
  1467
!ViewTreeApplication::MenuDesc class methodsFor:'building'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1468
87bb1815460b initial checkin
ca
parents:
diff changeset
  1469
buildFromList:aList onGC:aMenu
87bb1815460b initial checkin
ca
parents:
diff changeset
  1470
    |tabSpec menu w menuPanel|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1471
87bb1815460b initial checkin
ca
parents:
diff changeset
  1472
    w := 0.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1473
    aList do:[:el| w := w max:(el widthOn:aMenu) ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1474
87bb1815460b initial checkin
ca
parents:
diff changeset
  1475
    tabSpec := TabulatorSpecification new.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1476
    tabSpec unit:#pixel.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1477
    tabSpec positions:#(0     1.5 ).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1478
    tabSpec align:#(#left #left).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1479
87bb1815460b initial checkin
ca
parents:
diff changeset
  1480
    w := w + 15.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1481
    tabSpec positions:(Array with:0 with:w).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1482
87bb1815460b initial checkin
ca
parents:
diff changeset
  1483
    menu := Menu new.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1484
87bb1815460b initial checkin
ca
parents:
diff changeset
  1485
    aList do:[:el|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1486
        menu addItem:(el asMenuItemWithTabulatorSpecification:tabSpec).
87bb1815460b initial checkin
ca
parents:
diff changeset
  1487
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1488
    menuPanel := MenuPanel menu:menu.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1489
    ^ menuPanel
87bb1815460b initial checkin
ca
parents:
diff changeset
  1490
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1491
87bb1815460b initial checkin
ca
parents:
diff changeset
  1492
!ViewTreeApplication::MenuDesc class methodsFor:'instance creation'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1493
87bb1815460b initial checkin
ca
parents:
diff changeset
  1494
separator
87bb1815460b initial checkin
ca
parents:
diff changeset
  1495
    ^ self new
87bb1815460b initial checkin
ca
parents:
diff changeset
  1496
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1497
87bb1815460b initial checkin
ca
parents:
diff changeset
  1498
title:aTitle value:aValue
87bb1815460b initial checkin
ca
parents:
diff changeset
  1499
    ^ self title:aTitle value:aValue action:nil
87bb1815460b initial checkin
ca
parents:
diff changeset
  1500
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1501
87bb1815460b initial checkin
ca
parents:
diff changeset
  1502
title:aTitle value:aValue action:anAction
87bb1815460b initial checkin
ca
parents:
diff changeset
  1503
    ^ self new title:aTitle value:aValue action:anAction
87bb1815460b initial checkin
ca
parents:
diff changeset
  1504
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1505
87bb1815460b initial checkin
ca
parents:
diff changeset
  1506
!ViewTreeApplication::MenuDesc methodsFor:'accessing'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1507
87bb1815460b initial checkin
ca
parents:
diff changeset
  1508
title
87bb1815460b initial checkin
ca
parents:
diff changeset
  1509
    ^ title
87bb1815460b initial checkin
ca
parents:
diff changeset
  1510
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1511
87bb1815460b initial checkin
ca
parents:
diff changeset
  1512
!ViewTreeApplication::MenuDesc methodsFor:'building'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1513
87bb1815460b initial checkin
ca
parents:
diff changeset
  1514
asMenuItemWithTabulatorSpecification:aTabSpec
87bb1815460b initial checkin
ca
parents:
diff changeset
  1515
    |array|
87bb1815460b initial checkin
ca
parents:
diff changeset
  1516
87bb1815460b initial checkin
ca
parents:
diff changeset
  1517
    title isNil ifTrue:[ ^ MenuItem label:value ].     "/ separator
87bb1815460b initial checkin
ca
parents:
diff changeset
  1518
87bb1815460b initial checkin
ca
parents:
diff changeset
  1519
    array := Array with:(title, ':') with:'------'.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1520
87bb1815460b initial checkin
ca
parents:
diff changeset
  1521
    value notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1522
        array at:2 put:(value printString, ' ')
87bb1815460b initial checkin
ca
parents:
diff changeset
  1523
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1524
87bb1815460b initial checkin
ca
parents:
diff changeset
  1525
  ^ MenuItem label:(MultiColListEntry fromStrings:array tabulatorSpecification:aTabSpec)
87bb1815460b initial checkin
ca
parents:
diff changeset
  1526
             value:action
87bb1815460b initial checkin
ca
parents:
diff changeset
  1527
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1528
87bb1815460b initial checkin
ca
parents:
diff changeset
  1529
!ViewTreeApplication::MenuDesc methodsFor:'instance creation'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1530
87bb1815460b initial checkin
ca
parents:
diff changeset
  1531
title:aTitle value:aValue action:anAction
87bb1815460b initial checkin
ca
parents:
diff changeset
  1532
    "test for separator
87bb1815460b initial checkin
ca
parents:
diff changeset
  1533
    "
87bb1815460b initial checkin
ca
parents:
diff changeset
  1534
    title  := aTitle withoutSeparators.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1535
    action := anAction.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1536
87bb1815460b initial checkin
ca
parents:
diff changeset
  1537
    aValue notNil ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1538
        value := aValue printString.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1539
87bb1815460b initial checkin
ca
parents:
diff changeset
  1540
        value size > 70 ifTrue:[
87bb1815460b initial checkin
ca
parents:
diff changeset
  1541
            value := value copyFrom:1 to:70.
87bb1815460b initial checkin
ca
parents:
diff changeset
  1542
            value := value, '...'
87bb1815460b initial checkin
ca
parents:
diff changeset
  1543
        ]
87bb1815460b initial checkin
ca
parents:
diff changeset
  1544
    ].
87bb1815460b initial checkin
ca
parents:
diff changeset
  1545
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1546
87bb1815460b initial checkin
ca
parents:
diff changeset
  1547
!ViewTreeApplication::MenuDesc methodsFor:'queries'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1548
87bb1815460b initial checkin
ca
parents:
diff changeset
  1549
isSeparator
87bb1815460b initial checkin
ca
parents:
diff changeset
  1550
    ^ title isNil
87bb1815460b initial checkin
ca
parents:
diff changeset
  1551
!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1552
87bb1815460b initial checkin
ca
parents:
diff changeset
  1553
widthOn:aGC
87bb1815460b initial checkin
ca
parents:
diff changeset
  1554
    title isNil ifTrue:[^ 5].  "/ separator
87bb1815460b initial checkin
ca
parents:
diff changeset
  1555
  ^ title widthOn:aGC
87bb1815460b initial checkin
ca
parents:
diff changeset
  1556
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1557
87bb1815460b initial checkin
ca
parents:
diff changeset
  1558
!ViewTreeApplication class methodsFor:'documentation'!
87bb1815460b initial checkin
ca
parents:
diff changeset
  1559
87bb1815460b initial checkin
ca
parents:
diff changeset
  1560
version
87bb1815460b initial checkin
ca
parents:
diff changeset
  1561
    ^ '$Header$'
87bb1815460b initial checkin
ca
parents:
diff changeset
  1562
! !
87bb1815460b initial checkin
ca
parents:
diff changeset
  1563
87bb1815460b initial checkin
ca
parents:
diff changeset
  1564
ViewTreeApplication initialize!