ScrView.st
author claus
Wed, 10 May 1995 04:30:46 +0200
changeset 126 40228f4fd66b
parent 122 04ec3fda7c11
child 130 338e856bddc9
permissions -rw-r--r--
.
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) 1989 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
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
119
claus
parents: 113
diff changeset
    13
SimpleView subclass:#ScrollableView
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    14
       instanceVariableNames:'scrolledView scrollBar helpView innerMargin
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    15
			      scrollBarPosition lockUpdates'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    16
       classVariableNames:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    17
       poolDictionaries:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
       category:'Views-Basic'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    21
ScrollableView comment:'
5
claus
parents: 3
diff changeset
    22
COPYRIGHT (c) 1989 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    23
	      All Rights Reserved
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    24
122
claus
parents: 119
diff changeset
    25
$Header: /cvs/stx/stx/libwidg/Attic/ScrView.st,v 1.16 1995-05-07 00:16:36 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    26
'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    27
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    28
!ScrollableView class methodsFor:'documentation'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    29
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    30
copyright
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    31
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    32
 COPYRIGHT (c) 1989 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    33
	      All Rights Reserved
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    34
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    35
 This software is furnished under a license and may be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    36
 only in accordance with the terms of that license and with the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    37
 inclusion of the above copyright notice.   This software may not
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    38
 be provided or otherwise made available to, or used by, any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    39
 other person.  No title to or ownership of the software is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    40
 hereby transferred.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    41
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    42
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    43
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    44
version
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    45
"
122
claus
parents: 119
diff changeset
    46
