Toggle.st
author claus
Thu, 26 Jan 1995 17:05:02 +0100
changeset 74 9d0d6a11939e
parent 70 14443a9ea4ec
child 77 565b052f5277
permissions -rw-r--r--
last version before introduction of controller
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: 38
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
Button subclass:#Toggle
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
    14
       instanceVariableNames:'showLamp lampColor lampWidth lampHeight'
0
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
Toggle comment:'
5
claus
parents: 3
diff changeset
    21
COPYRIGHT (c) 1989 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    22
	      All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    23
74
9d0d6a11939e last version before introduction of controller
claus
parents: 70
diff changeset
    24
$Header: /cvs/stx/stx/libwidg/Toggle.st,v 1.10 1995-01-26 16:05:02 claus Exp $
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
    25
'!
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
    26
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
    27
!Toggle class methodsFor:'documentation'!
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
    28
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    29
copyright
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    30
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    31
 COPYRIGHT (c) 1989 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    32
	      All Rights Reserved
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    33
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    34
 This software is furnished under a license and may be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    35
 only in accordance with the terms of that license and with the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    36
 inclusion of the above copyright notice.   This software may not
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    37
 be provided or otherwise made available to, or used by, any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    38
 other person.  No title to or ownership of the software is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    39
 hereby transferred.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    40
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    41
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    42
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    43
version
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    44
"
74
9d0d6a11939e last version before introduction of controller
claus
parents: 70
diff changeset
    45
$Header: /cvs/stx/stx/libwidg/Toggle.st,v 1.10 1995-01-26 16:05:02 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    46
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    47
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    48
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
    49
documentation
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
    50
