Button.st
author claus
Sat, 08 Jan 1994 18:27:56 +0100
changeset 21 9ef599238fea
parent 18 66bf62e27141
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
"
4
88eb91574867 *** empty log message ***
claus
parents: 2
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
Label subclass:#Button
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'pressActionBlock releaseActionBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    15
                              enabled pressed active
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    16
                              autoRepeat repeatBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    17
                              onLevel offLevel
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
                              initialDelay repeatDelay
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
                              disabledFgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
                              activeFgColor activeBgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    21
                              enteredFgColor enteredBgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    22
                              isReturnButton
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    23
                              shadowForm lightForm
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    24
                              formColor formShadowColor formLightColor'
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
    25
       classVariableNames:'ReturnForm ReturnLightForm ReturnShadowForm'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    26
       poolDictionaries:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    27
       category:'Views-Interactors'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    28
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    29
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    30
Button comment:'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    31
4
88eb91574867 *** empty log message ***
claus
parents: 2
diff changeset
    32
COPYRIGHT (c) 1989 by Claus Gittinger
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    33
              All Rights Reserved
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    34
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
    35
$Header: /cvs/stx/stx/libwidg/Button.st,v 1.5 1994-01-08 17:22:47 claus Exp $
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    36
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    37
written spring/summer 89 by claus
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    38
'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    39
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    40
!Button class methodsFor:'documentation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    41
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    42
documentation
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    43
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    44
    Buttons are Labels which do something when pressed/released.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    45
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    46
    Instance variables:
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    47
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    48
    pressActionBlock        <Block>         block to evaluate when pressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    49
    releaseActionBlock      <Block>         block to evaluate when released
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    50
    enabled                 <Boolean>       pressing is allowed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    51
    active                  <Boolean>       true during action evaluation (internal)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    52
    pressed                 <Boolean>       true if currently pressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    53
    autoRepeat              <Boolean>       allows auto-repeat when pressed long enough
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    54
    repeatBlock             <Block>         block evaluated for auto-repeat
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    55
    onLevel                 <Number>        level when pressed (3D only)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    56
    offLevel                <Number>        level when released (3D only)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    57
    initialDelay            <Number>        seconds till first auto-repeat
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    58
    repeatDelay             <Number>        seconds of repeat intervall
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    59
    disabledFgColor         <Color>         color used to draw logo when disabled
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    60
    activeFgColor           <Color>         color to draw logo when pressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    61
    activeBgColor           <Color>         bg color when pressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    62
    enteredFgColor          <Color>         color to draw logo when cursor entered
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    63
    enteredBgColor          <Color>         bg color when cursor entered
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    64
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    65
    isReturnButton          <Boolean>       true if this button is also activated by the
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    66
                                            return key
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    67
    shadowForm              <Form>          form to display in addition to buttons label
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    68
    lightForm               <Form>          light part of shadowForm
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    69
    formColor               <Color>         color to draw form with
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    70
    formShadowColor         <Color>         color for shadowing the form (3D only)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    71
    formLightColor          <Color>         color for lighting the form (3D only)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    72
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    73
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    74
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    75
!Button class methodsFor:'defaults'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    76
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    77
defaultInitialDelay
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    78
    "when autorepeat is enabled, and button is not released,
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    79
     start repeating after initialDelay seconds"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    80
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    81
    ^ 0.2
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    82
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    83
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    84
defaultRepeatDelay
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    85
    "when autorepeat is enabled, and button is not released,
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    86
     repeat every repeatDelay seconds"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    87
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    88
    ^ 0.025
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    89
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    90
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    91
returnFormOn:aDevice
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    92
    "return the form used for the return arrow in non-3D;
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    93
     cache the one for Display for the next round."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    94
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    95
    |f|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    96
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
    97
    ((aDevice == Display) and:[ReturnForm notNil]) ifTrue:[
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
    98
        ^ ReturnForm
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    99
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   100
    f := Form fromFile:'Return.xbm' resolution:100 on:aDevice.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   101
    f isNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   102
        f := Form width:24 height:16 fromArray:#(2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   103
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   104
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   105
                                                 2r00000000 2r00000011 2r11100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   106
                                                 2r00000001 2r10000011 2r11100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   107
                                                 2r00000011 2r10000011 2r11100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   108
                                                 2r00000111 2r11111111 2r11100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   109
                                                 2r00001111 2r11111111 2r11100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   110
                                                 2r00011111 2r11111111 2r11100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   111
                                                 2r00001111 2r11111111 2r11100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   112
                                                 2r00000111 2r11111111 2r11100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   113
                                                 2r00000011 2r10000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   114
                                                 2r00000001 2r10000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   115
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
                                                 2r00000000 2r00000000 2r00000000)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   118
                                              on:aDevice
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   119
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
    (aDevice == Display) ifTrue:[
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   121
        ReturnForm := f
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   123
    ^ f
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   124
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   125
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
returnShadowFormOn:aDevice
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   127
    "return the form used for the return arrow shadow pixels (3D only);
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
     cache the one for Display for the next round."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   130
    |f|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   131
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   132
    ((aDevice == Display) and:[ReturnShadowForm notNil]) ifTrue:[
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   133
        ^ ReturnShadowForm
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
    f := Form fromFile:'ReturnShadow.xbm' resolution:100 on:aDevice.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
    f isNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   137
        f := Form width:24 height:16 fromArray:#(2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   139
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   140
                                                 2r00000000 2r00000011 2r11100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   141
                                                 2r00000001 2r10000010 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   142
                                                 2r00000010 2r10000010 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   143
                                                 2r00000100 2r11111110 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   144
                                                 2r00001000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   145
                                                 2r00010000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   146
                                                 2r00001000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   147
                                                 2r00000100 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   148
                                                 2r00000010 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   149
                                                 2r00000001 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   150
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   151
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   152
                                                 2r00000000 2r00000000 2r00000000)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   153
                                              on:aDevice
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   154
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   155
    (aDevice == Display) ifTrue:[
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   156
        ReturnShadowForm := f
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   158
    ^ f
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
returnLightFormOn:aDevice
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   162
    "return the form used for the return arrow light pixels (3D only);
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
     cache the one for Display for the next round"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   165
    |f|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   166
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   167
    ((aDevice == Display) and:[ReturnLightForm notNil]) ifTrue:[
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   168
        ^ ReturnLightForm
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   169
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   170
    f := Form fromFile:'ReturnLight.xbm' resolution:100 on:aDevice.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   171
    f isNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   172
        f := Form width:24 height:16 fromArray:#(2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   173
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   174
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   175
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   176
                                                 2r00000000 2r00000000 2r00100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   177
                                                 2r00000000 2r00000000 2r00100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   178
                                                 2r00000000 2r00000000 2r00100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   179
                                                 2r00000000 2r00000000 2r00100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   180
                                                 2r00000000 2r00000000 2r00100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   181
                                                 2r00000000 2r00000000 2r00100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   182
                                                 2r00000000 2r11111111 2r11100000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   183
                                                 2r00000000 2r10000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   184
                                                 2r00000000 2r10000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   185
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   186
                                                 2r00000000 2r00000000 2r00000000
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   187
                                                 2r00000000 2r00000000 2r00000000)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   188
                                              on:aDevice
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   189
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   190
    (aDevice == Display) ifTrue:[
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   191
        ReturnLightForm := f
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   192
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   193
    ^ f
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   194
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   195
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   196
!Button class methodsFor:'instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   197
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   198
label:aLabel action:aBlock in:aView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   199
    "create and return a new Button with text-label, aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   200
     and pressAction, aBlock.  Button is placed into aView."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   201
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   202
    ^ ((self in:aView) label:aLabel) action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   203
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   204
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   205
form:aForm action:aBlock in:aView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   206
    "create and return a new Button with icon-label, aForm
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   207
     and pressAction, aBlock.  Button is placed into aView."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   208
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   209
    ^ ((self in:aView) form:aForm) action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   210
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   211
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   212
!Button methodsFor:'initialization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   213
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   214
initialize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   215
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   216
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   217
    enabled := true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   218
    active := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   219
    autoRepeat := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   220
    initialDelay := self class defaultInitialDelay.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   221
    repeatDelay := self class defaultRepeatDelay.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   222
    pressed := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   223
    isReturnButton := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   224
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   225
    self initStyle
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   226
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   227
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   228
initStyle
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   229
    super initStyle.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   230
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   231
    onLevel := -1.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   232
    offLevel := 1.
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   233
    softEdge := false.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   234
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   235
    disabledFgColor := Color grey.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   236
    enteredFgColor := fgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   237
    enteredBgColor := bgColor.
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   238
    activeFgColor := activeBgColor := nil.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   239
    enteredFgColor := enteredBgColor := nil.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   240
    halfShadowColor := shadowColor := nil.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   241
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   242
    (style == #next) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   243
        softEdge := true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   244
        onLevel := 1.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   245
        offLevel := 2.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   246
        device hasGreyscales ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   247
            activeFgColor := Black.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   248
            activeBgColor := White.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   249
            enteredFgColor := fgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   250
            enteredBgColor := Color lightGrey.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   251
            halfShadowColor := Color darkGrey.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   252
            shadowColor := Black.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   253
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   254
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   255
        (style == #openwin) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   256
            device hasGreyscales ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   257
                activeFgColor := Black.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   258
                activeBgColor := Color grey
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   259
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   260
        ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   261
            (style == #mswindows) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   262
                disabledFgColor := Color darkGrey.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   263
                device hasGreyscales ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   264
                    offLevel := 3.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   265
                    onLevel := -1.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   266
                    softEdge := true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   267
                    fgColor := Black.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   268
                    bgColor := Grey.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   269
                    halfShadowColor := Color darkGrey.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   270
                    shadowColor := Black.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   271
                    activeFgColor := fgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   272
                    activeBgColor := bgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   273
                ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   274
            ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   275
                (style == #iris) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   276
                    offLevel := 3.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   277
                    onLevel := -1.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   278
                    softEdge := true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   279
                    halfShadowColor := Color darkGrey.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   280
                    shadowColor := Black.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   281
                    disabledFgColor := Color darkGrey.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   282
                    enteredFgColor := fgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   283
                    device hasGreyscales ifTrue:[
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
   284
                        enteredBgColor := bgColor lightened "Color lightGrey".
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   285
                        activeBgColor := enteredBgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   286
                        activeFgColor := enteredFgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   287
                    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   288
                        enteredBgColor := Color veryLightGrey.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   289
                        activeBgColor := Black.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   290
                        activeFgColor := White.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   291
                    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   292
                ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   293
                    device hasColors ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   294
                        activeFgColor := Color red:100 green:100 blue:0 "yellow"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   295
                    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   296
                        activeFgColor := White
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   297
                    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   298
                    device hasGreyscales ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   299
                        activeBgColor := bgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   300
                    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   301
                        activeBgColor := Black
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   302
                    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   303
                ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   304
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   305
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   306
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   307
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   308
    "default for mono-displays and non-3D"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   309
    activeFgColor isNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   310
        activeFgColor := White.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   311
        activeBgColor := Black
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   312
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   313
    self level:offLevel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   314
    margin := (onLevel abs) max:(offLevel abs).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   315
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   316
    self is3D ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   317
        shadowForm := self class returnShadowFormOn:device.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   318
        lightForm := self class returnLightFormOn:device.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   319
        formColor := viewBackground.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   320
        formShadowColor := shadowColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   321
        formLightColor := lightColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   322
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   323
        shadowForm := self class returnFormOn:device.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   324
        formColor := Black
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   325
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   326
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   327
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   328
initCursor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   329
    "set up a hand cursor"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   330
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   331
    cursor := Cursor hand
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   332
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   333
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   334
initEvents
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   335
    super initEvents.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   336
    self enableButtonEvents.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   337
    self enableEnterLeaveEvents
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   338
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   339
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   340
realize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   341
    super realize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   342
    active := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   343
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   344
    fgColor := fgColor on:device.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   345
    bgColor := bgColor on:device.
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   346
    activeFgColor notNil ifTrue:[
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   347
        activeFgColor := activeFgColor on:device.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   348
    ].
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   349
    activeBgColor notNil ifTrue:[
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   350
        activeBgColor := activeBgColor on:device.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   351
    ].
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   352
    enteredFgColor notNil ifTrue:[
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   353
        enteredFgColor := enteredFgColor on:device.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   354
    ].
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   355
    enteredBgColor notNil ifTrue:[
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   356
        enteredBgColor := enteredBgColor on:device.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   357
    ].
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   358
    formColor notNil ifTrue:[
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   359
        formColor := formColor on:device.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   360
    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   361
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   362
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   363
reinitialize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   364
    super reinitialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   365
    active := false
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   366
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   367
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   368
!Button methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   369
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   370
is3D
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   371
    "return true, if the receiver is a 3D style view"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   372
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   373
    style == #mswindows ifTrue:[^ true].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   374
    ^ super is3D
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   375
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   376
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   377
isReturnButton:aBoolean
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   378
    "show/dont show a return-key image after the label"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   379
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   380
    isReturnButton ~~ aBoolean ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   381
        isReturnButton := aBoolean.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   382
        self newLayout
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   383
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   384
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   385
    
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   386
disable
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   387
    "disable the button"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   388
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   389
    enabled ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   390
        enabled := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   391
        self redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   392
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   393
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   394
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   395
enable
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   396
    "enable the button"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   397
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   398
    enabled ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   399
        enabled := true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   400
        self redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   401
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   402
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   403
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   404
turnOffWithoutRedraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   405
    "turn the button off - no redraw"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   406
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   407
    pressed := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   408
    active := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   409
    self is3D ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   410
        "do not use super level:offLevel
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   411
         - that one redraws the edges.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   412
         Shure, this is no good coding style"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   413
        level := offLevel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   414
        margin := level abs
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   415
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   416
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   417
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   418
turnOff
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   419
    "turn the button off (if not already off)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   420
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   421
    pressed ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   422
        active := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   423
        pressed := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   424
        self level:offLevel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   425
        self redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   426
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   427
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   428
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   429
turnOn
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   430
    "turn the button on (if not already on)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   431
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   432
    pressed ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   433
        pressed := true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   434
        self level:onLevel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   435
        self redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   436
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   437
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   438
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   439
pressAction:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   440
    "define the action to be performed on press"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   441
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   442
    pressActionBlock := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   443
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   444
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   445
releaseAction:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   446
    "define the action to be performed on release"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   447
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   448
    releaseActionBlock := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   449
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   450
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   451
action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   452
    "convenient method: define the press-action clear any release-action"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   453
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   454
    releaseActionBlock := nil.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   455
    pressActionBlock := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   456
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   457
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   458
autoRepeat
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   459
    "turn on autorepeat"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   460
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   461
    autoRepeat := true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   462
    repeatBlock := [self repeat]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   463
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   464
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   465
isOn
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   466
    "return true, if this button is currently pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   467
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   468
    ^ pressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   469
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   470
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   471
onLevel:aNumber
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   472
    "set the level of the button when pressed (i.e. how deep)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   473
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   474
    onLevel := aNumber.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   475
    pressed ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   476
        self level:onLevel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   477
        margin := onLevel abs max:offLevel abs.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   478
        self redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   479
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   480
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   481
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   482
onLevel
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   483
    "return the level of the button when pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   484
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   485
    ^ onLevel
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   486
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   487
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   488
offLevel:aNumber
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   489
    "set the level of the button when not pressed (i.e. how high)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   490
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   491
    offLevel := aNumber.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   492
    pressed ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   493
        self level:offLevel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   494
        margin := onLevel abs max:offLevel abs.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   495
        self redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   496
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   497
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   498
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   499
offLevel
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   500
    "return the level of the button when released"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   501
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   502
    ^ offLevel
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   503
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   504
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   505
activeForegroundColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   506
    "return the foreground color to be used when pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   507
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   508
    ^ activeFgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   509
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   510
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   511
activeForegroundColor:aColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   512
    "set the foreground color to be used when pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   513
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   514
    activeFgColor := aColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   515
    pressed ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   516
        self redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   517
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   518
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   519
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   520
activeBackgroundColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   521
    "return the background color to be used when pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   522
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   523
    ^ activeBgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   524
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   525
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   526
activeBackgroundColor:aColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   527
    "set the background color to be used when pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   528
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   529
    activeBgColor := aColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   530
    pressed ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   531
        self redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   532
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   533
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   534
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   535
activeForegroundColor:fgColor backgroundColor:bgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   536
    "set the colors to be used when pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   537
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   538
    activeFgColor := fgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   539
    activeBgColor := bgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   540
    pressed ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   541
        self redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   542
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   543
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   544
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   545
enteredForegroundColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   546
    "return the foreground color to be used when the mouse
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   547
     pointer enters the button area"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   548
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   549
    ^ enteredFgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   550
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   551
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   552
enteredForegroundColor:aColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   553
    "set the foreground color to be used when the mouse
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   554
     pointer enters the button area"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   555
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   556
    enteredFgColor := aColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   557
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   558
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   559
enteredBackgroundColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   560
    "return the background color to be used when the mouse
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   561
     pointer enters the button area"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   562
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   563
    ^ enteredBgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   564
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   565
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   566
enteredBackgroundColor:aColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   567
    "set the background color to be used when the mouse
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   568
     pointer enters the button area"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   569
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   570
    enteredBgColor := aColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   571
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   572
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   573
!Button methodsFor:'private'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   574
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   575
computeLabelSize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   576
    "compute the extent needed to hold the label plus the return form"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   577
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   578
    super computeLabelSize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   579
    isReturnButton ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   580
        labelWidth := labelWidth + hSpace + shadowForm width.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   581
        labelHeight := labelHeight max: (shadowForm height + vSpace)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   582
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   583
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   584
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   585
resize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   586
    "resize myself to make logo fit into myself.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   587
     Redefined, since we add space for a frame around text when non-3D"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   588
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   589
    |extra|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   590
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   591
    logo isNil ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   592
        self computeLabelOrigin.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   593
        (relativeExtent isNil and:[extentRule isNil]) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   594
            extra := (onLevel abs max:offLevel abs) * 2.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   595
            self is3D ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   596
                (logo isKindOf:Form) ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   597
                    "add space for a frame around"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   598
                    extra := extra + 2
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   599
                ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   600
            ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   601
            self extent:(labelWidth + extra) @ (labelHeight + extra)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   602
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   603
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   604
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   605
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   606
!Button methodsFor:'redrawing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   607
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   608
drawWith:fg and:bg
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   609
    "redraw myself with fg/bg. Use super to draw the label, add
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   610
     the return-arrow here."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   611
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   612
    |x y sColor lColor|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   613
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   614
    super drawWith:fg and:bg.   "this draws the text"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   615
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   616
    isReturnButton ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   617
        y := (height - shadowForm height) // 2.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   618
        x := width - shadowForm width - (hSpace // 2).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   619
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   620
        self is3D ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   621
            self paint:fg on:bg.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   622
            self background:bg.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   623
            self drawOpaqueForm:shadowForm x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   624
        ] ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   625
            ((formShadowColor colorId notNil)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   626
             and:[(formLightColor colorId notNil)
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   627
             and:[formColor colorId notNil]])
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   628
            ifTrue:[
18
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   629
                sColor := formShadowColor.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   630
                lColor := formLightColor.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   631
            ] ifFalse:[
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   632
                sColor := Black.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   633
                lColor := White.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   634
            ].
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   635
            shadowForm notNil ifTrue:[
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   636
                self foreground:sColor.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   637
                self drawForm:shadowForm x:x y:y.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   638
            ].
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   639
            lightForm notNil ifTrue:[
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   640
                self foreground:lColor.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   641
                self drawForm:lightForm x:x y:y.
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   642
            ].
66bf62e27141 *** empty log message ***
claus
parents: 6
diff changeset
   643
            self foreground:fg background:bg function:#copy
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   644
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   645
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   646
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   647
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   648
redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   649
    "like redrawing a label, but hilight when pressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   650
     (lolight when disabled)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   651
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   652
    |fg bg|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   653
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   654
    shown ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   655
        fg := fgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   656
        bg := bgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   657
        active ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   658
            self is3D ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   659
                enabled ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   660
                    fg := disabledFgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   661
                ] ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   662
                    pressed ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   663
                        fg := activeFgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   664
                        bg := activeBgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   665
                    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   666
                ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   667
                self drawWith:fg and:bg
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   668
            ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   669
                enabled ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   670
                    fg := disabledFgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   671
                    self drawWith:fg and:bg
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   672
                ] ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   673
                    pressed ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   674
                        self drawWith:bgColor and:fgColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   675
                        (logo isKindOf:Form) ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   676
                            self paint:bg.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   677
                            self drawRectangleX:0 y:0 width:width height:height
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   678
                        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   679
                    ] ifFalse:[     
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   680
                        super redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   681
                    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   682
                ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   683
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   684
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   685
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   686
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   687
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   688
!Button methodsFor:'event handling'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   689
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   690
buttonPress:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   691
    "button was pressed - if enabled, perform pressaction"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   692
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   693
    button == 1 ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   694
        ^ super buttonPress:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   695
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   696
    pressed ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   697
        enabled ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   698
            pressed := true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   699
            self level:onLevel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   700
            self redraw.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   701
            active := true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   702
            pressActionBlock notNil ifTrue:[device synchronizeOutput.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   703
                                            pressActionBlock value].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   704
            active := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   705
            device synchronizeOutput.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   706
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   707
            autoRepeat ifTrue:[
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
   708
                Processor addTimedBlock:repeatBlock after:initialDelay
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   709
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   710
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   711
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   712
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   713
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   714
buttonMultiPress:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   715
    ^ self buttonPress:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   716
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   717
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   718
buttonRelease:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   719
    "button was released - if enabled, perform releaseaction"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   720
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   721
    button == 1 ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   722
        ^ super buttonRelease:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   723
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   724
    pressed ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   725
        autoRepeat ifTrue:[
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
   726
            Processor removeTimedBlock:repeatBlock
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   727
        ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   728
        pressed := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   729
        self level:offLevel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   730
        self redraw.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   731
        enabled ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   732
            active := true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   733
            releaseActionBlock notNil ifTrue:[device synchronizeOutput.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   734
                                              releaseActionBlock value].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   735
            active := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   736
            enteredFgColor notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   737
                self drawWith:enteredFgColor and:enteredBgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   738
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   739
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   740
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   741
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   742
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   743
pointerLeave:state
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   744
    "redraw with normal colors if they differ from enteredColors"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   745
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   746
    pressed ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   747
        autoRepeat ifTrue:[
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
   748
            Processor removeTimedBlock:repeatBlock
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   749
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   750
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   751
        enabled ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   752
            enteredFgColor notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   753
                (enteredFgColor ~~ fgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   754
                or:[enteredBgColor ~~ bgColor]) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   755
                    self drawWith:fgColor and:bgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   756
                ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   757
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   758
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   759
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   760
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   761
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   762
pointerEnter:state x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   763
    "redraw with enteredColors if they differ from the normal colors"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   764
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   765
    pressed ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   766
        enabled ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   767
            autoRepeat ifTrue:[
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
   768
                Processor addTimedBlock:repeatBlock after:initialDelay
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   769
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   770
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   771
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   772
        enabled ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   773
            enteredFgColor notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   774
                (enteredFgColor ~~ fgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   775
                or:[enteredBgColor ~~ bgColor]) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   776
                    self drawWith:enteredFgColor and:enteredBgColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   777
                ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   778
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   779
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   780
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   781
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   782
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   783
repeat
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   784
    "this is sent from the autorepeat-block, when the button has been pressed long
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   785
     enough; it simulates a release-press, thereby retriggering action."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   786
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   787
    pressed ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   788
        enabled ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   789
            active ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   790
                active := true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   791
                releaseActionBlock notNil ifTrue:[releaseActionBlock value].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   792
                pressActionBlock notNil ifTrue:[pressActionBlock value].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   793
                active := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   794
                device synchronizeOutput.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   795
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   796
                autoRepeat ifTrue:[
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
   797
                    Processor addTimedBlock:repeatBlock after:repeatDelay
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   798
                ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   799
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   800
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   801
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   802
! !