$Header: /cvs/stx/stx/libwidg/Attic/ScrView.st,v 1.16 1995-05-07 00:16:36 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    47
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    48
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    49
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    50
documentation
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    51
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    52
    a view containing a scrollbar and some other (slave-)view.
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    53
    This view wraps scrollbars around the view to be scrolled.
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    54
    The scrollbars are setup to send scrollUp/scrollDown/scrollVerticalTo
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    55
    and scrollLeft/scrollRight/scrollHorizontalTo- messages whenever moved.
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    56
    The view itself has to omplement these (there is a default implementation
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    57
    in the common View class for this.
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    58
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    59
    For the scrollbars to know about the full (maximum) size, the view
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    60
    must implement #heightOfContents and/or #widthOfContents.
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    61
    The values returned by these are used to compute the fractio which is
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    62
    visible (i.e. the scrollers thumb heights).
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    63
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    64
    There are two ways to create a ScrollableView:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    65
    if the type of the view to be scrolled is known in advance,
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    66
    use:
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    67
	v := ScrollableView for:<ViewClass> in:someSuperView.
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    68
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    69
    otherwise, create the scrollableView empty with:
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    70
	v := ScrollableView in:someSuperView.
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    71
    and define the view later with:
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    72
	v scrolledView:aViewToBeScrolled
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    73
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    74
    It is also possible to change the scrolledView multiple times,
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    75
    for example if different views are needed to display different types
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    76
    of data (see example2).
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    77
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    78
    If you want to scroll views (instead of contents), you need a companion
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    79
    class (ViewScroller). See the documentation there.
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    80
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    81
    If you need horizontal scrolling too, use an instance of HVScrollableView.
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
    82
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
    83
    By default, scrollbars are full size scrollbars - for horizontal scrolling
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
    84
    (which is less often used), scrollableViews can optionally be created with
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
    85
    miniscrollers which take up less screen space.
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    86
"
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    87
!
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    88
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    89
examples
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    90
"
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    91
    example1 (simple scrolled text):
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    92
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    93
	|top scr txt|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    94
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    95
	top := StandardSystemView label:'scroll example1'.
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
    96
	top extent:200@100.
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
    97
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    98
	scr := ScrollableView for:EditTextView in:top.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    99
	scr origin:0.0@0.0 corner:1.0@1.0.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   100
	txt := scr scrolledView.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   101
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   102
	txt list:#('line1'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   103
		   'line2'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   104
		   'line3'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   105
		   'line4'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   106
		   'line5'
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   107
		   'line7'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   108
		   'line8'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   109
		   'line9'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   110
		   'line10'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   111
		  ).
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   112
	top open
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   113
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   114
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   115
    example2 (changing the scrolledView later):
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   116
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   117
	|top scr txtView1 txtView2 browserView|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   118
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   119
	top := StandardSystemView label:'scroll example2'.
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   120
	top extent:300@100.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   121
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   122
	scr := ScrollableView in:top.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   123
	scr origin:0.0@0.0 corner:1.0@1.0.
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   124
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   125
	top open.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   127
	(Delay forSeconds:5) wait.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   128
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   129
	txtView1 := EditTextView new.
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   130
	txtView1 list:#(
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   131
			'wait 5 seconds to see the other text'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   132
			'line2'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   133
			'line3'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   134
			'line4'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   135
			'line5'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   136
			'line7'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   137
			'line8'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   138
			'line9'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   139
			'line10'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   140
		  ).
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   141
	scr scrolledView:txtView1.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   142
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   143
	(Delay forSeconds:5) wait.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   144
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   145
	txtView2 := EditTextView new.
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   146
	txtView2 list:#('this is the other views text' 
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   147
			'alternative line2'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   148
			'alternative line3'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   149
			'alternative line4'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   150
			'alternative line5'
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   151
			'alternative line6').
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   152
	scr scrolledView:txtView2.
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   153
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   154
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   155
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   156
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   157
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   158
    example3 (using a miniscroller):
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   159
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   160
	|top scr txt|
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   161
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   162
	top := StandardSystemView label:'scroll example3'.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   163
	top extent:200@100.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   164
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   165
	scr := ScrollableView for:EditTextView miniScroller:true in:top.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   166
	scr origin:0.0@0.0 corner:1.0@1.0.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   167
	txt := scr scrolledView.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   168
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   169
	txt list:#('line1'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   170
		   'line2'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   171
		   'line3'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   172
		   'line4'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   173
		   'line5'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   174
		   'line7'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   175
		   'line8'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   176
		   'line9'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   177
		   'line10'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   178
		  ).
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   179
	top open
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   180
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   181
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   182
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   183
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   184
    example4 (scrolling in both directions):
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   185
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   186
	|top scr txt|
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   187
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   188
	top := StandardSystemView label:'scroll example4'.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   189
	top extent:200@100.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   190
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   191
	scr := HVScrollableView for:EditTextView in:top.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   192
	scr origin:0.0@0.0 corner:1.0@1.0.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   193
	txt := scr scrolledView.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   194
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   195
	txt list:#('line1'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   196
		   'line2'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   197
		   'line3'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   198
		   'line4'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   199
		   'line5'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   200
		   'line7'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   201
		   'line8'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   202
		   'line9'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   203
		   'line10'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   204
		  ).
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   205
	top open
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   206
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   207
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   208
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   209
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   210
    example5 (using a full scroller vertically, miniscroller horizontally):
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   211
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   212
	|top scr txt|
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   213
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   214
	top := StandardSystemView label:'scroll example5'.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   215
	top extent:200@100.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   216
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   217
	scr := HVScrollableView for:EditTextView miniScrollerH:true in:top.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   218
	scr origin:0.0@0.0 corner:1.0@1.0.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   219
	txt := scr scrolledView.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   220
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   221
	txt list:#('line1'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   222
		   'line2'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   223
		   'line3'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   224
		   'line4'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   225
		   'line5'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   226
		   'line7'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   227
		   'line8'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   228
		   'line9'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   229
		   'line10'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   230
		  ).
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   231
	top open
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   232
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   233
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   234
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   235
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   236
    example6 (using miniscrollers for both directions ):
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   237
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   238
	|top scr txt|
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   239
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   240
	top := StandardSystemView label:'scroll example6'.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   241
	top extent:200@100.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   242
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   243
	scr := HVScrollableView for:EditTextView miniScroller:true in:top.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   244
	scr origin:0.0@0.0 corner:1.0@1.0.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   245
	txt := scr scrolledView.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   246
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   247
	txt list:#('line1'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   248
		   'line2'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   249
		   'line3'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   250
		   'line4'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   251
		   'line5'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   252
		   'line7'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   253
		   'line8'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   254
		   'line9'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   255
		   'line10'
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   256
		  ).
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   257
	top open
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   258
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   259
! !
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   260
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   261
!ScrollableView class methodsFor:'instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   262
93
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   263
miniScroller:mini
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   264
    "return a new scrolling view. The subview will be created later.
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   265
     The view will have full scrollbars if mini is false, 
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   266
     miniscrollers if true."
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   267
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   268
    ^ self for:nil miniScrollerH:mini miniScrollerV:mini 
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   269
!
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   270
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   271
miniScrollerH:miniH
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   272
    "return a new scrolling view. The subview will be created later.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   273
     The view will have full scrollbars if miniH is false, 
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   274
     and a horizontal miniscroller if true."
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   275
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   276
    ^ self for:nil miniScrollerH:miniH miniScrollerV:false in:nil
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   277
!
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   278
93
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   279
miniScrollerH:miniH miniScrollerV:miniV
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   280
    "return a new scrolling view. The subview will be created later.
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   281
     The view will have full scrollbars if the corresponding miniH/miniV
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   282
     is false, miniscrollers if true."