"
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    51
    this button changes state whenever pressed and stays pressed until pressed
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    52
    again. All the main action is in Button, Toggle just redefines buttonpress/
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    53
    release behavior.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    54
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    55
    The toggle may optionally display a little kind-of-lamp (or LED), which
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    56
    is turned on when the toggle is pressed. (i.e. as in the Interviews toolkit).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    57
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    58
    whenever the Toggle changes its change, it will evaluate one of
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    59
    pressAction or releaseAction.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    60
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    61
    For ST-80 compatibility, if the model is nonNil, this one gets a new
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    62
    value and is sent a changed message.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    63
    If nonNil, the model is supposed to be a ValueHolder holding true or false.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    64
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    65
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    66
    instance variables:
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    67
	showLamp    <Boolean>       true if a lamp should be displayed
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    68
	lampColor   <Color>         color of the lamp
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    69
	lampWidth   <Integer>       width of the lamp in pixel
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    70
	lampHeight  <Integer>       height of the lamp in pixel
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    71
"
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    72
!
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    73
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    74
examples
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    75
"
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    76
    Examples:
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    77
	Try these, to see what is possible.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    78
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    79
	(notice, that these examples are meant to show what can be done;
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    80
	 usually, all style-related stuff id preinitialized - you should not
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    81
	 normally play around with onLevel, offLevel, showLamp: etc)
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    82
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    83
      simple:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    84
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    85
	|v t|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    86
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    87
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    88
	t := Toggle label:'press here' in:v.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    89
	t origin:10 @ 10.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    90
	t pressAction:[Transcript showCr:'toggle pressed'.].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    91
	t releaseAction:[Transcript showCr:'toggle released'.].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    92
	v realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    93
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    94
      changing logo:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    95
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    96
	|v t|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
    97
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    98
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    99
	t := Toggle label:'eat me' in:v.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   100
	t origin:10 @ 10.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   101
	t pressAction:[Transcript showCr:'smaller'. t label:'drink me'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   102
	t releaseAction:[Transcript showCr:'larger'. t label:'eat me'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   103
	v realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   104
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   105
      changing logo and freezing size (looks better):
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   106
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   107
	|v t|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   108
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   109
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   110
	'create with large logo; freeze; change to small logo'.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   111
	t := Toggle label:'drink me' in:v. 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   112
	t sizeFixed:true.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   113
	t label:'eat me'.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   114
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   115
	t origin:10 @ 10.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   116
	t pressAction:[Transcript showCr:'smaller'. t label:'drink me'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   117
	t releaseAction:[Transcript showCr:'larger'. t label:'eat me'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   118
	v realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   119
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   120
      adding lamp (on by default in some view styles):
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   121
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   122
	|v t|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   123
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   124
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   125
	t := Toggle label:'off' in:v.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   126
	t showLamp:true.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   127
	t origin:10 @ 10.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   128
	t pressAction:[Transcript showCr:'on'. t label:'on'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   129
	t releaseAction:[Transcript showCr:'off'. t label:'off'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   130
	v realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   131
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   132
      lamp only - no 'going-in'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   134
	|v t|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   135
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   136
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   137
	t := Toggle label:'off' in:v.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   138
	t showLamp:true.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   139
	t onLevel:(t offLevel).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   140
	t origin:10 @ 10.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   141
	t pressAction:[Transcript showCr:'on'. t label:'on'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   142
	t releaseAction:[Transcript showCr:'off'. t label:'off'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   143
	v realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   144
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   145
      lamp and freezing size of the label (looks better):
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   146
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   147
	|v t|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   148
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   149
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   150
	t := Toggle label:'off' in:v.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   151
	t showLamp:true.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   152
	t sizeFixed:true.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   153
	t origin:10 @ 10.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   154
	t pressAction:[Transcript showCr:'on'. t label:'on'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   155
	t releaseAction:[Transcript showCr:'off'. t label:'off'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   156
	v realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   157
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   158
      another variation:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   159
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   160
	|v t|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   161
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   162
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   163
	t := Toggle label:'off' in:v.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   164
	t showLamp:true.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   165
	t sizeFixed:true.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   166
	t onLevel:(t offLevel).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   167
	t origin:10 @ 10.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   168
	t pressAction:[Transcript showCr:'on'. t label:'on'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   169
	t releaseAction:[Transcript showCr:'off'. t label:'off'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   170
	v realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   171
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   172
      and another one:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   173
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   174
	|v t|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   175
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   176
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   177
	t := Toggle label:'off' in:v.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   178
	t showLamp:true.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   179
	t sizeFixed:true.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   180
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   181
	t showLamp:false.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   182
	t offLevel:3.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   183
	t onLevel:3.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   184
	t origin:10 @ 10.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   185
	t pressAction:[Transcript showCr:'on'. t showLamp:true. t label:'on'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   186
	t releaseAction:[Transcript showCr:'off'. t showLamp:false. t label:'off'].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   187
	v realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   188
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   189
      another font:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   190
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   191
	|v t|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   192
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   193
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   194
	t := Toggle label:'off' in:v.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   195
	t font:(Font family:'times' face:'bold' style:'roman' size:24).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   196
	t label:'hello'.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   197
	t origin:10 @ 10.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   198
	t pressAction:[Transcript showCr:'on'.].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   199
	t releaseAction:[Transcript showCr:'off'.].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   200
	v realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   201
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   202
      another font (no, I dont know what it means :-):
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   203
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   204
	|v t|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   205
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   206
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   207
	t := Toggle label:'off' in:v.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   208
	t font:(Font family:'k14' face:nil style:nil size:nil).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   209
	t label:(TwoByteString with:(Character value:16r3021)).
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   210
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   211
	t origin:10 @ 10.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   212
	t pressAction:[Transcript showCr:'on'.].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   213
	t releaseAction:[Transcript showCr:'off'.].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   214
	v realize
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   215
"
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   216
! !
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   217
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   218
!Toggle methodsFor:'initialization'!
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   219
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   220
initialize
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   221
    super initialize.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   222
    actionWhenPressed := true
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   223
!
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   224
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   225
initStyle
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   226
    super initStyle.
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   227
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   228
    showLamp := StyleSheet at:#toggleShowLamp default:false.
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   229
    showLamp ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   230
	onLevel := offLevel.
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   231
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   232
	"dont know, if I like this ..."
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   233
	"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   234
	activeBgColor := bgColor
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   235
	"
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   236
    ].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   237
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   238
    lampColor := StyleSheet at:#toggleLampColor default:Color yellow.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   239
    lampWidth := (device horizontalPixelPerMillimeter * 1.8) rounded.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   240
    lampHeight := (device verticalPixelPerMillimeter * 3.5) rounded.
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   241
! !
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   242
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   243
!Toggle methodsFor:'accessing'!
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   244
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   245
showLamp
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   246
    "return true, if I show a lamp"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   247
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   248
    ^ showLamp
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   249
!
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   250
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   251
showLamp:aBoolean
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   252
    "enable/disable drawing of the lamp"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   253
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   254
    showLamp ~~ aBoolean ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   255
	showLamp := aBoolean.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   256
	self computeLabelSize.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   257
	fixSize ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   258
	    self resize
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   259
	]
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   260
    ]
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   261
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   262
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   263
lampColor:aColor
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   264
    "change the color of the toggle-lamp"
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   265
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   266
    lampColor := aColor.
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   267
    (shown and:[showLamp and:[pressed]]) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   268
	self redraw
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   269
    ]
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   270
! !
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   271
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   272
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   273
!Toggle methodsFor:'private'!
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   274
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   275
computeLabelOrigin
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   276
    "compute the origin of the form/text.
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   277
     redefined to move label to the right if there is a lamp."
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   278
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   279
    super computeLabelOrigin.
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   280
    showLamp ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   281
	labelOriginX := labelOriginX + hSpace + lampWidth + hSpace.
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   282
    ]
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   283
!
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   284
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   285
computeLabelSize
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   286
    "compute the extent needed to hold the label plus the lamp"
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   287
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   288
    super computeLabelSize.
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   289
    showLamp ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   290
	labelWidth := labelWidth + hSpace + lampWidth + hSpace.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   291
	labelHeight := labelHeight max: lampHeight
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   292
    ]
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   293
! !
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   294
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   295
!Toggle methodsFor:'changing state'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   296
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   297
toggleNoAction
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   298
    "toggle, but do NOT perform any action - can be used to change a toggle
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   299
     under program control (i.e. turn one toggle off from another one)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   300
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   301
    |newLevel|
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   302
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   303
    pressed := pressed not.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   304
    pressed ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   305
	newLevel := onLevel.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   306
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   307
	newLevel := offLevel.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   308
    ].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   309
    self level:newLevel.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   310
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   311
    shown ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   312
	self redraw
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   313
    ].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   314
    model notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   315
	model value:pressed
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   316
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   317
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   318
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   319
toggle
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   320
    "toggle and perform the action"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   321
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   322
    |action|
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   323
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   324
    enabled ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   325
	self toggleNoAction.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   326
	pressed ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   327
	    action := pressActionBlock
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   328
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   329
	    action := releaseActionBlock
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   330
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   331
	action notNil ifTrue:[action value].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   332
	model notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   333
	    model value:pressed.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   334
	    model changed
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   335
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   336
	self changed
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   337
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   338
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   339
70
14443a9ea4ec *** empty log message ***
claus
parents: 63
diff changeset
   340
!Toggle methodsFor:'event handling'!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   341
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   342
buttonPress:button x:x y:y
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   343
    ((button == 1) or:[button == #select]) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   344
	self toggle
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   345
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   346
	^ super buttonPress:button x:x y:y
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   347
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   348
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   349
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   350
buttonRelease:button x:x y:y
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   351
    ((button == 1) or:[button == #select]) ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   352
	^ super buttonRelease:button x:x y:y
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   353
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   354
    "ignore"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   355
! !
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   356
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   357
!Toggle methodsFor:'redrawing'!
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   358
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   359
drawWith:fg and:bg
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   360
    "redraw myself with fg/bg. Use super to draw the label, 
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 22
diff changeset
   361
     drawing of the lamp is done here."
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   362
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   363
    |x y|
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   364
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   365
    super drawWith:fg and:bg.   "this draws the text"
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   366
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   367
    showLamp ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   368
	x := hSpace + margin.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   369
	y := (height - lampHeight) // 2.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   370
	self drawEdgesForX:x y:y width:lampWidth height:lampHeight level:-1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   371
	pressed ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   372
	    self paint:lampColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   373
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   374
	    self paint:bgColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   375
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   376
	self fillRectangleX:x+2 y:y+2 width:lampWidth - 4 height:lampHeight - 4
22
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   377
    ]
ac872628ef2d *** empty log message ***
claus
parents: 7
diff changeset
   378
! !