HScroller.st
author claus
Sat, 08 Jan 1994 18:27:56 +0100
changeset 21 9ef599238fea
parent 5 7b4fb1b170e5
child 24 966098a893f8
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
Scroller subclass:#HorizontalScroller
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    16
       poolDictionaries:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    17
       category:'Views-Interactors'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
HorizontalScroller comment:'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    21
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
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    24
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    25
the scroller part of a horizontal scrollbar
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    26
5
claus
parents: 3
diff changeset
    27
$Header: /cvs/stx/stx/libwidg/Attic/HScroller.st,v 1.3 1993-10-13 02:48:01 claus Exp $
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    28
written spring/summer 89 by claus
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    29
'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    30
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    31
!HorizontalScroller methodsFor:'initialization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    32
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    33
initialize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    34
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    35
    moveDirection := #x
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    36
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    37
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    38
!HorizontalScroller methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    39
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    40
thumbOrigin:newOrigin
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    41
    "set the thumbs origin (in percent)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    42
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    43
    |realNewOrigin oldFrame oldLeft oldRight thumbLeft thumbRight
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    44
     tH tW delta top|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    45
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    46
    ((newOrigin + thumbHeight) > 100) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    47
        realNewOrigin := 100 - thumbHeight
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    48
    ] ifFalse: [
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    49
        realNewOrigin := newOrigin
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    50
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    51
    (realNewOrigin > 100) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    52
        realNewOrigin := 100
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    53
    ] ifFalse: [
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    54
        (realNewOrigin < 0) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    55
            realNewOrigin := 0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    56
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    57
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    58
    (realNewOrigin = thumbOrigin) ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    59
        oldFrame := thumbFrame.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    60
        thumbOrigin := realNewOrigin.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    61
        self computeThumbFrame.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    62
        (thumbHeight = 100) ifTrue:[^ self].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    63
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    64
        shown ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    65
            (thumbFrame ~~ oldFrame) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    66
                tH := thumbFrame height.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    67
                tW := thumbFrame width.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    68
                oldLeft := oldFrame left.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    69
                oldRight := oldLeft + tW.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    70
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    71
                thumbLeft := thumbFrame left.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    72
                thumbRight := thumbLeft + tW.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    73
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    74
                top := thumbFrame top.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    75
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    76
                (oldRight >= width) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    77
                    "cannot copy - thumb was behind end"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    78
                    self drawThumbBackgroundInX:oldLeft y:top
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    79
                                          width:(width - oldLeft" - 1") height:tH.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    80
                    self drawThumb.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    81
                    ^ self
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    82
                ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    83
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    84
                self copyFrom:self x:oldLeft y:top
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    85
                                 toX:thumbLeft y:top
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    86
                               width:tW height:tH.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    87
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    88
                oldLeft > thumbLeft ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    89
                    delta := oldLeft - thumbLeft.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    90
                    oldLeft > thumbRight ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    91
                        self drawThumbBackgroundInX:oldLeft y:top
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    92
                                              width:(tW + 1) height:tH
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    93
                    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    94
                        self drawThumbBackgroundInX:thumbRight y:top
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    95
                                              width:delta height:tH
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    96
                    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    97
                ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    98
                    delta := thumbLeft - oldLeft.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    99
                    oldRight < thumbLeft ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   100
                        self drawThumbBackgroundInX:oldLeft y:top
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   101
                                              width:tW + 1 height:tH
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   102
                    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   103
                        self drawThumbBackgroundInX:oldLeft y:top 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   104
                                              width:delta height:tH
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   105
                    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   106
                ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   107
                "View3D ifTrue:[ "
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   108
                    self waitForExpose
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   109
                "] "
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   110
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   111
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   112
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   113
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   114
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   115
setThumbFor:aView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
    "get contents and size info from aView and adjust thumb"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   118
    |percentHeight percentOrigin totalWidth|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   119
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
    aView isNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   121
        totalWidth := 0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   123
        totalWidth := aView widthOfContents
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   124
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   125
    (totalWidth = 0) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
        percentHeight := 100.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   127
        percentOrigin := 100
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
        percentHeight := (aView innerWidth) * 100 // totalWidth.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   130
        percentOrigin := (aView xOriginOfContents) * 100 // totalWidth
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   131
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   132
    (percentHeight = thumbHeight) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
        self thumbOrigin:percentOrigin
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
        (percentOrigin = thumbOrigin) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
            self thumbHeight:percentHeight
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   137
        ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
            self thumbOrigin:percentOrigin thumbHeight:percentHeight
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   139
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   140
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   141
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   142
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   143
setThumbHeightFor:aView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   144
    "get contents and size info from aView and adjust thumb height"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   145
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   146
    |percent totalWidth|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   147
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   148
    totalWidth := aView widthOfContents.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   149
    (totalWidth = 0) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   150
        percent := 100
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   151
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   152
        percent := (aView innerWidth) * 100 // totalWidth
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   153
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   154
    self thumbHeight:percent
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   155
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   156
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
setThumbOriginFor:aView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   158
    "get contents and size info from aView and adjust thumb origin"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
    |percent totalWidth|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   162
    totalWidth := aView widthOfContents.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
    (totalWidth = 0) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
        percent := 100
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   165
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   166
        percent := (aView xOriginOfContents) * 100 // totalWidth
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   167
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   168
    self thumbOrigin:percent
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   169
! !