93
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   283
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   284
    ^ self for:nil miniScrollerH:miniH miniScrollerV:miniV in:nil
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   285
!
f608d94e31ff *** empty log message ***
claus
parents: 77
diff changeset
   286
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   287
in:aView
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   288
    "return a new scrolling view to be contained in aView.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   289
     There is no slave view now - this has to be set later via
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   290
     the scrolledView: method.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   291
     The view will have full scrollbars."
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   292
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   293
    ^ self for:nil miniScrollerH:false miniScrollerV:false in:aView
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   294
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   295
119
claus
parents: 113
diff changeset
   296
forView:aView
claus
parents: 113
diff changeset
   297
    "return a new scrolling view scrolling aView.
claus
parents: 113
diff changeset
   298
     The view will have full scrollbars."
claus
parents: 113
diff changeset
   299
claus
parents: 113
diff changeset
   300
    ^ self forView:aView miniScrollerH:false miniScrollerV:false in:nil
claus
parents: 113
diff changeset
   301
!
claus
parents: 113
diff changeset
   302
claus
parents: 113
diff changeset
   303
forView:scrolledView miniScrollerH:miniH miniScrollerV:miniV in:aView
claus
parents: 113
diff changeset
   304
    "return a new scrolling view, scrolling aView.
claus
parents: 113
diff changeset
   305
     The view will have full scrollbars if the corresponding miniH/miniV
claus
parents: 113
diff changeset
   306
     is false, miniscrollers if true."
claus
parents: 113
diff changeset
   307
claus
parents: 113
diff changeset
   308
    |newView|
claus
parents: 113
diff changeset
   309
claus
parents: 113
diff changeset
   310
    newView := self for:nil miniScrollerH:miniH miniScrollerV:miniV in:aView.
claus
parents: 113
diff changeset
   311
    newView scrolledView:scrolledView.
claus
parents: 113
diff changeset
   312
    ^ newView
claus
parents: 113
diff changeset
   313
!
claus
parents: 113
diff changeset
   314
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   315
for:aViewClass
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   316
    "return a new scrolling view scrolling an instance of aViewClass.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   317
     The subview is created here.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   318
     The view will have full scrollbars."
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   319
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   320
    ^ self for:aViewClass miniScrollerH:false miniScrollerV:false in:nil
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   321
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   322
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   323
for:aViewClass in:aView
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   324
    "return a new scrolling view scrolling an instance of aViewClass.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   325
     The subview is created here.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   326
     The view will have full scrollbars."
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   327
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   328
    ^ self for:aViewClass miniScrollerH:false miniScrollerV:false in:aView
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   329
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   330
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   331
for:aViewClass miniScrollerH:miniH
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   332
    "return a new scrolling view scrolling an instance of aViewClass.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   333
     The subview is created here.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   334
     The view will have full scrollbars if miniH is false, 
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   335
     and a horizontal miniscroller if true."
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   336
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   337
    ^ self for:aViewClass miniScrollerH:miniH miniScrollerV:false in:nil
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   338
!
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   339
77
565b052f5277 *** empty log message ***
claus
parents: 65
diff changeset
   340
