HorizontalSteppingSlider.st
author Claus Gittinger <cg@exept.de>
Thu, 12 Dec 1996 14:35:26 +0100
changeset 267 f534e60f85e3
parent 184 13a2f3677c68
child 400 d176fd820716
permissions -rw-r--r--
dont send change message, if nothing changed; added comments
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23
1e6bf473d863 Initial revision
claus
parents:
diff changeset
     1
"
1e6bf473d863 Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1994 by Claus Gittinger
49
claus
parents: 23
diff changeset
     3
	      All Rights Reserved
23
1e6bf473d863 Initial revision
claus
parents:
diff changeset
     4
1e6bf473d863 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
1e6bf473d863 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
1e6bf473d863 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
1e6bf473d863 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
1e6bf473d863 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    11
"
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    12
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    13
HorizontalScrollBar subclass:#HorizontalSteppingSlider
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    14
	instanceVariableNames:'stepIncrement'
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    15
	classVariableNames:''
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    16
	poolDictionaries:''
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    17
	category:'Views-Interactors'
23
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    18
!
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    19
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    20
!HorizontalSteppingSlider class methodsFor:'documentation'!
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    21
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    22
copyright
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    23
"
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    24
 COPYRIGHT (c) 1994 by Claus Gittinger
49
claus
parents: 23
diff changeset
    25
	      All Rights Reserved
23
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    26
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    27
 This software is furnished under a license and may be used
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    28
 only in accordance with the terms of that license and with the
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    29
 inclusion of the above copyright notice.   This software may not
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    30
 be provided or otherwise made available to, or used by, any
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    31
 other person.  No title to or ownership of the software is
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    32
 hereby transferred.
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    33
"
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    34
!
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    35
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    36
documentation
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    37
"
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    38
    HorizontalSteppingSliders are like HorizontalSliders, but add step-up and step-down
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    39
    buttons (which increment/decrement the value).
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    40
"
49
claus
parents: 23
diff changeset
    41
!
claus
parents: 23
diff changeset
    42
claus
parents: 23
diff changeset
    43
examples 
claus
parents: 23
diff changeset
    44
"
claus
parents: 23
diff changeset
    45
    |top sl|
claus
parents: 23
diff changeset
    46
claus
parents: 23
diff changeset
    47
    top := StandardSystemView extent:200@200.
claus
parents: 23
diff changeset
    48
    sl := HorizontalSteppingSlider in:top.
claus
parents: 23
diff changeset
    49
    sl origin:(0.0@0.0) corner:(1.0@sl height).
184
13a2f3677c68 showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 122
diff changeset
    50
    sl scrollAction:[:pos | Transcript showCR:pos].    
49
claus
parents: 23
diff changeset
    51
    top open
claus
parents: 23
diff changeset
    52
"
23
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    53
! !
1e6bf473d863 Initial revision
claus
parents:
diff changeset
    54
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    55
!HorizontalSteppingSlider methodsFor:'accessing'!
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    56
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    57
model:aModel
267
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
    58
    "set the model; this will get the thumbs origin
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
    59
     via #value: messages"
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
    60
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    61
    thumb model:aModel
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    62
!
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    63
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    64
start:start stop:stop step:step
267
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
    65
    "set the range and stepIncrement"
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
    66
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    67
    thumb start:start stop:stop.
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    68
    stepIncrement := step
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    69
!
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    70
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    71
step
267
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
    72
    "retrieve the stepIncrement"
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
    73
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    74
    ^ stepIncrement
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    75
!
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    76
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    77
step:aNumber
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    78
    "same as stepIncrement;
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    79
     set the value used for stepping (defaults to 1)"
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    80
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    81
    stepIncrement := aNumber
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    82
!
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    83
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    84
stepIncrement:aNumber 
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    85
    "set the value used for stepping (defaults to 1)"
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    86
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    87
    stepIncrement := aNumber
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    88
! !
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    89
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    90
!HorizontalSteppingSlider methodsFor:'events'!
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    91
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    92
keyPress:key x:x y:y
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    93
    (key == #CursorRight or:[key == #CursorUp]) ifTrue:[
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    94
	self scrollStepUp.
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    95
	^ self
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    96
    ].
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    97
    (key == #CursorLeft or:[key == #CursorDown]) ifTrue:[
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    98
	self scrollStepDown.
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
    99
	^ self
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   100
    ].
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   101
    super keyPress:key x:x y:y
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   102
! !
23
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   103
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   104
!HorizontalSteppingSlider methodsFor:'initialization'!
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   105
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   106
createElements
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   107
    button1 := ArrowButton leftIn:self.
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   108
    button1 name:'LeftButton'.
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   109
    button2 := ArrowButton rightIn:self.
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   110
    button2 name:'RightButton'.
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   111
    thumb := HorizontalSlider in:self.
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   112
!
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   113
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   114
initialize
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   115
    super initialize.
65
claus
parents: 49
diff changeset
   116
    stepIncrement := 1.
claus
parents: 49
diff changeset
   117
    self scrollDownAction:[self scrollStepUp].
claus
parents: 49
diff changeset
   118
    self scrollUpAction:[self scrollStepDown].
49
claus
parents: 23
diff changeset
   119
! !
claus
parents: 23
diff changeset
   120
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   121
!HorizontalSteppingSlider methodsFor:'misc'!
65
claus
parents: 49
diff changeset
   122
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   123
doesNotUnderstand:aMessage
267
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   124
    "delegate any unknown messages to my thumb"
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   125
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   126
    ^ aMessage sendTo:thumb 
65
claus
parents: 49
diff changeset
   127
! !
claus
parents: 49
diff changeset
   128
claus
parents: 49
diff changeset
   129
!HorizontalSteppingSlider methodsFor:'private'!
claus
parents: 49
diff changeset
   130
267
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   131
scrollStep:delta
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   132
    "step by some delta"
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   133
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   134
    |oldOrg newOrg|
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   135
267
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   136
    oldOrg := thumb thumbOrigin.
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   137
    newOrg := ((oldOrg + delta) max:thumb start) min:thumb stop.
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   138
    oldOrg ~= newOrg ifTrue:[
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   139
        thumb thumbOrigin:newOrg.
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   140
        thumb tellOthers.
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   141
    ]
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   142
!
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   143
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   144
scrollStepDown
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   145
    "stepDown"
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   146
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   147
    self scrollStep:stepIncrement negated
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   148
!
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   149
65
claus
parents: 49
diff changeset
   150
scrollStepUp
267
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   151
    "step up"
65
claus
parents: 49
diff changeset
   152
267
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   153
    self scrollStep:stepIncrement
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   154
23
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   155
! !
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   156
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   157
!HorizontalSteppingSlider class methodsFor:'documentation'!
23
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   158
122
44d46c527eac checkin from Browser
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   159
version
267
f534e60f85e3 dont send change message, if nothing changed;
Claus Gittinger <cg@exept.de>
parents: 184
diff changeset
   160
    ^ '$Header: /cvs/stx/stx/libwidg2/HorizontalSteppingSlider.st,v 1.9 1996-12-12 13:35:26 cg Exp $'
23
1e6bf473d863 Initial revision
claus
parents:
diff changeset
   161
! !