EnterFieldGroup.st
author claus
Tue, 22 Nov 1994 15:33:56 +0100
changeset 69 2b72a20e61c2
parent 59 450ce95a72a4
child 121 4e63bbdb266a
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     1
"
5
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1992 by Claus Gittinger
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
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
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    13
Object subclass:#EnterFieldGroup
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    14
	 instanceVariableNames:'fields currentField leaveAction'
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    15
	 classVariableNames:''
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    16
	 poolDictionaries:''
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    17
	 category:'Views-Support'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
EnterFieldGroup comment:'
5
claus
parents: 3
diff changeset
    21
COPYRIGHT (c) 1992 by Claus Gittinger
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    22
	      All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    23
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    24
$Header: /cvs/stx/stx/libwidg/EnterFieldGroup.st,v 1.7 1994-11-22 14:33:52 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    25
'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    26
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    27
!EnterFieldGroup class methodsFor:'documentation'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    28
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    29
copyright
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    30
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    31
 COPYRIGHT (c) 1992 by Claus Gittinger
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    32
	      All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    33
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    34
 This software is furnished under a license and may be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    35
 only in accordance with the terms of that license and with the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    36
 inclusion of the above copyright notice.   This software may not
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    37
 be provided or otherwise made available to, or used by, any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    38
 other person.  No title to or ownership of the software is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    39
 hereby transferred.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    40
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    41
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    42
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    43
version
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    44
"
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    45
$Header: /cvs/stx/stx/libwidg/EnterFieldGroup.st,v 1.7 1994-11-22 14:33:52 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    46
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    47
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    48
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    49
documentation
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    50
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    51
    EnterFieldGroup controlls the interaction between EnterFields
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    52
    enabling next/prev field when a field is left. Instances of
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    53
    this class keep track of which field of the group is the currentField
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    54
    (i.e. the one getting keyboard input).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    55
    The block accessable as leaveAction is evaluated when the last
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    56
    field of the group is left (by cursor-down or cr). Usually this block
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    57
    triggers some action on the fields.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    58
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 7
diff changeset
    59
! !
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    60
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    61
!EnterFieldGroup methodsFor:'adding / removing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    62
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    63
add:aField
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    64
    |thisIndex next|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    65
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    66
    fields isNil ifTrue:[
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    67
	fields := OrderedCollection new
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    68
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    69
    fields add:aField.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    70
    thisIndex := fields size.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    71
    aField delegate:self.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    72
    aField disable.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    73
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    74
    "set the fields enableAction to disable active field"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    75
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    76
    aField enableAction:[
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    77
	currentField notNil ifTrue:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    78
	    currentField disable
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    79
	].
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    80
	currentField := aField
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    81
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    82
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    83
    "set the fields leaveAction to enable next field"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    84
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    85
    aField leaveAction:[:key |
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    86
	currentField notNil ifTrue:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    87
	    currentField disable
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    88
	].
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    89
	(key == #Up) ifTrue:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    90
	    (thisIndex == 1) ifTrue:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    91
		next := fields size
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    92
	    ] ifFalse:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    93
		next := thisIndex - 1
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    94
	    ]
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    95
	].
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    96
	(key == #Down) ifTrue:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    97
	    (thisIndex == (fields size)) ifTrue:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    98
		next := 1
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
    99
	    ] ifFalse:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   100
		next := thisIndex + 1
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   101
	    ]
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   102
	].
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   103
	(key == #Return) ifTrue:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   104
	    (thisIndex == (fields size)) ifTrue:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   105
		leaveAction notNil ifTrue:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   106
		    leaveAction value.
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   107
		    currentField := nil
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   108
		] ifFalse:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   109
		    next := 1
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   110
		]
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   111
	    ] ifFalse:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   112
		next := thisIndex + 1
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   113
	    ]
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   114
	].
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   115
	next notNil ifTrue:[
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   116
	    (fields at:next) enable.
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   117
	    currentField := fields at:next
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   118
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   119
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   121
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
!EnterFieldGroup methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   123
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   124
leaveAction:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   125
    leaveAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   127
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
!EnterFieldGroup methodsFor:'controlling'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   130
makeActive:aField
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   131
    currentField notNil ifTrue:[
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   132
	currentField disable
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   133
    ].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   134
    currentField := aField.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   135
    currentField enable.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   136
!
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   137
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
canHandle:aKey
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   139
    ^ true
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   140
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   141
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   142
mappedView:aView
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   143
    "no interrest in this one ..."
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   144
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   145
    aView mapped
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   146
!
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   147
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   148
configureX:x y:y width:w height:h view:v
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   149
    "no interrest in this one ..."
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   150
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   151
    v configureX:x y:y width:w height:h
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   152
!
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   153
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   154
keyPress:key x:x y:y view:aView
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   155
    "key-press in a field"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   156
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
    currentField notNil ifTrue:[
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   158
	currentField keyPress:key x:0 y:0
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   162
buttonPress:button x:x y:y view:aView
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   163
    self makeActive:aView.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   164
    aView buttonPress:button x:x y:y
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   165
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   166
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   167
buttonShiftPress:button x:x y:y view:aView
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   168
    self makeActive:aView.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   169
    aView buttonShiftPress:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   170
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   171
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   172
buttonMultiPress:button x:x y:y view:aView
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   173
    self makeActive:aView.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   174
    aView buttonMultiPress:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   175
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   176
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   177
buttonRelease:button x:x y:y view:aView
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   178
    aView buttonRelease:button x:x y:y
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   179
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   180
69
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   181
buttonMotion:buttonMask x:x y:y view:aView
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   182
    aView buttonMotion:buttonMask x:x y:y
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   183
!
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   184
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   185
pointerEnter:state x:x y:y view:aView
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   186
    aView pointerEnter:state x:x y:y.
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   187
!
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   188
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   189
pointerLeave:state view:aView
2b72a20e61c2 *** empty log message ***
claus
parents: 59
diff changeset
   190
    aView pointerLeave:state
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   191
! !