ScrView.st
author claus
Thu, 17 Nov 1994 15:38:53 +0100
changeset 63 f4eaf04d1eaf
parent 59 450ce95a72a4
child 65 b33e4f3a264e
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) 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
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    13
View subclass:#ScrollableView
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    14
       instanceVariableNames:'scrolledView scrollBar helpView innerMargin
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    15
			      scrollBarPosition'
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
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    25
$Header: /cvs/stx/stx/libwidg/Attic/ScrView.st,v 1.8 1994-11-17 14:38:28 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
"
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    46
$Header: /cvs/stx/stx/libwidg/Attic/ScrView.st,v 1.8 1994-11-17 14:38:28 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.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    53
    There are two ways to create a ScrollableView:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    54
    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
    55
    use:
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    56
	v := ScrollableView for:<ViewClass> in:someSuperView.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    57
    otherwise, create the scrollableView empty with:
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    58
	v := ScrollableView in:someSuperView.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    59
	...
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    60
	v scrolledView:aViewToBeScrolled
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    61
"
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    62
!
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    63
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    64
examples
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    65
"
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    66
    example1:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    67
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    68
	|top scr txt|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    69
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    70
	top := StandardSystemView label:'example'.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    71
	scr := ScrollableView for:EditTextView in:top.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    72
	scr origin:0.0@0.0 corner:1.0@1.0.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    73
	txt := scr scrolledView.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    74
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    75
	txt list:#('line1'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    76
		   'line2'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    77
		   'line3'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    78
		   'line4'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    79
		   'line5'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    80
		   'line6').
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    81
	top open
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    82
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    83
    example2:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    84
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    85
	|top scr txt1 txt2|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    86
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    87
	top := StandardSystemView label:'example'.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    88
	scr := ScrollableView in:top.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    89
	scr origin:0.0@0.0 corner:1.0@1.0.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    90
	top open.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    91
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    92
	(Delay forSeconds:5) wait.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    93
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    94
	txt1 := EditTextView new.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    95
	txt1 list:#('line1'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    96
		    'line2'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    97
		    'line3'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    98
		    'line4'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
    99
		    'line5'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   100
		    'line6').
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   101
	scr scrolledView:txt1.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   102
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   103
	(Delay forSeconds:5) wait.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   104
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   105
	txt2 := EditTextView new.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   106
	txt2 list:#('alternative line1'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   107
		    'alternative line2'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   108
		    'alternative line3'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   109
		    'alternative line4'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   110
		    'alternative line5'
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   111
		    'alternative line6').
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   112
	scr scrolledView:txt2.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   113
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   114
! !
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   115
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
!ScrollableView class methodsFor:'instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   118
in:aView
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   119
    "return a new scrolling view to be contained in aView.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   120
     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
   121
     the scrolledView: method.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   122
     The view will have full scrollbars."
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   123
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   124
    ^ self for:nil miniScrollerH:false miniScrollerV:false in:aView
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
for:aViewClass
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   128
    "return a new scrolling view scrolling an instance of aViewClass.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   129
     The subview is created here.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   130
     The view will have full scrollbars."
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   131
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   132
    ^ self for:aViewClass miniScrollerH:false miniScrollerV:false in:nil
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
for:aViewClass in:aView
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   136
    "return a new scrolling view scrolling an instance of aViewClass.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   137
     The subview is created here.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   138
     The view will have full scrollbars."
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   139
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   140
    ^ self for:aViewClass miniScrollerH:false miniScrollerV:false in:aView
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   141
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   142
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   143
for:aViewClass miniScroller:mini in:aView
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   144
    "return a new scrolling view scrolling an instance of aViewClass.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   145
     The subview is created here.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   146
     The view will have full scrollbars if mini is false, miniscrollers
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   147
     if true."
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   148
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   149
    ^ self for:aViewClass miniScrollerH:mini miniScrollerV:mini in:aView 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   150
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   151
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   152
for:aViewClass miniScrollerH:miniH miniScrollerV:miniV in:aView
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   153
    "return a new scrolling view scrolling an instance of aViewClass.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   154
     The subview is created here.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   155
     The view will have full scrollbars if the corresponding miniH/miniV
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   156
     is false, miniscrollers if false."
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   157
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   158
    |newView|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
    aView notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   161
	newView := self basicNew.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   162
	newView device:(aView device).
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   163
	aView addSubView:newView
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   165
	"create on Display by default"
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   166
	newView := self new.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   167
    ].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   168
    newView initializeFor:aViewClass miniScrollerH:miniH miniScrollerV:miniV.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   169
    ^ newView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   170
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   171
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   172
!ScrollableView methodsFor:'initialization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   173
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   174
initialize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   175
    "default setup: full scrollers"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   176
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   177
    ^ self initializeFor:nil miniScrollerH:false miniScrollerV:false 
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   178
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   179
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   180
initializeFor:aViewClass miniScrollerH:miniH miniScrollerV:miniV 
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   181
    |negativeOffset twoMargins halfMargin cls isST80 is3D|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   182
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   183
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   184
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   185
    isST80 := StyleSheet name = #st80.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   186
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   187
    style == #openwin ifTrue:[self level:0].
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   188
    is3D := StyleSheet is3D.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   189
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   190
    isST80 ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   191
	innerMargin := 0
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   192
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   193
	is3D ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   194
	    innerMargin := ViewSpacing.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   195
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   196
	    innerMargin := 0    
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   197
	]
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   198
    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   199
    negativeOffset := borderWidth negated.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   200
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   201
    "create the scrollbar"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   202
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   203
    isST80 ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   204
	cls := ScrollBar
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   205
    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   206
	cls := miniV ifTrue:[MiniScroller] ifFalse:[ScrollBar].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   207
    ].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   208
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   209
    scrollBar := cls in:self.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   210
    scrollBar thumbOrigin:0 thumbHeight:100.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   211
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   212
    "create the subview"
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   213
    is3D ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   214
	twoMargins := innerMargin * 2.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   215
	halfMargin := innerMargin // 2.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   216
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   217
	aViewClass notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   218
	    scrolledView := aViewClass in:self.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   219
	    style == #openwin ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   220
		scrolledView level:0.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   221
		scrolledView borderWidth:1
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   222
	    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   223
		isST80 ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   224
		    scrolledView level:1.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   225
		] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   226
		    scrolledView level:-1
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   227
		]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   228
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   229
	].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   230
	(scrollBarPosition == #right) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   231
	    scrollBar origin:[width - scrollBar extent x 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   232
				    - (scrollBar borderWidth * 2)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   233
				    - halfMargin
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   234
			      @
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   235
			      halfMargin]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   236
		      extent:[scrollBar extent x @ (height - innerMargin)].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   237
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   238
	    scrolledView notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   239
		scrolledView origin:halfMargin asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   240
			 extent:[(width - 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   241
				  scrollBar width - 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   242
				  twoMargins) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   243
				 @ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   244
				 (height - innerMargin)].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   245
		]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   246
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   247
	    scrollBar origin:halfMargin asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   248
		      extent:[scrollBar extent x @ (height - innerMargin)].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   249
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   250
	    scrolledView notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   251
		scrolledView origin:((scrollBar origin x + scrollBar width + innerMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   252
				     @
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   253
				     halfMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   254
			     extent:[(width - scrollBar width - twoMargins) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   255
				     @ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   256
				     (height - innerMargin)].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   257
	    ]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   258
	].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   259
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   260
	(scrollBarPosition == #right) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   261
	    scrollBar origin:[width - scrollBar extent x 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   262
				    - scrollBar borderWidth
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   263
			      @
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   264
			      negativeOffset]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   265
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   266
	    scrollBar origin:negativeOffset asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   267
	].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   268
	scrollBar extent:[scrollBar extent x @ (height "+ (scrollBar borderWidth * 1)")].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   269
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   270
	aViewClass notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   271
	    scrolledView := aViewClass in:self.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   272
	    (scrollBarPosition == #right) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   273
		scrolledView origin:scrolledView borderWidth negated asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   274
	    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   275
		scrolledView origin:((scrollBar width + 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   276
				      scrollBar borderWidth - 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   277
				      scrolledView borderWidth) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   278
				    @ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   279
				    scrolledView borderWidth negated)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   280
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   281
	    scrolledView extent:[(width - scrollBar width - scrolledView borderWidth) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   282
				 @ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   283
				 (height + (scrollBar borderWidth))
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   284
				]
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   285
	].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   286
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   287
    scrolledView notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   288
	self setScrollActions.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   289
	"
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   290
	 pass input to myself (and other subviews) to
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   291
	 the scrolled view
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   292
	"
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   293
	self keyboardHandler:scrolledView.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   294
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   295
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   296
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   297
initStyle
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   298
    super initStyle.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   299
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   300
    scrollBarPosition := StyleSheet at:'scrollBarPosition' default:#left
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   301
!
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   302
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   303
realize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   304
    super realize.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   305
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   306
    "since scrolledview may have done something to its contents
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   307
     during init-time we had no chance yet to catch contents-
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   308
     changes; do it now
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   309
    "
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   310
    scrolledView notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   311
	scrollBar setThumbFor:scrolledView
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   312
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   313
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   314
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   315
!ScrollableView methodsFor:'private'!
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   316
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   317
setScrollActions
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   318
    |lock|
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   319
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   320
    "lock prevents repositioning the scroller to the
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   321
     actual (often rounded) position while scrolling,
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   322
     and keeps it instead at the pointer position.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   323
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   324
     (this avoids run-away scroller when scrolling
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   325
      textviews, when the text is aligned line-wise).
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   326
      Consider this as a kludge."
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   327
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   328
    lock := false.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   329
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   330
    scrollBar scrollAction:[:position |
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   331
	lock := true.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   332
	scrolledView scrollVerticalToPercent:position.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   333
	lock := false
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   334
    ].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   335
    scrollBar scrollUpAction:[scrolledView scrollUp].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   336
    scrollBar scrollDownAction:[scrolledView scrollDown].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   337
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   338
    scrolledView originChangeAction:[:aView |
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   339
	lock ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   340
	    scrollBar setThumbOriginFor:aView.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   341
	]
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   342
    ].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   343
    scrolledView contentsChangeAction:[:aView | 
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   344
	scrollBar setThumbFor:aView.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   345
    ]
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   346
! !
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   347
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   348
!ScrollableView methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   349
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   350
scrollBar
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   351
    "return the scrollbar"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   352
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   353
    ^ scrollBar
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   354
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   355
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   356
scrolledView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   357
    "return the scrolled view"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   358
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   359
    ^ scrolledView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   360
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   361
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   362
scrolledView:aView
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   363
    "set the view to scroll"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   364
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   365
    |halfMargin twoMargins|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   366
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   367
    scrolledView notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   368
	scrolledView destroy.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   369
	scrolledView := nil.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   370
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   371
    scrolledView := aView.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   372
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   373
    ((style ~~ #normal) and:[style ~~ #mswindows]) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   374
	"3D look"
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   375
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   376
	twoMargins := innerMargin * 2.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   377
	halfMargin := innerMargin // 2.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   378
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   379
	style == #openwin ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   380
	    scrolledView level:0.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   381
	    scrolledView borderWidth:1
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   382
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   383
	    scrolledView level:-1
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   384
	].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   385
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   386
	(scrollBarPosition == #right) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   387
	    scrolledView 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   388
		origin:halfMargin asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   389
		extent:[(width - 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   390
			 scrollBar width - 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   391
			 twoMargins) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   392
			@ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   393
			(height - innerMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   394
		       ].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   395
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   396
	    scrolledView 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   397
		origin:((scrollBar origin x 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   398
			 + scrollBar width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   399
			 + innerMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   400
			@
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   401
			halfMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   402
		extent:[(width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   403
			 - scrollBar width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   404
			 - twoMargins) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   405
			@ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   406
			(height - innerMargin)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   407
		       ].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   408
	]
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   409
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   410
	"non 3D look"
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   411
	(scrollBarPosition == #right) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   412
	    scrolledView 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   413
		origin:scrolledView borderWidth negated asPoint
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   414
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   415
	    scrolledView 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   416
		origin:((scrollBar width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   417
			 + scrollBar borderWidth 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   418
			 - scrolledView borderWidth) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   419
			@ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   420
			scrolledView borderWidth negated)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   421
	].
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   422
	scrolledView 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   423
	    extent:[
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   424
		    (width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   425
		     - scrollBar width 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   426
		     - scrolledView borderWidth) 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   427
		    @ 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   428
		    (height 
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   429
		     + (scrollBar borderWidth))
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   430
		   ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   431
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   432
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   433
    super addSubView:scrolledView.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   434
    self setScrollActions.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   435
    "
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   436
     pass input to myself (and other subviews) to
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   437
     the scrolled view
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   438
    "
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   439
    self keyboardHandler:scrolledView.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   440
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   441
    realized ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   442
	self sizeChanged:nil.
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   443
	scrolledView realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   444
    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   445
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   446
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   447
!ScrollableView methodsFor:'slave-view messages'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   448
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   449
leftButtonMenu
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   450
    "return scrolledViews leftbuttonmenu"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   451
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   452
    scrolledView isNil ifTrue:[^ nil].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   453
    ^ scrolledView leftButtonMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   454
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   455
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   456
leftButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   457
    "pass on leftbuttonmenu to scrolledView"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   458
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   459
    scrolledView leftButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   460
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   461
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   462
middleButtonMenu
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   463
    "return scrolledViews middlebuttonmenu"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   464
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   465
    scrolledView isNil ifTrue:[^ nil].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   466
    ^ scrolledView middleButtonMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   467
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   468
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   469
middleButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   470
    "pass on middlebuttonmenu to scrolledView"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   471
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   472
    scrolledView middleButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   473
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   474
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   475
rightButtonMenu
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   476
    "return scrolledViews rightbuttonmenu"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   477
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   478
    scrolledView isNil ifTrue:[^ nil].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   479
    ^ scrolledView rightButtonMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   480
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   481
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   482
rightButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   483
    "pass on rightbuttonmenu to scrolledView"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   484
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   485
    scrolledView rightButtonMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   486
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   487
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   488
doesNotUnderstand:aMessage
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   489
    "this is funny: all message we do not understand, are passed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   490
     on to the scrolledView - so we do not have to care for all
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   491
     possible messages ...(thanks to the Message class)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   492
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   493
     scrolledView isNil ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   494
	 ^ scrolledView perform:(aMessage selector)
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   495
		  withArguments:(aMessage arguments)
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   496
     ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   497
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   498
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   499
!ScrollableView methodsFor:'forced scroll'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   500
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   501
pageUp
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   502
    "page up"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   503
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   504
    scrollBar pageUp
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   505
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   506
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   507
pageDown
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   508
    "page down"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   509
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   510
    scrollBar pageDown
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   511
! !
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   512
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   513
!ScrollableView methodsFor:'event processing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   514
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   515
keyPress:key x:x y:y
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   516
    "a key was pressed - handle page-keys here"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   517
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   518
    (key == #Prior)    ifTrue: [^ self pageUp].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   519
    (key == #Next)     ifTrue: [^ self pageDown].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   520
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   521
    super keyPress:key x:x y:y
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   522
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   523
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   524
sizeChanged:how
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   525
    super sizeChanged:how.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   526
    scrolledView notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 53
diff changeset
   527
	scrollBar setThumbFor:scrolledView
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
   528
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   529
! !