NewInspectorPanelView.st
author ca
Mon, 13 Jan 1997 17:49:16 +0100
changeset 35 6f1565819b63
child 39 03af455029eb
permissions -rw-r--r--
intitial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35
6f1565819b63 intitial checkin
ca
parents:
diff changeset
     1
"{ NameSpace: NewInspector }"
6f1565819b63 intitial checkin
ca
parents:
diff changeset
     2
6f1565819b63 intitial checkin
ca
parents:
diff changeset
     3
SimpleView subclass:#InspectorPanelView
6f1565819b63 intitial checkin
ca
parents:
diff changeset
     4
	instanceVariableNames:'frames labelViews listViews scrollBar maxDepth leftHistory
6f1565819b63 intitial checkin
ca
parents:
diff changeset
     5
		rightHistory hzpView actionBlock valueChangedAction'
6f1565819b63 intitial checkin
ca
parents:
diff changeset
     6
	classVariableNames:''
6f1565819b63 intitial checkin
ca
parents:
diff changeset
     7
	poolDictionaries:''
6f1565819b63 intitial checkin
ca
parents:
diff changeset
     8
	category:'Inspector'
6f1565819b63 intitial checkin
ca
parents:
diff changeset
     9
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    10
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    11
!InspectorPanelView class methodsFor:'documentation'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    12
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    13
examples
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    14
"
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    15
    example 1
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    16
    =========
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    17
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    18
    |top slv|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    19
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    20
    top := StandardSystemView new extent:600@400.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    21
    slv := NewInspector::InspectorPanelView origin:0.0@0.0 corner:1.0@1.0 in:top.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    22
    slv inspect:top.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    23
    slv action:[:el|Transcript showCR:el].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    24
    top open.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    25
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    26
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    27
    example 2
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    28
    =========
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    29
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    30
    |top slv edt a vvp|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    31
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    32
    a := Array new:5.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    33
    a at:4 put:(Array new:6).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    34
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    35
    top := StandardSystemView new extent:600@400.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    36
    vvp := VariableVerticalPanel origin:0.0@0.0  corner:1.0@1.0 in:top.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    37
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    38
    slv := NewInspector::InspectorPanelView origin:0.0@0.0 corner:1.0@0.5 in:vvp.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    39
    edt := Workspace origin:0.0 @ 0.5 corner:1.0 @ 1.0 in:vvp.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    40
    edt acceptAction:[:theText|slv accept:theText notifying:edt].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    41
    edt   doItAction:[:theCode|slv doIt:theCode   notifying:edt].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    42
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    43
    slv action:[:el| Transcript showCR:(el printString)].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    44
    slv inspect:a.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    45
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    46
    top open.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    47
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    48
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    49
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    50
"
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    51
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    52
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    53
!InspectorPanelView class methodsFor:'constants'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    54
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    55
minDepth
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    56
    "returns the maximum of views
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    57
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    58
    ^ 4
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    59
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    60
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    61
!InspectorPanelView methodsFor:'accessing'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    62
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    63
depth
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    64
    "returns number of listViews
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    65
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    66
  ^ listViews size
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    67
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    68
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    69
depth:aDepth
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    70
    "change the number of existing listViews
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    71
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    72
    |sz min|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    73
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    74
    min := self class minDepth.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    75
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    76
    aDepth > min ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    77
        sz := aDepth min:maxDepth.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    78
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    79
        sz < listViews size ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    80
            sz := listViews size
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    81
        ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    82
    ] ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    83
        sz := min
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    84
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    85
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    86
    listViews size == sz ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    87
        sz == aDepth ifFalse:[self moveContentsLeft:1].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    88
    ] ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    89
        [self createViewWithoutRedraw. listViews size ~~ sz] whileTrue.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    90
        self computeExtentOfFrames.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    91
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    92
        (self topView shown) ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    93
            hzpView sizeChanged:nil.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    94
            hzpView realizeAllSubViews.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    95
        ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    96
    ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    97
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    98
6f1565819b63 intitial checkin
ca
parents:
diff changeset
    99