for:aViewClass miniScrollerH:miniH miniScrollerV:miniV
565b052f5277 *** empty log message ***
claus
parents: 65
diff changeset
   341
    "return a new scrolling view scrolling an instance of aViewClass.
565b052f5277 *** empty log message ***
claus
parents: 65
diff changeset
   342
     The subview is created here.
565b052f5277 *** empty log message ***
claus
parents: 65
diff changeset
   343
     The view will have full scrollbars if the corresponding miniH/miniV
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   344
     is false, miniscrollers if true."
77
565b052f5277 *** empty log message ***
claus
parents: 65
diff changeset
   345
565b052f5277 *** empty log message ***
claus
parents: 65
diff changeset
   346
    ^ self for:aViewClass miniScrollerH:miniH miniScrollerV:miniV in:nil
565b052f5277 *** empty log message ***
claus
parents: 65
diff changeset
   347
!
565b052f5277 *** empty log message ***
claus
parents: 65
diff changeset
   348
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   349
for:aViewClass miniScroller:mini in:aView
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   350
    "return a new scrolling view scrolling an instance of aViewClass.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   351
     The subview is created here.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   352
     The view will have full scrollbars if mini is false, miniscrollers
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   353
     if true."
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   354
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   355
    ^ self for:aViewClass miniScrollerH:mini miniScrollerV:mini in:aView 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   356
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   357
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   358
for:aViewClass miniScrollerH:miniH in:aView
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   359
    "return a new scrolling view scrolling an instance of aViewClass.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   360
     The subview is created here.
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   361
     The view will have full scrollbars if miniH is false, 
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   362
     and a horizontal miniscroller if true."
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   363
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   364
    ^ self for:aViewClass miniScrollerH:miniH miniScrollerV:false in:aView 
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   365
!
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   366
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   367
for:aViewClass miniScrollerH:miniH miniScrollerV:miniV in:aView
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   368
    "return a new scrolling view scrolling an instance of aViewClass.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   369
     The subview is created here.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   370
     The view will have full scrollbars if the corresponding miniH/miniV
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   371
     is false, miniscrollers if true."
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   372
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   373
    |newView|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   374
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   375
    aView notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   376
	newView := self basicNew.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   377
	newView device:(aView device).
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   378
	aView addSubView:newView
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   379
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   380
	"create on Display by default"
