VariableHorizontalPanel.st
author claus
Mon, 27 Feb 1995 11:41:57 +0100
changeset 95 7535cfca9509
parent 70 14443a9ea4ec
child 99 abb8fe62848f
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     1
"
5
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1992 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
     3
	      All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     4
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    11
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    12
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    13
VariableVerticalPanel subclass:#VariableHorizontalPanel
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    14
	 instanceVariableNames:''
95
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
    15
	 classVariableNames:'DefaultCursor'
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    16
	 poolDictionaries:''
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    17
	 category:'Views-Layout'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
VariableHorizontalPanel comment:'
5
claus
parents: 3
diff changeset
    21
COPYRIGHT (c) 1992 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    22
	      All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    23
95
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
    24
$Header: /cvs/stx/stx/libwidg/VariableHorizontalPanel.st,v 1.11 1995-02-27 10:41:41 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    25
'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    26
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    27
!VariableHorizontalPanel class methodsFor:'documentation'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    28
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    29
copyright
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    30
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    31
 COPYRIGHT (c) 1992 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    32
	      All Rights Reserved
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    33
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    34
 This software is furnished under a license and may be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    35
 only in accordance with the terms of that license and with the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    36
 inclusion of the above copyright notice.   This software may not
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    37
 be provided or otherwise made available to, or used by, any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    38
 other person.  No title to or ownership of the software is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    39
 hereby transferred.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    40
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    41
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    42
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    43
version
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    44
"
95
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
    45