maxDepth
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   100
    ^ maxDepth
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   101
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   102
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   103
maxDepth:aNumber
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   104
    "change max depth for instance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   105
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   106
    aNumber > listViews size ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   107
        aNumber >= (self class minDepth) ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   108
            maxDepth := aNumber.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   109
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   110
            maxDepth < listViews size ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   111
                self depth:maxDepth
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   112
            ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   113
        ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   114
    ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   115
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   116
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   117
!InspectorPanelView methodsFor:'accessing actions'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   118
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   119
action:aOneArgBlock
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   120
    "set the single click action block.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   121
     If non-nil, that one is evaluated on single click, passing the
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   122
     selected instance as argument
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   123
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   124
    actionBlock := aOneArgBlock
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   125
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   126
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   127
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   128
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   129
valueChangedAction:aOneArgBlock
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   130
    "evaluated if an instnace changed its value; passing
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   131
     the instance as argument
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   132
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   133
    valueChangedAction := aOneArgBlock
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   134
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   135
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   136
!InspectorPanelView methodsFor:'accessing selections'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   137
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   138
inspectedObject
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   139
    "returns the current inspected object
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   140
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   141
    |i el|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   142
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   143
    rightHistory notEmpty ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   144
        el := rightHistory last
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   145
    ] ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   146
        el := listViews findLast:[:v|v hasSelection].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   147
        el := listViews at:el.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   148
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   149
    ^ el inspectedObject
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   150
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   151
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   152
selectedInstanceVar
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   153
    "returns the current selected instance var
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   154
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   155
    |el|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   156
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   157
    rightHistory notEmpty ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   158
        el := rightHistory last
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   159
    ] ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   160
        el := listViews findLast:[:v|v hasSelection].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   161
        el := listViews at:el
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   162
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   163
    ^ el selectedInstanceVar
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   164
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   165
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   166
!InspectorPanelView methodsFor:'actions'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   167
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   168
accept:aText notifying:aView
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   169
    self doItOrAccept:[:v|v accept:aText notifying:aView]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   170
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   171
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   172
doIt:aCode notifying:aView
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   173
    ^ self doItOrAccept:[:v|v doIt:aCode notifying:aView]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   174
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   175
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   176
inspect:anObject
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   177
    "change the inspected object
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   178
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   179
    |view|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   180
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   181
    view := listViews first.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   182
    leftHistory  removeAll.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   183
    rightHistory removeAll.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   184
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   185
    view inspect:anObject.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   186
    listViews from:2 do:[:v|v inspect:nil].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   187
    self update.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   188
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   189
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   190
!InspectorPanelView methodsFor:'event handling'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   191
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   192
handlesKeyPress:key inView:someView
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   193
    ^ true
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   194
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   195
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   196
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   197
keyPress:key x:x y:y view:someView
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   198
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   199
    key == #CursorLeft  ifTrue:[^ self moveContentsRight:1].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   200
    key == #CursorRight ifTrue:[^ self moveContentsLeft:1 ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   201
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   202
    someView keyPress:key x:x y:y.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   203
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   204
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   205
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   206
singleClickAt:anIndex
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   207
    "the view changed its selection caused by a single click
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   208
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   209
    |view start sivar|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   210
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   211
    rightHistory removeAll.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   212
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   213
    view  := listViews at:anIndex.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   214
    start := anIndex + 1.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   215
    sivar := view selectedInstanceVar.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   216
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   217
    start > listViews size ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   218
        start >= maxDepth ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   219
            self moveContentsLeft:1.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   220
          ^ actionBlock value:sivar.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   221
        ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   222
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   223
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   224
    (view selectedInstanceType) == #directory ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   225
        (listViews at:start) setSelection:nil.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   226
        (listViews at:start) inspect:sivar.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   227
        
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   228
        start := start + 1.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   229
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   230
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   231
    listViews from:start do:[:v|v inspect:nil].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   232
    self update.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   233
    actionBlock value:sivar.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   234
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   235
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   236
!InspectorPanelView methodsFor:'initializing'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   237
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   238
initialize
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   239
    "initialize instance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   240
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   241
    super initialize.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   242
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   243
    frames       := OrderedCollection new.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   244
    listViews    := OrderedCollection new.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   245
    labelViews   := OrderedCollection new.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   246
    leftHistory  := OrderedCollection new.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   247
    rightHistory := OrderedCollection new.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   248
    maxDepth     := self class minDepth.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   249
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   250
    actionBlock := [:el| ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   251
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   252
    hzpView    := VariableHorizontalPanel origin:0.0@0.0 corner:1.0@1.0 in:self.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   253
    scrollBar  := HorizontalScrollBar origin:0.0@1.0 corner:1.0@1.0 in:self.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   254
    scrollBar asynchronousOperation.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   255
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   256
    hzpView bottomInset:(scrollBar preferredExtent y).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   257
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   258
    scrollBar topInset:(scrollBar preferredExtent y) negated.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   259
    scrollBar thumbHeight:100.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   260
    scrollBar scrollAction:[:percent | self scrollTo:percent].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   261
    scrollBar scrollRightAction:[self moveContentsLeft:1].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   262
    scrollBar scrollLeftAction:[self moveContentsRight:1].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   263
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   264
    self depth:maxDepth.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   265
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   266
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   267
!InspectorPanelView methodsFor:'menu - labels & actions'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   268
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   269
browse:anIndex
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   270
    self classAtLabel:anIndex do:[:cls| cls browserClass openInClass:cls selector:nil ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   271
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   272
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   273
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   274
browseClassHierarchy:anIndex
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   275
    self classAtLabel:anIndex do:[:cls| cls browserClass browseClassHierarchy:cls ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   276
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   277
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   278
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   279
browseFullClassProtocol:anIndex
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   280
    self classAtLabel:anIndex do:[:cls| cls browserClass browseFullClassProtocol:cls ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   281
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   282
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   283
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   284
classAtLabel:anIndex do:anAction
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   285
    "evaluate action on class assigned to label
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   286
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   287
    |cls|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   288
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   289
    anIndex <= labelViews size ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   290
        (cls := Smalltalk classNamed:((labelViews at:anIndex) label)) notNil ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   291
            anAction value:cls
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   292
        ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   293
    ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   294
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   295
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   296
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   297
labelMenu
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   298
    "popup menu required by any label. Delegate the request to the corresponding label
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   299
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   300
    |sqNr view|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   301
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   302
    view := (WindowGroup lastEventQuerySignal raise) view.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   303
    sqNr := labelViews findFirst:[:v| v == view].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   304
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   305
    sqNr ~~ 0 ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   306
        view := labelViews at:sqNr.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   307
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   308
        view label notEmpty ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   309
            ^ self labelMenu:sqNr
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   310
        ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   311
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   312
    ^ nil
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   313
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   314
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   315
labelMenu:anIndex
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   316
    "popup menu required for a label identified by its sequence number
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   317
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   318
    |menu|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   319
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   320
    menu := PopUpMenu labels:#(
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   321
                              'browse'
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   322
                              'browse class hierarchy'
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   323
                              'browse full class protocol'
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   324
                              )
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   325
                   selectors:#( 
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   326
                              browse:
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   327
                              browseClassHierarchy:
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   328
                              browseFullClassProtocol:
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   329
                              )
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   330
                    receiver:self.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   331
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   332
   menu args:(Array new:(menu labels size) withAll:anIndex).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   333
 ^ menu
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   334
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   335
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   336
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   337
!InspectorPanelView methodsFor:'menu - views & actions'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   338
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   339
doTrace:anInstance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   340
    "place a trace on messages sent to the instance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   341
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   342
    |selectors|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   343
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   344
    selectors := self messageMenu:anInstance.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   345
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   346
    selectors notNil ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   347
        self topView withWaitCursorDo:[MessageTracer trace:anInstance selectors:selectors]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   348
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   349
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   350
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   351
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   352
doTraceAll:anInstance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   353
    "place a trace on all messages sent to the instance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   354
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   355
    self topView withWaitCursorDo:[MessageTracer traceAll:anInstance]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   356
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   357
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   358
doTrap:anInstance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   359
    "place a trap on a message sent to the instance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   360
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   361
    |selectors|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   362
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   363
    selectors := self messageMenu:anInstance.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   364
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   365
    selectors notNil ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   366
        self topView withWaitCursorDo:[MessageTracer trap:anInstance selectors:selectors]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   367
    ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   368
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   369
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   370
doTrapAll:anInstance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   371
    "place a trap on all messages sent to the instance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   372
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   373
    self topView withWaitCursorDo:[MessageTracer trapAll:anInstance]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   374
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   375
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   376
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   377
doUntrace:anInstance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   378
    "remove all traps and traces to the instance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   379
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   380
    self topView withWaitCursorDo:[MessageTracer untrace:anInstance].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   381
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   382
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   383
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   384
messageMenu:anInstance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   385
    "open menu to select messages; on accepted a list of messages is returned
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   386
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   387
    |sll acl lst inset top hzp slv acv dblClcAct btp b1 b2 accepted viewSpacing|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   388
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   389
    top := StandardSystemView new.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   390
    top extent:500 @ 400.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   391
    top label:(anInstance printString).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   392
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   393
    (Label origin:(0.0 @  0.0) corner:(0.5 @ 20) in:top) label:'messages'.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   394
    (Label origin:(0.5 @  0.0) corner:(1.0 @ 20) in:top) label:'selected'.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   395
    hzp := VariableHorizontalPanel origin:(0.0 @ 20) corner:(1.0 @ 1.0) in:top.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   396
    btp := HorizontalPanelView origin:(0.0 @1.0) corner:(1.0 @ 1.0) in:top.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   397
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   398
    b1 := Button abortButtonIn:btp.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   399
    b2 := Button okButtonIn:btp.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   400
    accepted := false.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   401
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   402
    b1 action:[accepted := false. top destroy].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   403
    b2 action:[accepted := true.  top destroy].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   404
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   405
    btp horizontalLayout:#fitSpace.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   406
    viewSpacing := top class viewSpacing.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   407
    inset       := (b2 preferredExtent y) + viewSpacing.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   408
    viewSpacing := viewSpacing // 2.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   409
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   410
    hzp bottomInset:inset.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   411
    btp topInset:((inset - viewSpacing) negated).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   412
    btp bottomInset:viewSpacing.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   413
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   414
    slv := ScrollableView for:SelectionInListView
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   415
                miniScrollerV:true
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   416
                       origin:(0.0 @ 0.0)
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   417
                       corner:(0.5 @ 1.0)
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   418
                           in:hzp.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   419
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   420
    acv := ScrollableView for:SelectionInListView
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   421
                miniScrollerV:true
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   422
                       origin:(0.5 @ 0.0)
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   423
                       corner:(1.0 @ 1.0)
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   424
                           in:hzp.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   425
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   426
    slv := slv scrolledView.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   427
    acv := acv scrolledView.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   428
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   429
    sll := (MessageTracer realClassOf:anInstance) selectors.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   430
    acl := OrderedCollection new.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   431
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   432
    (MessageTracer wrappedSelectorsOf:anInstance) do:[:el|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   433
        el notNil ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   434
            acl add:el.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   435
            sll remove:el ifAbsent:nil
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   436
        ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   437
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   438
        
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   439
    slv list:(sll copy).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   440
    acv list:(acl copy).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   441
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   442
    dblClcAct := [:from :to|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   443
        to add:(from selectionValue).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   444
        from removeIndex:(from selection).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   445
        from redraw.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   446
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   447
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   448
    slv doubleClickAction:[:index| dblClcAct value:slv value:acv].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   449
    acv doubleClickAction:[:index| dblClcAct value:acv value:slv].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   450
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   451
    top openModal.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   452
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   453
    accepted ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   454
        ^ nil
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   455
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   456
    lst := acv list.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   457
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   458
"undo existing traps            HACK: removes traps and traces"
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   459
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   460
    acl notEmpty ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   461
        MessageTracer untrace:anInstance
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   462
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   463
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   464
    lst notEmpty ifTrue:[^ lst]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   465
                ifFalse:[^ nil]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   466
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   467
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   468
viewMenu
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   469
    "popup menu required by any view. Delegate the request to the corresponding view
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   470
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   471
    |sqNr view|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   472
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   473
    view := (WindowGroup lastEventQuerySignal raise) view.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   474
    sqNr := listViews findFirst:[:v| v == view].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   475
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   476
    sqNr notNil ifTrue:[^ self viewMenu:sqNr]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   477
               ifFalse:[^ nil]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   478
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   479
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   480
viewMenu:anIndex
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   481
    "popup menu required for a view identified by its sequence number
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   482
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   483
    |view menu inst args lbls txt|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   484
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   485
    view := listViews at:anIndex.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   486
    view hasSelection ifFalse:[^ nil].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   487
    inst := view selectedInstanceVar.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   488
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   489
    menu := PopUpMenu labels:#( 'update' '-')
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   490
                   selectors:#( #update  nil)
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   491
                    receiver:self.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   492
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   493
    menu actionAt:#update put:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   494
        view updateList.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   495
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   496
        listViews from:(anIndex + 1) do:[:v|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   497
            (view selectedInstanceType) ~~ #directory ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   498
                v inspect:nil
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   499
            ] ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   500
                v inspect:(view selectedInstanceVar).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   501
                view := v.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   502
            ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   503
        ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   504
        self update
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   505
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   506
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   507
    menu  addLabels:#(
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   508
                      'trace'
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   509
                      'trap'
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   510
                      'untrace / untrap'
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   511
                     )
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   512
          selectors:#(
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   513
                      trace
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   514
                      trap
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   515
                      untrace
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   516
                     ).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   517
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   518
    menu actionAt:#untrace put:[self doUntrace:inst].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   519
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   520
    args := Array new:2 withAll:inst.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   521
    lbls := Array with:'message'
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   522
                  with:((Text string:' all ' emphasis:#underline), ' messages').
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   523
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   524
    menu subMenuAt:#trace put:(
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   525
        PopUpMenu labels:lbls selectors:#(doTrace: doTraceAll:) args:args
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   526
    ).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   527
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   528
    menu subMenuAt:#trap put:(
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   529
        PopUpMenu labels:lbls selectors:#(doTrap: doTrapAll:) args:args
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   530
    ).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   531
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   532
  ^ menu
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   533
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   534
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   535
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   536
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   537
!InspectorPanelView methodsFor:'private'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   538
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   539
doItOrAccept:aBlock
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   540
    "handle a doIt or accept action
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   541
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   542
    |index view ivar rslt last stop|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   543
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   544
    last := listViews last.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   545
    self moveContentsLeft:(rightHistory size).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   546
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   547
    last hasSelection ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   548
        self moveContentsLeft:1.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   549
        index := (listViews size) - 1
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   550
    ] ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   551
        index := listViews findLast:[:v|v hasSelection].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   552
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   553
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   554
    index ~~ 0 ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   555
        view := listViews at:index.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   556
        rslt := aBlock value:view.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   557
        stop := listViews size.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   558
        ivar := view selectedInstanceVar.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   559
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   560
        index == stop ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   561
            self moveContentsLeft:1.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   562
        ] ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   563
            index := index + 1.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   564
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   565
            (view selectedInstanceType) == #directory ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   566
                (listViews at:index) inspect:ivar
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   567
            ] ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   568
                (listViews at:index) inspect:nil
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   569
            ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   570
            self update.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   571
        ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   572
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   573
        valueChangedAction notNil ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   574
            valueChangedAction value:ivar
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   575
        ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   576
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   577
    ^ rslt
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   578
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   579
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   580
update
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   581
    "update labels and scrollbar
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   582
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   583
    |pview cview stop index ispObj label|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   584
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   585
"UPDATE LABELS
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   586
"
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   587
    index := 1.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   588
    stop  := listViews size.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   589
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   590
    [   cview  := listViews at:index.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   591
        ispObj := cview inspectedObject.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   592
        label  := labelViews at:index.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   593
        index  := index + 1.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   594
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   595
        ispObj notNil ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   596
            label label:(ispObj class name asString).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   597
            pview := cview.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   598
        ] ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   599
            [index <= stop] whileTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   600
                (labelViews at:index) label:''.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   601
                index := index + 1
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   602
            ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   603
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   604
            (pview isNil or:[pview selectedInstanceType == #normal]) ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   605
                pview notNil ifTrue:[ispObj := pview selectedInstanceVar].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   606
                label label:ispObj class name asString
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   607
            ] ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   608
                label label:''
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   609
            ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   610
        ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   611
        index > stop
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   612
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   613
    ] whileFalse.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   614
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   615
"UPDATE SCROLLBARS
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   616
"
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   617
    index := listViews size + leftHistory size + rightHistory size.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   618
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   619
    (listViews last) selectedInstanceType notNil ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   620
        index := index + 1
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   621
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   622
    scrollBar thumbHeight:(stop / index) * 100.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   623
    scrollBar thumbOrigin:(100  / index * leftHistory size).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   624
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   625
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   626
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   627
!InspectorPanelView methodsFor:'private frames'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   628
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   629
computeExtentOfFrames
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   630
    "compute the extent of all frames (origin/corner)
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   631
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   632
    |orig corn offset newX|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   633
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   634
    orig := ( 0.0 @ 0.0 ).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   635
    corn := ( 0.0 @ 1.0 ).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   636
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   637
    offset := 1.0 / (frames size).
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   638
    newX   := 0.0.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   639
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   640
    frames do:[:frame|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   641
        (newX := newX + offset) > 1.0 ifTrue:[ newX := 1.0 ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   642
        corn  := newX @ corn y.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   643
        frame origin:orig corner:corn.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   644
        orig  := newX @ orig y.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   645
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   646
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   647
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   648
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   649
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   650
createViewWithoutRedraw
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   651
    "add a new view at end
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   652
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   653
    |view frame label index|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   654
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   655
    frame := SimpleView in:hzpView.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   656
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   657
    label := Label origin:0.0@0.0 corner:1.0@20 in:frame.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   658
    label  leftInset:15.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   659
    label rightInset:2.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   660
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   661
    view  := ScrollableView for:InspectorListView miniScroller:true origin:0.0@20 
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   662
                         corner:1.0@1.0 in:frame.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   663
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   664
    view := view scrolledView.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   665
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   666
    frames add:frame.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   667
    labelViews add:label.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   668
    listViews  add:view.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   669
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   670
    index := listViews size.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   671
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   672
    index == 1 ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   673
        view includesSelf:true
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   674
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   675
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   676
    label adjust:#left.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   677
    label label:''.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   678
    label level:1.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   679
    label menuHolder:self; menuMessage:#labelMenu; menuPerformer:self.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   680
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   681
    view action:[:el|self singleClickAt:index].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   682
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   683
    view delegate:self.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   684
    view menuHolder:self; menuMessage:#viewMenu; menuPerformer:self.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   685
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   686
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   687
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   688
!InspectorPanelView methodsFor:'scrolling-basic'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   689
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   690
moveContentsLeft:nTimes
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   691
    "move the contents of each view one position left
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   692
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   693
    |fView stop assoc inspObj pView index|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   694
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   695
    (nTimes < 1 or:[listViews last isEmpty]) ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   696
        ^ self
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   697
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   698
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   699
    index := nTimes.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   700
    stop  := (listViews size) - 1.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   701
    fView := listViews first.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   702
    pView := listViews at:stop.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   703
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   704
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   705
    [   leftHistory add:fView listHolder.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   706
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   707
        1 to:stop do:[:i|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   708
            (listViews at:i) updateFromView:(listViews at:(i+1))
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   709
        ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   710
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   711
        rightHistory notEmpty ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   712
            (listViews last) updateFromList:(rightHistory removeLast)
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   713
        ] ifFalse:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   714
            (listViews last) inspect:(pView selectedInstanceVar)
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   715
        ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   716
        ((index := index - 1) == 0 or:[listViews last isEmpty])
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   717
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   718
    ] whileFalse.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   719
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   720
    self update.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   721
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   722
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   723
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   724
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   725
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   726
moveContentsRight:nTimes
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   727
    "move the contents of all listViews one position right
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   728
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   729
    |view assoc size index lView fView|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   730
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   731
    size := leftHistory size.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   732
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   733
    (nTimes > 0 and:[size ~~ 0]) ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   734
        nTimes > size ifFalse:[index := nTimes]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   735
                       ifTrue:[index := size].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   736
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   737
        size  := listViews size.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   738
        lView := listViews last.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   739
        fView := listViews first.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   740
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   741
        1 to:index do:[:i|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   742
            lView hasSelection ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   743
                rightHistory add:(lView listHolder)
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   744
            ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   745
            size to:2 by:-1 do:[:i|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   746
                (listViews at:i) updateFromView:(listViews at:(i-1))
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   747
            ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   748
            fView updateFromList:(leftHistory removeLast)
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   749
        ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   750
        self update
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   751
    ]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   752
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   753
!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   754
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   755
scrollTo:nPercent
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   756
    "set views dependant on scroll bar
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   757
    "
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   758
    |dY no noScr pR|
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   759
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   760
    noScr := listViews size + leftHistory size + rightHistory size.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   761
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   762
    (listViews last) selectedInstanceType notNil ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   763
        noScr := noScr + 1
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   764
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   765
    dY := 100 / noScr.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   766
    pR := nPercent roundTo:dY.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   767
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   768
    no := ((dY * leftHistory size) - pR) / dY.
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   769
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   770
    no == 0 ifTrue:[
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   771
        (nPercent - pR) > 0 ifTrue:[no := -1]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   772
                           ifFalse:[no :=  1]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   773
    ].
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   774
    no < 0 ifTrue:[self moveContentsLeft:(no negated)]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   775
          ifFalse:[self moveContentsRight:no]
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   776
! !
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   777
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   778
!InspectorPanelView class methodsFor:'documentation'!
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   779
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   780
version
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   781
    ^ '$Header$'
6f1565819b63 intitial checkin
ca
parents:
diff changeset
   782
! !