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