119
claus
parents: 113
diff changeset
   381
	newView := self basicNew device:Display.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   382
    ].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   383
    newView initializeFor:aViewClass miniScrollerH:miniH miniScrollerV:miniV.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   384
    ^ newView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   385
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   386
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   387
!ScrollableView methodsFor:'initialization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   388
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   389
initialize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   390
    "default setup: full scrollers"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   391
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   392
    ^ self initializeFor:nil miniScrollerH:false miniScrollerV:false 
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   393
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   394
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   395
initializeFor:aViewClass miniScrollerH:miniH miniScrollerV:miniV 
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   396
    |negativeOffset twoMargins halfMargin cls isST80 isOpenWin is3D|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   397
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   398
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   399
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   400
    lockUpdates := false.
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   401
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   402
    "
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   403
     mhmh - these must go into the stylesheet as well...
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   404
    "
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   405
    isST80 := StyleSheet name = #st80.
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   406
    isOpenWin := StyleSheet name = #openwin.
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   407
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   408
    isOpenWin ifTrue:[self level:0].
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   409
    is3D := StyleSheet is3D.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   410
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   411
    isST80 ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   412
	innerMargin := 0
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   413
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   414
	is3D ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   415
	    innerMargin := ViewSpacing.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   416
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   417
	    innerMargin := 0    
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   418
	]
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   419
    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   420
    negativeOffset := borderWidth negated.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   421
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   422
    "create the scrollbar"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   423
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   424
    isST80 ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   425
	cls := ScrollBar
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   426
    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   427
	cls := miniV ifTrue:[MiniScroller] ifFalse:[ScrollBar].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   428
    ].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   429
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   430
    scrollBar := cls in:self.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   431
    scrollBar thumbOrigin:0 thumbHeight:100.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   432
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   433
    "create the subview"
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   434
    is3D ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   435
	twoMargins := innerMargin * 2.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   436
	halfMargin := innerMargin // 2.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   437
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   438
	aViewClass notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   439
	    scrolledView := aViewClass in:self.
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   440
	    isOpenWin ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   441
		scrolledView level:0.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   442
		scrolledView borderWidth:1
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   443
	    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   444
		isST80 ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   445
		    scrolledView level:1.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   446
		] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   447
		    scrolledView level:-1
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   448
		]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   449
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   450
	].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   451
	(scrollBarPosition == #right) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   452
	    scrollBar origin:[width - scrollBar extent x 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   453
				    - (scrollBar borderWidth * 2)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   454
				    - halfMargin
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   455
			      @
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   456
			      halfMargin]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   457
		      extent:[scrollBar extent x @ (height - innerMargin)].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   458
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   459
	    scrolledView notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   460
		scrolledView origin:halfMargin asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   461
			 extent:[(width - 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   462
				  scrollBar width - 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   463
				  twoMargins) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   464
				 @ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   465
				 (height - innerMargin)].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   466
		]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   467
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   468
	    scrollBar origin:halfMargin asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   469
		      extent:[scrollBar extent x @ (height - innerMargin)].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   470
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   471
	    scrolledView notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   472
		scrolledView origin:((scrollBar origin x + scrollBar width + innerMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   473
				     @
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   474
				     halfMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   475
			     extent:[(width - scrollBar width - twoMargins) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   476
				     @ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   477
				     (height - innerMargin)].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   478
	    ]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   479
	].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   480
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   481
	(scrollBarPosition == #right) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   482
	    scrollBar origin:[width - scrollBar extent x 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   483
				    - scrollBar borderWidth
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   484
			      @
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   485
			      negativeOffset]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   486
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   487
	    scrollBar origin:negativeOffset asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   488
	].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   489
	scrollBar extent:[scrollBar extent x @ (height "+ (scrollBar borderWidth * 1)")].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   490
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   491
	aViewClass notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   492
	    scrolledView := aViewClass in:self.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   493
	    (scrollBarPosition == #right) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   494
		scrolledView origin:scrolledView borderWidth negated asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   495
	    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   496
		scrolledView origin:((scrollBar width + 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   497
				      scrollBar borderWidth - 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   498
				      scrolledView borderWidth) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   499
				    @ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   500
				    scrolledView borderWidth negated)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   501
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   502
	    scrolledView extent:[(width - scrollBar width - scrolledView borderWidth) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   503
				 @ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   504
				 (height + (scrollBar borderWidth))
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   505
				]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   506
	].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   507
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   508
    scrolledView notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   509
	self setScrollActions.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   510
	"
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   511
	 pass my keyboard input (and other subviews input) 
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   512
	 to the scrolled view ...
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   513
	"
122
claus
parents: 119
diff changeset
   514
	self delegate:(KeyboardForwarder toView:scrolledView).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   515
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   516
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   517
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   518
initStyle
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   519
    super initStyle.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   520
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   521
    scrollBarPosition := StyleSheet at:'scrollBarPosition' default:#left
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   522
!
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   523
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   524
realize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   525
    super realize.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   526
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   527
    "since scrolledview may have done something to its contents
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   528
     during init-time we had no chance yet to catch contents-
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   529
     changes; do it now
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   530
    "
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   531
    scrolledView notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   532
	scrollBar setThumbFor:scrolledView
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   533
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   534
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   535
105
3d064ba4a0cc *** empty log message ***
claus
parents: 93
diff changeset
   536
!ScrollableView methodsFor:'queries'!
3d064ba4a0cc *** empty log message ***
claus
parents: 93
diff changeset
   537
3d064ba4a0cc *** empty log message ***
claus
parents: 93
diff changeset
   538