$Header: /cvs/stx/stx/libwidg/VariableHorizontalPanel.st,v 1.11 1995-02-27 10:41:41 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    46
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    47
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    48
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    49
documentation
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    50
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    51
    a View to separate its subviews horizontally by a movable bar
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    52
    to adjust the size-ratios.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    53
    The bar-handle is either an exposed knob (knobStyle == #motif)
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    54
    or the forms defined in Scroller (knobStyle ~~ #motif)
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    55
    or nothing.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    56
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    57
    The subvies dimensions MUST be given as relative sizes;
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    58
    typically creation is done as:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    59
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    60
	p := VariableHorizontalPanel in:superView.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    61
	v1 := <someViewClass> origin:0.0 @ 0.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    62
			      corner:0.5 @ 1.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    63
				  in:p.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    64
	v2 := <someViewClass> origin:0.5 @ 0.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    65
			      corner:0.8 @ 1.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    66
				  in:p.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    67
	v3 := <someViewClass> origin:0.8 @ 0.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    68
			      corner:1.0 @ 1.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    69
				  in:p.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    70
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
    71
"
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
    72
!
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
    73
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
    74
examples
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
    75
"
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    76
   example:
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    77
	|top p v1 v2 v3|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
    78
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    79
	top := StandardSystemView new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    80
	top extent:300@200.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    81
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    82
	p := VariableHorizontalPanel 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    83
		 origin:0.0 @ 0.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    84
		 corner:1.0 @ 1.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    85
		 in:top.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    86
	v1 := SelectionInListView 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    87
		 origin:0.0 @ 0.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    88
		 corner:0.5 @ 1.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    89
		 in:p.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    90
	v2 := EditTextView 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    91
		 origin:0.5 @ 0.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    92
		 corner:0.8 @ 1.0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    93
		 in:p.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    94
	v3 := ScrollableView 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    95
		 for:TextView 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    96
		 in:p.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    97
	v3 origin:0.8 @ 0.0 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    98
	   corner:1.0 @ 1.0.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    99
	top open
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
   100
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
   101
! !
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   102
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   103
!VariableHorizontalPanel methodsFor:'initializing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   104
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   105
initCursor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   106
    "set the cursor - a horizontal double arrow"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   107
95
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   108
    DefaultCursor notNil ifTrue:[
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   109
	cursor := DefaultCursor
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   110
    ] ifFalse:[
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   111
	cursor := Cursor sourceForm:(Form fromFile:'VHPanel.xbm')
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   112
			 maskForm:(Form fromFile:'VHPanel_m.xbm')
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   113
			 hotX:8
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   114
			 hotY:8.
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   115
	"
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   116
	 if bitmaps are not available, use a standard cursor
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   117
	"
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   118
	cursor isNil ifTrue:[
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   119
	    "which one looks better ?"
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   120
	    cursor := Cursor leftRightArrow
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   121
	    "cursor := Cursor leftLimitArrow"
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   122
	].
7535cfca9509 *** empty log message ***
claus
parents: 70
diff changeset
   123
	DefaultCursor := cursor
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
   124
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   125
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   127
!VariableHorizontalPanel methodsFor:'private'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
handleOriginsFrom:start to:stop do:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   130
    "evaluate the argument block for some handle-origins"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   131
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   132
    |y hh vDelta|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
    subViews notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   135
	shadowForm notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   136
	    hh := shadowForm height
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   137
	] ifFalse:[
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   138
	    hh := barWidth
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   139
	].
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   140
	(handleStyle ~~ #normal and:[handleStyle ~~ #mswindows]) ifTrue:[
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   141
	    vDelta := barWidth // 2.
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   142
	] ifFalse:[
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   143
	    vDelta := 0
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   144
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   145
	(handlePosition == #left) ifTrue:[
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   146
	    y := vDelta
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   147
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   148
	    (handlePosition == #right) ifTrue:[
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   149
		y := height - hh - margin - vDelta
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   150
	    ] ifFalse:[
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   151
		y := height - barWidth // 2
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   152
	    ]
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   153
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   154
	(start + 1) to:stop do:[:index |
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   155
	    |x view|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   156
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   157
	    view := subViews at:index.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   158
	    x := view origin x - barHeight + 1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   159
	    aBlock value:(x @ y)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   160
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   162
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
setupSubviewSizes
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   165
    "setup subviews sizes (in case of non-relative sizes)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   166
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   167
    |x w |
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   168
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   169
    self anyNonRelativeSubviews ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   170
	"there is at least one subview without
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   171
	 relative origin/extent - setup all subviews
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   172
	 to spread evenly ..."
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   173
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   174
	x := 0.0.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   175
	w := 1.0 / (subViews size).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   176
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   177
	1 to:(subViews size) do:[:index |
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   178
	    |view|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   179
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   180
	    view := subViews at:index.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   181
	    index == subViews size ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   182
		view origin:(x @ 0.0) corner:(1.0 @ 1.0)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   183
	    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   184
		view origin:(x @ 0.0) corner:((x + w) @ 1.0)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   185
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   186
	    x := x + w
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   187
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   188
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   189
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   190
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   191
resizeSubviewsFrom:start to:stop
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   192
    "readjust size of some subviews"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   193
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   194
    |step nSubviews|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   195
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   196
    subViews notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   197
	(start <= stop) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   198
	    step := 1
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   199
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   200
	    step := -1
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   201
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   202
	nSubviews := subViews size.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   203
	start to:stop by:step do:[:index |
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   204
	    |bw view o1 o2 relCorner relOrg newCorner newOrg|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   205
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   206
	    view := subViews at:index.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   207
	    bw := view borderWidth.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   208
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   209
	    index == 1 ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   210
		o1 := 0.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   211
	    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   212
		o1 := barHeight // 2 - bw
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   213
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   214
	    index ==  nSubviews ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   215
		o2 := 0.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   216
	    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   217
		o2 := barHeight // 2 - bw
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   218
	    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   219
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   220
	    relCorner := view relativeCorner.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   221
	    relCorner isNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   222
		self error:'subview must have relative corner'
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   223
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   224
	    newCorner := view cornerFromRelativeCorner.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   225
	    newCorner notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   226
		newCorner x:(newCorner x - o2)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   227
	    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   228
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   229
	    relOrg := view relativeOrigin.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   230
	    relOrg isNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   231
		self error:'subview must have relative origin'
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   232
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   233
	    newOrg := view originFromRelativeOrigin.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   234
	    newOrg notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   235
		(index ~~ 1) ifTrue:[  
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   236
		    newOrg x:(newOrg x + o1)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   237
		].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   238
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   239
	    view pixelOrigin:newOrg corner:newCorner
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   240
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   241
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   242
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   243
70
14443a9ea4ec *** empty log message ***
claus
parents: 63
diff changeset
   244
!VariableHorizontalPanel methodsFor:'event handling'!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   245
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   246
buttonPress:button x:bx y:by
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   247
    "button was pressed - if it hits a handle, start move"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   248
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   249
    |handle|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   250
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
   251
    ((button == 1) or:[button == #select]) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   252
	handle := 1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   253
	self handleOriginsDo:[:hPoint |
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   254
	    |hx|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   255
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   256
	    hx := hPoint x.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   257
	    (bx between:hx and:(hx + barHeight)) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   258
		movedHandle := handle.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   259
		prev := hx.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   260
		start := bx - hx.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   261
		self noClipByChildren.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   262
		self xoring:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   263
		    trackLine ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   264
			self displayLineFromX:hx+(barHeight // 2) y:0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   265
					  toX:hx+(barHeight // 2) y:height.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   266
		    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   267
			self fillRectangleX:hx y:0 width:barHeight height:height
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   268
		    ]
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   269
		].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   270
		self clipByChildren.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   271
		^ self
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   272
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   273
	    handle := handle + 1
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   274
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   275
	movedHandle := nil
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   276
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   277
	super buttonPress:button x:bx y:by
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   278
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   279
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   280
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   281
buttonMotion:buttonMask x:bx y:by
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   282
    "mouse-button was moved while pressed;
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   283
     clear prev handleBar and draw handle bar at new position" 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   284
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   285
    |xpos limitTop limitBot|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   286
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   287
    movedHandle isNil ifTrue: [^ self].          "should not happen"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   288
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   289
    "speedup - if there is already another movement, 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   290
     ignore thisone ... "
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   291
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   292
    device synchronizeOutput.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   293
    self buttonMotionEventPending ifTrue:[^ self].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   294
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   295
    xpos := bx - start.
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   296
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   297
    "see comment in VariableVerticalPanel>>buttonMotion:x:y:"
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   298
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   299
"/    limitTop := barHeight // 2.
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   300
"/    limitBot := self width - barHeight.
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   301
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   302
    limitTop := 0.
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   303
    limitBot := self innerWidth.
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   304
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   305
    movedHandle > 1 ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   306
	limitTop := (subViews at:movedHandle) origin x + (barHeight // 2)
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   307
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   308
    movedHandle < (subViews size - 1) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   309
	limitBot := (subViews at:(movedHandle + 2)) origin x - barHeight
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   310
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   311
    limitBot := limitBot - barHeight.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   312
    (xpos < limitTop) ifTrue:[ "check against view limits"
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   313
	xpos := limitTop
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   314
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   315
	(xpos > limitBot) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   316
	    xpos := limitBot
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   317
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   318
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   319
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   320
    self noClipByChildren.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   321
    self xoring:[
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   322
	trackLine ifTrue:[
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   323
	   self displayLineFromX:prev+(barHeight // 2) y:0
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   324
			     toX:prev+(barHeight // 2) y:height.
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   325
	   self displayLineFromX:xpos+(barHeight // 2) y:0
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   326
			     toX:xpos+(barHeight // 2) y:height.
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   327
	] ifFalse:[
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   328
	    self fillRectangleX:prev y:0 width:barHeight height:height.
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   329
	    self fillRectangleX:xpos y:0 width:barHeight height:height
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   330
	].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   331
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   332
    self clipByChildren.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   333
    prev := xpos
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   334
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   335
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   336
buttonRelease:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   337
    "end bar-move"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   338
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   339
    |aboveView belowView aboveIndex belowIndex newX|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   340
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 23
diff changeset
   341
    ((button == 1) or:[button == #select]) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   342
	movedHandle isNil ifTrue:[^ self].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   343
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   344
	"undo the last xor"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   345
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   346
	self noClipByChildren.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   347
	self xoring:[
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   348
	    trackLine ifTrue:[
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   349
	       self displayLineFromX:prev+(barHeight // 2) y:0
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   350
				 toX:prev+(barHeight // 2) y:height.
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   351
	    ] ifFalse:[
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   352
		self fillRectangleX:prev y:0 width:barHeight height:height
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   353
	    ].
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   354
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   355
	self clipByChildren.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   356
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   357
	"compute the new relative heights"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   358
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   359
	aboveIndex := movedHandle.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   360
	belowIndex := movedHandle + 1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   361
	aboveView := subViews at:aboveIndex.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   362
	belowView := subViews at:belowIndex.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   363
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   364
	newX := (prev + start / width) asFloat .
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   365
	aboveView relativeCorner:newX @ aboveView relativeCorner y.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   366
	belowView relativeOrigin:newX @ belowView relativeOrigin y.
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   367
	movedHandle := nil.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   368
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   369
	self resizeSubviewsFrom:aboveIndex to:belowIndex.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   370
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   371
	"and redraw handles"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   372
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   373
	self redrawHandlesFrom:aboveIndex to:belowIndex
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   374
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   375
	super buttonRelease:button x:x y:y
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   376
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   377
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   378
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   379
!VariableHorizontalPanel methodsFor:'drawing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   380
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   381
drawHandleAtX:hx y:hy
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   382
    |w x m|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   383
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   384
    shadowForm notNil ifTrue:[
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   385
	w := shadowForm width
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   386
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   387
	w := barHeight - 4
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   388
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   389
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   390
    self paint:viewBackground.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   391
    self fillRectangleX:hx y:margin 
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   392
		  width:barHeight
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   393
		 height:(height - margin - margin).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   394
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   395
    (handleStyle ~~ #normal and:[handleStyle ~~ #mswindows]) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   396
	 m := (barHeight - w) // 2.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   397
	 shadowForm isNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   398
	    x := hx + (barHeight // 2).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   399
	    separatingLine ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   400
		self paint:shadowColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   401
		self displayLineFromX:x y:margin toX:x y:(height - margin).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   402
		x := x + 1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   403
		self paint:lightColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   404
		self displayLineFromX:x y:margin toX:x y:(height - margin).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   405
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   406
	    self paint:viewBackground.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   407
	    self fillRectangleX:hx y:(hy - barWidth) 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   408
			  width:w 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   409
			 height:(barWidth + barWidth).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   410
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   411
	    x := hx.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   412
	    handleStyle == #st80 ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   413
		x := x - 1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   414
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   415
	    self drawEdgesForX:(x + m)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   416
			     y:(hy - barWidth)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   417
			 width:w 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   418
			height:(barWidth + barWidth)
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   419
			 level:2.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   420
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   421
	    handleStyle == #iris ifTrue:[
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   422
		self paint:handleColor.
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   423
		self fillDeviceRectangleX:(x + m + 2)
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   424
					y:(hy - barWidth + 2)
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   425
				    width:w - 4
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   426
				   height:(barWidth + barWidth - 4)
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   427
	    ]
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   428
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   429
	    x := hx.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   430
	    self drawHandleFormAtX:(x + m) y:hy
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   431
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   432
	handleStyle == #st80 ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   433
	    x := hx - 1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   434
	    self paint:lightColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   435
	    self displayLineFromX:x y:margin toX:x y:(height - margin).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   436
	    self displayLineFromX:hx y:0 toX:(hx + barHeight - 1) y:0.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   437
	    x := hx + barHeight - 2.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   438
	    self paint:shadowColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   439
	    self displayLineFromX:x y:margin toX:x y:(height - margin).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   440
		"uncomment the -1 if you dont like the notch at the bottom end"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   441
		"                   VVV"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   442
	    self displayLineFromX:hx" "-1" " y:height-1 toX:(hx + barHeight - 1) y:height-1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   443
	].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   444
    ] ifFalse:[
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   445
	x := hx + barHeight - 1.
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   446
	self paint:handleColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   447
	separatingLine ifTrue:[
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   448
	    self displayLineFromX:hx+1 y:0 toX:hx+1 y:height.
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   449
	    self displayLineFromX:x y:0 toX:x y:height.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   450
	].
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   451
	self fillRectangleX:hx y:hy width:barHeight height:barWidth
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   452
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   453
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   454
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   455
redrawHandlesFrom:start to:stop
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   456
    "redraw some handles"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   457
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   458
    subViews notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   459
	self handleOriginsFrom:start to:stop do:[:hPoint |
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   460
	    self drawHandleAtX:(hPoint x) y:(hPoint y)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   461
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   462
	movedHandle notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   463
	    self noClipByChildren.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   464
	    self xoring:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   465
		self fillRectangleX:prev y:0 width:barHeight height:height
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   466
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   467
	    self clipByChildren
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   468
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   469
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   470
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   471
! !