VariablePanelController.st
author Claus Gittinger <cg@exept.de>
Thu, 19 Nov 1998 13:06:39 +0100
changeset 1722 cfbd32394b80
parent 1720 896886032334
child 1785 3103fc945869
permissions -rw-r--r--
checkin from browser
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
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
    94
    view buttonMotionEventPending ifTrue:[^ self].
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:[
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   169
        self buttonRelease:1 x:bx y:by.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   170
        self buttonPress:1 x:bx y:by.
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
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   173
    "Modified: / 13.11.1998 / 15:13:47 / cg"
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   174
!
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   175
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   176
buttonPress:button x:bx y:by
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   177
    "button was pressed - if it hits a handle, start move"
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   178
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   179
    |handle barHeight group isHorizontal|
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   180
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   181
    ((button == 1) or:[button == #select]) ifTrue:[
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   182
        handle := 1.
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   183
        barHeight := view barHeight.
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   184
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   185
        isHorizontal := view orientation ~~ #vertical.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   186
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   187
        "
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   188
         search the handle, invert the first time
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   189
        "
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   190
        view handleOriginsWithIndexDo:[:hPoint :hIndex |
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   191
            |hx hy thatsTheHandle|
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   192
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   193
            thatsTheHandle := false.
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   194
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   195
            isHorizontal ifTrue:[
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   196
                hx := hPoint x.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   197
                hy := 0.
1333
56af09878b96 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1215
diff changeset
   198
                (bx between:(hx - barHeight) and:(hx + barHeight)) ifTrue:[
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   199
                    prevPos := hx.
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   200
                    startPos := bx - hx.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   201
                    thatsTheHandle := true.
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   202
                ].
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   203
            ] ifFalse:[
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   204
                hx := 0.
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   205
                hy := hPoint y.
1333
56af09878b96 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1215
diff changeset
   206
                (by between:(hy - barHeight) and:(hy + barHeight)) ifTrue:[
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   207
                    prevPos := hy.
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   208
                    startPos := by - hy.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   209
                    thatsTheHandle := true.
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   210
                ].
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   211
            ].
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   212
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   213
            thatsTheHandle ifTrue:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   214
                movedHandle := handle.
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   215
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   216
                OpaqueResize ~~ true ifTrue:[
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   217
                    view grabPointer.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   218
                    view invertHandleBarAtX:hx y:hy.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   219
                ].
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   220
                (group := view windowGroup) notNil ifTrue:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   221
                    group showCursor:view cursor
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   222
                ].
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   223
                clickPos := bx @ by.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   224
                ^ self
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   225
            ].
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   226
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   227
            handle := handle + 1
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   228
        ].
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   229
        movedHandle := nil
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   230
    ] ifFalse:[
872
3cdb211615e2 add labels to vertical panel
ca
parents: 821
diff changeset
   231
        super buttonPress:button x:bx y:by
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   232
    ]
1333
56af09878b96 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1215
diff changeset
   233
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   234
    "Modified: / 13.11.1998 / 15:18:10 / cg"
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   235
!
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   236
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   237
buttonRelease:button x:bx y:by
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   238
    "end bar-move"
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   239
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   240
    |aboveView belowView aboveIndex belowIndex 
131
claus
parents: 126
diff changeset
   241
     newPos oldPos group subViews 
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   242
     relCornerAbove fromIndex toIndex
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   243
     hX hY isHorizontal newCorner newOrigin|
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   244
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   245
    ((button == 1) or:[button == #select]) ifTrue:[
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   246
        movedHandle isNil ifTrue:[^ self].
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   247
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   248
        isHorizontal := view orientation ~~ #vertical.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   249
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   250
        OpaqueResize ~~ true ifTrue:[
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   251
            view ungrabPointer.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   252
        ].
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   253
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   254
        (group := view windowGroup) notNil ifTrue:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   255
            group restoreCursors
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   256
        ].
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   257
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   258
        "undo the last invert"
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   259
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   260
        isHorizontal ifTrue:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   261
            hX := prevPos. hY := 0. 
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   262
        ] ifFalse:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   263
            hX := 0. hY := prevPos. 
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   264
        ].
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   265
        OpaqueResize ~~ true ifTrue:[
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   266
            view invertHandleBarAtX:hX y:hY. 
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   267
        ].
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   268
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   269
        "/ any change ?
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   270
        isHorizontal ifTrue:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   271
            bx == clickPos x ifTrue:[^ self].
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   272
        ] ifFalse:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   273
            by == clickPos y ifTrue:[^ self].
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   274
        ].
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   275
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   276
        "compute the new relative heights"
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   277
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   278
        aboveIndex := movedHandle.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   279
        belowIndex := movedHandle + 1.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   280
        movedHandle := nil.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   281
        subViews := view subViews.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   282
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   283
        aboveView := subViews at:aboveIndex.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   284
        belowView := subViews at:belowIndex.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   285
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   286
        relCornerAbove := aboveView relativeCorner.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   287
        isHorizontal ifTrue:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   288
            oldPos := relCornerAbove x.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   289
            newPos := (prevPos + startPos / view width) asFloat.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   290
            newCorner := newPos @ relCornerAbove y.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   291
            newOrigin := newPos @ belowView relativeOrigin y.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   292
        ] ifFalse:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   293
            oldPos := relCornerAbove y.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   294
            newPos := (prevPos + startPos / view height) asFloat.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   295
            newCorner := relCornerAbove x @ newPos.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   296
            newOrigin := belowView relativeOrigin x @ newPos.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   297
        ].
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   298
        aboveView relativeCorner:newCorner.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   299
        belowView relativeOrigin:newOrigin.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   300
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   301
        view lockRedraw.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   302
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   303
        oldPos > newPos ifTrue:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   304
            fromIndex := aboveIndex. toIndex := belowIndex.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   305
        ] ifFalse:[
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   306
            fromIndex := belowIndex. toIndex := aboveIndex.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   307
        ].
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   308
        view resizeSubviewsFrom:fromIndex to:toIndex.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   309
        view redrawHandlesFrom:aboveIndex to:belowIndex.
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   310
        view unlockRedraw.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   311
    ] ifFalse:[
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   312
        super buttonRelease:button x:bx y:by
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   313
    ]
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   314
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   315
    "Modified: / 13.11.1998 / 15:17:54 / cg"
1483
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   316
!
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   317
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   318
pointerEnter:state x:x y:y
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   319
    state == 0 ifTrue:[
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   320
        movedHandle notNil ifTrue:[self buttonRelease:1 x:x y:y]
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   321
    ]
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   322
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   323
    "Created: / 9.4.1998 / 12:34:22 / cg"
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   324
    "Modified: / 9.4.1998 / 12:35:05 / cg"
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   325
! !
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   326
203
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   327
!VariablePanelController class methodsFor:'documentation'!
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   328
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   329
version
1722
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   330
    ^ '$Header: /cvs/stx/stx/libwidg/VariablePanelController.st,v 1.18 1998-11-19 12:06:39 cg Exp $'
203
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   331
! !