preferedExtent
3d064ba4a0cc *** empty log message ***
claus
parents: 93
diff changeset
   539
    scrolledView notNil ifTrue:[ 
3d064ba4a0cc *** empty log message ***
claus
parents: 93
diff changeset
   540
       | pref |
3d064ba4a0cc *** empty log message ***
claus
parents: 93
diff changeset
   541
       pref := scrolledView preferedExtent.
3d064ba4a0cc *** empty log message ***
claus
parents: 93
diff changeset
   542
       ^ (pref x + scrollBar width + (innerMargin * 2)) @ pref y.
3d064ba4a0cc *** empty log message ***
claus
parents: 93
diff changeset
   543
    ].
3d064ba4a0cc *** empty log message ***
claus
parents: 93
diff changeset
   544
    ^ super preferedExtent.
3d064ba4a0cc *** empty log message ***
claus
parents: 93
diff changeset
   545
! !
3d064ba4a0cc *** empty log message ***
claus
parents: 93
diff changeset
   546
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   547
!ScrollableView methodsFor:'private'!
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   548
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   549
setScrollActions
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   550
    "lock prevents repositioning the scroller to the
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   551
     actual (often rounded) position while scrolling,
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   552
     and keeps it instead at the pointer position.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   553
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   554
     (this avoids run-away scroller when scrolling
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   555
      textviews, when the text is aligned line-wise).
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   556
      Consider this as a kludge."
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   557
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   558
    lockUpdates := false.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   559
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   560
    scrollBar scrollAction:[:position |
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   561
	lockUpdates := true.
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   562
	scrolledView scrollVerticalToPercent:position.
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   563
	lockUpdates := false
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   564
    ].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   565
    scrollBar scrollUpAction:[scrolledView scrollUp].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   566
    scrollBar scrollDownAction:[scrolledView scrollDown].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   567
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   568
    scrolledView addDependent:self.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   569
