VariablePanelController.st
author Claus Gittinger <cg@exept.de>
Mon, 06 Sep 1999 14:57:31 +0200
changeset 2005 9b1ff373a8ad
parent 1871 a6b15bdfcc92
child 2159 2864c0de7f33
permissions -rw-r--r--
moved opaqueResize setting to userPreferences
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'
2005
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
    15
	classVariableNames:''
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
2005
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
    58
    self obsoleteMethodWarning.
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
    59
    ^ UserPreferences current opaqueVariablePanelResizing
1722
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    60
!
cfbd32394b80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    61
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    62
opaqueResize:aBoolean
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    63
    "set/clear opaque-resizing.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    64
     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
    65
     the handle move operation (when the mouse button is released).
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    66
     If on, the resizing is syncronous with the move.
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    67
     On slow machines, it may make sense to leave it off."
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
    68
2005
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
    69
    self obsoleteMethodWarning.
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
    70
    ^ UserPreferences current opaqueVariablePanelResizing:aBoolean
1720
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
2005
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
    87
     oldHx oldHy newHx newHy opaque|
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
2005
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
   162
    opaque := UserPreferences current opaqueVariablePanelResizing.
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
   163
    opaque ~~ true ifTrue:[
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   164
        view invertHandleBarAtX:oldHx y:oldHy. 
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   165
        view invertHandleBarAtX:newHx y:newHy.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   166
    ].
1720
896886032334 added opaqueResize option.
Claus Gittinger <cg@exept.de>
parents: 1626
diff changeset
   167
    prevPos := pos.
131
claus
parents: 126
diff changeset
   168
2005
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
   169
    opaque == true ifTrue:[
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   170
        self doResizeForX:bx y:by.
1720
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
2005
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
   216
                UserPreferences current opaqueVariablePanelResizing == true ifTrue:[
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   217
                    view grabPointerWithCursor:view cursor.
2005
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
   218
                ] ifFalse:[
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   219
                    view invertHandleBarAtX:hx y:hy.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   220
                    (group := view windowGroup) notNil ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   221
                        group showCursor:view cursor
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   222
                    ].
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   223
                ].
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   224
1626
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
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   242
    |group|
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   243
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   244
    ((button == 1) or:[button == #select]) ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   245
        movedHandle isNil ifTrue:[^ self].
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   246
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   247
        view ungrabPointer.
2005
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
   248
        UserPreferences current opaqueVariablePanelResizing ~~ true ifTrue:[
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   249
            (group := view windowGroup) notNil ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   250
                group restoreCursors
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   251
            ]
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
        self doResizeForX:bx y:by.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   255
        movedHandle := nil.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   256
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   257
    ] ifFalse:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   258
        super buttonRelease:button x:bx y:by
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   259
    ]
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
    "Modified: / 11.3.1999 / 16:31:29 / cg"
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   262
!
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
doResizeForX:bx y:by
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   265
    "end bar-move"
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   266
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   267
    |aboveView belowView aboveIndex belowIndex 
131
claus
parents: 126
diff changeset
   268
     newPos oldPos group subViews 
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   269
     relCornerAbove fromIndex toIndex
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   270
     hX hY isHorizontal newCorner newOrigin|
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   271
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   272
    isHorizontal := view orientation ~~ #vertical.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   273
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   274
    "undo the last invert"
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   275
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   276
    isHorizontal ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   277
        hX := prevPos. hY := 0. 
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   278
    ] ifFalse:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   279
        hX := 0. hY := prevPos. 
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   280
    ].
2005
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
   281
    UserPreferences current opaqueVariablePanelResizing ~~ true ifTrue:[
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   282
        view invertHandleBarAtX:hX y:hY. 
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   283
    ].
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   284
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   285
    "/ any change ?
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   286
    ((isHorizontal and:[bx == clickPos x])
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   287
    or:[isHorizontal not and:[by == clickPos y]]) ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   288
        ^ self.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   289
    ].
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   290
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   291
    "compute the new relative heights"
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   292
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   293
    aboveIndex := movedHandle.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   294
    belowIndex := movedHandle + 1.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   295
    subViews := view subViews.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   296
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   297
    aboveView := subViews at:aboveIndex.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   298
    belowView := subViews at:belowIndex.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   299
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   300
    relCornerAbove := aboveView relativeCorner.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   301
    isHorizontal ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   302
        oldPos := relCornerAbove x.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   303
        newPos := (prevPos + startPos / view width) asFloat.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   304
        newCorner := newPos @ relCornerAbove y.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   305
        newOrigin := newPos @ belowView relativeOrigin y.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   306
    ] ifFalse:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   307
        oldPos := relCornerAbove y.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   308
        newPos := (prevPos + startPos / view height) asFloat.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   309
        newCorner := relCornerAbove x @ newPos.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   310
        newOrigin := belowView relativeOrigin x @ newPos.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   311
    ].
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   312
    aboveView relativeCorner:newCorner.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   313
    belowView relativeOrigin:newOrigin.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   314
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   315
    view lockRedraw.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   316
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   317
    oldPos > newPos ifTrue:[
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   318
        fromIndex := aboveIndex. toIndex := belowIndex.
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   319
    ] ifFalse:[
1871
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   320
        fromIndex := belowIndex. toIndex := aboveIndex.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   321
    ].
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   322
    view resizeSubviewsFrom:fromIndex to:toIndex.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   323
    view redrawHandlesFrom:aboveIndex to:belowIndex.
a6b15bdfcc92 better opaque resize
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   324
    view unlockRedraw.
1626
3013631d4384 do nothing if pointer was never moved;
Claus Gittinger <cg@exept.de>
parents: 1483
diff changeset
   325
1785
3103fc945869 fixed leftOver-inverted bar redraw bug
Claus Gittinger <cg@exept.de>
parents: 1722
diff changeset
   326
    "Modified: / 11.3.1999 / 16:31:29 / cg"
1483
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   327
!
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
pointerEnter:state x:x y:y
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   330
    state == 0 ifTrue:[
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   331
        movedHandle notNil ifTrue:[self buttonRelease:1 x:x y:y]
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   332
    ]
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
    "Created: / 9.4.1998 / 12:34:22 / cg"
e0fb580b5131 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1333
diff changeset
   335
    "Modified: / 9.4.1998 / 12:35:05 / cg"
200
aa3e56929a5a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   336
! !
104
ca75c90df7a9 Initial revision
claus
parents:
diff changeset
   337
203
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   338
!VariablePanelController class methodsFor:'documentation'!
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   339
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   340
version
2005
9b1ff373a8ad moved opaqueResize setting to userPreferences
Claus Gittinger <cg@exept.de>
parents: 1871
diff changeset
   341
    ^ '$Header: /cvs/stx/stx/libwidg/VariablePanelController.st,v 1.23 1999-09-06 12:57:31 cg Exp $'
203
8a38b0b03233 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   342
! !