VariablePanelController.st
author Claus Gittinger <cg@exept.de>
Sat, 24 Apr 1999 17:47:34 +0200
changeset 1871 a6b15bdfcc92
parent 1802 7568d855aa0e
child 2005 9b1ff373a8ad
permissions -rw-r--r--
better opaque resize
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
     1
"
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1995 by Claus Gittinger
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
     3
	      All Rights Reserved
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
     4
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    11
"
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    12
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    13
Controller subclass:#VariablePanelController
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
    14
	instanceVariableNames:'movedHandle prevPos startPos clickPos'
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    15
	classVariableNames:'OpaqueResize'
582
e151eeae2c9a documentation
Claus Gittinger <cg@exept.de>
parents: 294
diff changeset
    16
	poolDictionaries:''
e151eeae2c9a documentation
Claus Gittinger <cg@exept.de>
parents: 294
diff changeset
    17
	category:'Interface-Support-Controllers'
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    18
!
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    19
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    20
!VariablePanelController class methodsFor:'documentation'!
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    21
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    22
copyright
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    23
"
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    24
 COPYRIGHT (c) 1995 by Claus Gittinger
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    25
	      All Rights Reserved
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    26
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    27
 This software is furnished under a license and may be used
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    28
 only in accordance with the terms of that license and with the
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    29
 inclusion of the above copyright notice.   This software may not
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    30
 be provided or otherwise made available to, or used by, any
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    31
 other person.  No title to or ownership of the software is
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    32
 hereby transferred.
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    33
"
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    34
!
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    35
150
claus
parents: 131
diff changeset
    36
documentation
claus
parents: 131
diff changeset
    37
"
claus
parents: 131
diff changeset
    38
    An abstract class for variablePanel controllers;
claus
parents: 131
diff changeset
    39
    normally, not used directly by applications, these are created automatically
claus
parents: 131
diff changeset
    40
    whenever a variablePanel is created.
claus
parents: 131
diff changeset
    41
    Instances are responsible for tracking the mouse pointer and resize the
claus
parents: 131
diff changeset
    42
    views (a panel) subviews as appropriate.
582
e151eeae2c9a documentation
Claus Gittinger <cg@exept.de>
parents: 294
diff changeset
    43
e151eeae2c9a documentation
Claus Gittinger <cg@exept.de>
parents: 294
diff changeset
    44
    [author:]
e151eeae2c9a documentation
Claus Gittinger <cg@exept.de>
parents: 294
diff changeset
    45
        Claus Gittinger
150
claus
parents: 131
diff changeset
    46
"
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    47
! !
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    48
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    49
!VariablePanelController class methodsFor:'defaults'!
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    50
1722
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    51
opaqueResize
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    52
    "return the sopaque-resizing flag setting.
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    53
     If off (the default), the resizing takes place at the end of
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    54
     the handle move operation (when the mouse button is released).
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    55
     If on, the resizing is syncronous with the move.
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    56
     On slow machines, it may make sense to leave it off."
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    57
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    58
    ^ OpaqueResize
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    59
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    60
    "Created: / 19.11.1998 / 12:35:26 / cg"
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    61
!
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    62
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    63
opaqueResize:aBoolean
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    64
    "set/clear opaque-resizing.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    65
     If off (the default), the resizing takes place at the end of
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    66
     the handle move operation (when the mouse button is released).
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    67
     If on, the resizing is syncronous with the move.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    68
     On slow machines, it may make sense to leave it off."
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    69
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    70
    OpaqueResize := aBoolean.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    71
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    72
    "
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    73
     self opaqueResize:true
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    74
     self opaqueResize:false
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    75
    "
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    76
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    77
    "Modified: / 13.11.1998 / 15:16:37 / cg"
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    78
! !
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    79
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    80
!VariablePanelController methodsFor:'event handling'!
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    81
161
claus
parents: 150
diff changeset
    82
buttonMotion:state x:bx y:by
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    83
    "mouse-button was moved while pressed;
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    84
     clear prev handleBar and draw handle bar at new position" 
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    85
131
claus
parents: 126
diff changeset
    86
    |pos limitMin limitMax subViews barHeight
claus
parents: 126
diff changeset
    87
     oldHx oldHy newHx newHy|
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    88
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    89
    movedHandle isNil ifTrue: [^ self].          "should not happen"
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    90
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    91
    "speedup - if there is already another movement, 
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    92
     ignore thisone ... "
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    93
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
    94
