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