! !
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   570
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   571
!ScrollableView methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   572
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   573
scrollBar
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   574
    "return the scrollbar"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   575
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   576
    ^ scrollBar
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   577
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   578
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   579
scrolledView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   580
    "return the scrolled view"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   581
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   582
    ^ scrolledView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   583
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   584
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   585
scrolledView:aView
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   586
    "set the view to scroll"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   587
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   588
    |halfMargin twoMargins isOpenwin|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   589
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   590
    scrolledView notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   591
	scrolledView destroy.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   592
	scrolledView := nil.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   593
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   594
    scrolledView := aView.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   595
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   596
"/    ((style ~~ #normal) and:[style ~~ #mswindows]) ifTrue:[
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   597
    StyleSheet is3D ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   598
	"3D look"
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   599
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   600
	isOpenwin := StyleSheet name = #openwin.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   601
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   602
	twoMargins := innerMargin * 2.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   603
	halfMargin := innerMargin // 2.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   604
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   605
	isOpenwin ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   606
	    scrolledView level:0.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   607
	    scrolledView borderWidth:1
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   608
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   609
	    scrolledView level:-1
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   610
	].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   611
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   612
	(scrollBarPosition == #right) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   613
	    scrolledView 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   614
		origin:halfMargin asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   615
		extent:[(width - 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   616
			 scrollBar width - 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   617
			 twoMargins) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   618
			@ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   619
			(height - innerMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   620
		       ].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   621
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   622
	    scrolledView 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   623
		origin:((scrollBar origin x 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   624
			 + scrollBar width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   625
			 + innerMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   626
			@
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   627
			halfMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   628
		extent:[(width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   629
			 - scrollBar width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   630
			 - twoMargins) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   631
			@ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   632
			(height - innerMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   633
		       ].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   634
	]
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   635
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   636
	"non 3D look"
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   637
	(scrollBarPosition == #right) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   638
	    scrolledView 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   639
		origin:scrolledView borderWidth negated asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   640
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   641
	    scrolledView 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   642
		origin:((scrollBar width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   643
			 + scrollBar borderWidth 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   644
			 - scrolledView borderWidth) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   645
			@ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   646
			scrolledView borderWidth negated)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   647
	].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   648
	scrolledView 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   649
	    extent:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   650
		    (width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   651
		     - scrollBar width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   652
		     - scrolledView borderWidth) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   653
		    @ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   654
		    (height 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   655
		     + (scrollBar borderWidth))
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   656
		   ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   657
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   658
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   659
    super addSubView:scrolledView.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   660
    self setScrollActions.
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   661
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   662
    "
113
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   663
     pass my keyboard input (and other subviews input) 
fdd18cfff57e *** empty log message ***
claus
parents: 110
diff changeset
   664
     to the scrolled view ...
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   665
    "
122
claus
parents: 119
diff changeset
   666
    self delegate:(KeyboardForwarder toView:scrolledView).
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   667
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   668
    realized ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   669
	self sizeChanged:nil.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   670
	scrolledView realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   671
    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   672
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   673
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   674
!ScrollableView methodsFor:'slave-view messages'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   675
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   676
leftButtonMenu
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   677
    "return scrolledViews leftbuttonmenu"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   678
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   679
    scrolledView isNil ifTrue:[^ nil].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   680
    ^ scrolledView leftButtonMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   681
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   682
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   683
leftButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   684
    "pass on leftbuttonmenu to scrolledView"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   685
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   686
    scrolledView leftButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   687
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   688
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   689
middleButtonMenu
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   690
    "return scrolledViews middlebuttonmenu"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   691
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   692
    scrolledView isNil ifTrue:[^ nil].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   693
    ^ scrolledView middleButtonMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   694
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   695
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   696
middleButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   697
    "pass on middlebuttonmenu to scrolledView"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   698
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   699
    scrolledView middleButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   700
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   701
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   702
rightButtonMenu
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   703
    "return scrolledViews rightbuttonmenu"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   704
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   705
    scrolledView isNil ifTrue:[^ nil].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   706
    ^ scrolledView rightButtonMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   707
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   708
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   709
rightButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   710
    "pass on rightbuttonmenu to scrolledView"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   711
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   712
    scrolledView rightButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   713
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   714
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   715
doesNotUnderstand:aMessage
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   716
    "this is funny: all message we do not understand, are passed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   717
     on to the scrolledView - so we do not have to care for all
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   718
     possible messages ...(thanks to the Message class)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   719
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   720
     scrolledView isNil ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   721
	 ^ scrolledView perform:(aMessage selector)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   722
		  withArguments:(aMessage arguments)
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   723
     ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   724
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   725
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   726
!ScrollableView methodsFor:'forced scroll'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   727
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   728
pageUp
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   729
    "page up"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   730
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   731
    scrollBar pageUp
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   732
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   733
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   734
pageDown
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   735
    "page down"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   736
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   737
    scrollBar pageDown
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   738
! !
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   739
65
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   740
!ScrollableView methodsFor:'changes '!
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   741
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   742
update:something with:argument from:changedObject
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   743
    "whenever the scrolledView changes its contents, the scroller must
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   744
     be updated"
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   745
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   746
    changedObject == scrolledView ifTrue:[
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   747
	something == #sizeOfContents ifTrue:[
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   748
	    scrollBar setThumbFor:scrolledView.
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   749
	    ^ self
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   750
	].
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   751
	something == #originOfContents ifTrue:[
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   752
	    lockUpdates ifFalse:[
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   753
		scrollBar setThumbOriginFor:scrolledView.
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   754
	    ].
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   755
	    ^ self
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   756
	].
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   757
    ].
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   758
! !
b33e4f3a264e *** empty log message ***
claus
parents: 63
diff changeset
   759
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   760
!ScrollableView methodsFor:'event processing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   761
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   762
keyPress:key x:x y:y
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   763
    "a key was pressed - handle page-keys here"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   764
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   765
    (key == #Prior)    ifTrue: [^ self pageUp].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   766
    (key == #Next)     ifTrue: [^ self pageDown].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   767
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   768
    super keyPress:key x:x y:y
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   769
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   770
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   771
sizeChanged:how
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   772
    super sizeChanged:how.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   773
    scrolledView notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   774
	scrollBar setThumbFor:scrolledView
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   775
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   776
! !