"/    view buttonMotionEventPending ifTrue:[^ self].
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    95
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    96
    subViews := view subViews.
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    97
    barHeight := view barHeight.
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    98
294
667773990289 merged all variablePanel code into a common class.
Claus Gittinger <cg@exept.de>
parents: 203
diff changeset
    99
    view orientation ~~ #vertical ifTrue:[
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   100
        pos := bx - startPos.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   101
        "
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   102
         the two lines below will not allow resizing down to zero
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   103
         (so that some is always visible)
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   104
        "
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   105
"/        limitMin := barHeight // 2.
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   106
"/        limitMax := view width - barHeight.
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   107
        "
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   108
         these allow resizing to zero - which is better ?
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   109
        "
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   110
        limitMin := 0.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   111
        limitMax := view innerWidth.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   112
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   113
        movedHandle > 1 ifTrue:[
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   114
            limitMin := (subViews at:movedHandle) origin x + (barHeight // 2)
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   115
        ].
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   116
        movedHandle < (subViews size - 1) ifTrue:[
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   117
            limitMax := (subViews at:(movedHandle + 2)) origin x - barHeight
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   118
        ].
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   119
    ] ifFalse:[
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   120
        pos := by - startPos.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   121
        "
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   122
         the two lines below will not allow resizing down to zero
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   123
         (so that some is always visible)
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   124
        "
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   125
"/        limitMin := barHeight // 2.
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   126
"/        limitMax := view height - barHeight.
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   127
        "
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   128
         these allow resizing to zero - which is better ?
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   129
        "
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   130
        limitMin := 0.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   131
        limitMax := view innerHeight.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   132
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   133
        movedHandle > 1 ifTrue:[
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   134
            limitMin := (subViews at:movedHandle) origin y + (barHeight // 2)
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   135
        ].
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   136
        movedHandle < (subViews size - 1) ifTrue:[
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   137
            limitMax := (subViews at:(movedHandle + 2)) origin y - barHeight
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   138
        ].
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   139
    ].
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   140
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   141
    limitMax := limitMax - barHeight.
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   142
    (pos < limitMin) ifTrue:[ "check against view limits"
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   143
        pos := limitMin
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   144
    ] ifFalse:[
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   145
        (pos > limitMax) ifTrue:[
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   146
            pos := limitMax
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   147
        ]
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   148
    ].
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   149
1215
0d9e67bdfbe4 check for any change before moving handle (tiny optimization)
Claus Gittinger <cg@exept.de>
parents: 872
diff changeset
   150
    prevPos == pos ifTrue:[^ self].
0d9e67bdfbe4 check for any change before moving handle (tiny optimization)
Claus Gittinger <cg@exept.de>
parents: 872
diff changeset
   151
0d9e67bdfbe4 check for any change before moving handle (tiny optimization)
Claus Gittinger <cg@exept.de>
parents: 872
diff changeset
   152
    view orientation ~~ #vertical ifTrue:[
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   153
        oldHx := prevPos. 
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   154
        newHx := pos.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   155
        oldHy := newHy := 0.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   156
    ] ifFalse:[
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   157
        oldHy := prevPos.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   158
        newHy := pos.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   159
        oldHx := newHx := 0.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   160
    ].
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   161
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   162
    OpaqueResize ~~ true ifTrue:[
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   163
        view invertHandleBarAtX:oldHx y:oldHy. 
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   164
        view invertHandleBarAtX:newHx y:newHy.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   165
    ].
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   166
    prevPos := pos.
131
claus
parents: 126
diff changeset
   167
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   168
    OpaqueResize == true ifTrue:[
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   169
        self doResizeForX:bx y:by.
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   170
    ]
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   171
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   172
    "Modified: / 13.11.1998 / 15:13:47 / cg"
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   173
!
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   174
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   175
buttonPress:button x:bx y:by
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   176
    "button was pressed - if it hits a handle, start move"
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   177
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   178
    |handle barHeight group isHorizontal|
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   179
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   180
    ((button == 1) or:[button == #select]) ifTrue:[
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   181
        handle := 1.
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   182
        barHeight := view barHeight.
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   183
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   184
        isHorizontal := view orientation ~~ #vertical.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   185
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   186
        "
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   187
         search the handle, invert the first time
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   188
        "
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   189
        view handleOriginsWithIndexDo:[:hPoint :hIndex |
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   190
            |hx hy thatsTheHandle|
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   191
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   192
            thatsTheHandle := false.
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   193
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   194
            isHorizontal ifTrue:[
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   195
                hx := hPoint x.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   196
                hy := 0.
1333
56af09878b96 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1215
diff changeset
   197
                (bx between:(hx - barHeight) and:(hx + barHeight)) ifTrue:[
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   198
                    prevPos := hx.
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   199
                    startPos := bx - hx.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   200
                    thatsTheHandle := true.
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   201
                ].
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   202
            ] ifFalse:[
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   203
                hx := 0.
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   204
                hy := hPoint y.
1333
56af09878b96 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1215
diff changeset
   205
                (by between:(hy - barHeight) and:(hy + barHeight)) ifTrue:[
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   206
                    prevPos := hy.
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   207
                    startPos := by - hy.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   208
                    thatsTheHandle := true.
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   209
                ].
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   210
            ].
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   211
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   212
            thatsTheHandle ifTrue:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   213
                movedHandle := handle.
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   214
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   215
                OpaqueResize == true ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   216
                    view grabPointerWithCursor:view cursor.
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   217
                ].
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   218
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   219
                OpaqueResize ~~ true ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   220
                    view invertHandleBarAtX:hx y:hy.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   221
                    (group := view windowGroup) notNil ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   222
                        group showCursor:view cursor
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   223
                    ].
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   224
                ].
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   225
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   226
                clickPos := bx @ by.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   227
                ^ self
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   228
            ].
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   229
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   230
            handle := handle + 1
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   231
        ].
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   232
        movedHandle := nil
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   233
    ] ifFalse:[
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   234
        super buttonPress:button x:bx y:by
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   235
    ]
1333
56af09878b96 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1215
diff changeset
   236
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   237
    "Modified: / 13.11.1998 / 15:18:10 / cg"
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   238
!
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   239
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   240
buttonRelease:button x:bx y:by
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   241
    "end bar-move"
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   242
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   243
    |group|
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   244
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   245
    ((button == 1) or:[button == #select]) ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   246
        movedHandle isNil ifTrue:[^ self].
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   247
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   248
        view ungrabPointer.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   249
        OpaqueResize ~~ true ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   250
            (group := view windowGroup) notNil ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   251
                group restoreCursors
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   252
            ]
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   253
        ].
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   254
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   255
        self doResizeForX:bx y:by.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   256
        movedHandle := nil.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   257
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   258
    ] ifFalse:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   259
        super buttonRelease:button x:bx y:by
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   260
    ]
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   261
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   262
    "Modified: / 11.3.1999 / 16:31:29 / cg"
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   263
!
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   264
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   265
doResizeForX:bx y:by
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   266
    "end bar-move"
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   267
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   268
    |aboveView belowView aboveIndex belowIndex 
131
claus
parents: 126
diff changeset
   269
     newPos oldPos group subViews 
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   270
     relCornerAbove fromIndex toIndex
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   271
     hX hY isHorizontal newCorner newOrigin|
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   272
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   273
    isHorizontal := view orientation ~~ #vertical.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   274
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   275
    "undo the last invert"
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   276
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   277
    isHorizontal ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   278
        hX := prevPos. hY := 0. 
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   279
    ] ifFalse:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   280
        hX := 0. hY := prevPos. 
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   281
    ].
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   282
    OpaqueResize ~~ true ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   283
        view invertHandleBarAtX:hX y:hY. 
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   284
    ].
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   285
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   286
    "/ any change ?
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   287
    ((isHorizontal and:[bx == clickPos x])
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   288
    or:[isHorizontal not and:[by == clickPos y]]) ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   289
        ^ self.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   290
    ].
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   291
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   292
    "compute the new relative heights"
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   293
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   294
    aboveIndex := movedHandle.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   295
    belowIndex := movedHandle + 1.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   296
    subViews := view subViews.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   297
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   298
    aboveView := subViews at:aboveIndex.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   299
    belowView := subViews at:belowIndex.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   300
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   301
    relCornerAbove := aboveView relativeCorner.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   302
    isHorizontal ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   303
        oldPos := relCornerAbove x.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   304
        newPos := (prevPos + startPos / view width) asFloat.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   305
        newCorner := newPos @ relCornerAbove y.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   306
        newOrigin := newPos @ belowView relativeOrigin y.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   307
    ] ifFalse:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   308
        oldPos := relCornerAbove y.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   309
        newPos := (prevPos + startPos / view height) asFloat.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   310
        newCorner := relCornerAbove x @ newPos.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   311
        newOrigin := belowView relativeOrigin x @ newPos.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   312
    ].
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   313
    aboveView relativeCorner:newCorner.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   314
    belowView relativeOrigin:newOrigin.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   315
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   316
    view lockRedraw.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   317
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   318
    oldPos > newPos ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   319
        fromIndex := aboveIndex. toIndex := belowIndex.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   320
    ] ifFalse:[
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   321
        fromIndex := belowIndex. toIndex := aboveIndex.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   322
    ].
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   323
    view resizeSubviewsFrom:fromIndex to:toIndex.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   324
    view redrawHandlesFrom:aboveIndex to:belowIndex.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   325
    view unlockRedraw.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   326
1785
3103fc945869 fixed leftOver-inverted bar redraw bug
Claus Gittinger <cg@exept.de>
parents: 1722
diff changeset
   327
    "Modified: / 11.3.1999 / 16:31:29 / cg"
1483
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   328
!
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   329
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   330
pointerEnter:state x:x y:y
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   331
    state == 0 ifTrue:[
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   332
        movedHandle notNil ifTrue:[self buttonRelease:1 x:x y:y]
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   333
    ]
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   334
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   335
    "Created: / 9.4.1998 / 12:34:22 / cg"
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   336
    "Modified: / 9.4.1998 / 12:35:05 / cg"
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   337
! !
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   338
203
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   339
!VariablePanelController class methodsFor:'documentation'!
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   340
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   341
version
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   342
    ^ '$Header: /cvs/stx/stx/libwidg/VariablePanelController.st,v 1.22 1999-04-24 15:47:34 cg Exp $'
203
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   343
! !