EditField.st
author Claus Gittinger <cg@exept.de>
Mon, 20 Nov 1995 17:11:27 +0100
changeset 187 1a429506fad6
parent 174 d80a6cc3f9b2
child 192 fc2fc4347d5d
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) 1990 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 47
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
125
claus
parents: 122
diff changeset
    13
'From Smalltalk/X, Version:2.10.5 on 9-may-1995 at 12:09:38 pm'!
105
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
    14
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    15
EditTextView subclass:#EditField
125
claus
parents: 122
diff changeset
    16
	 instanceVariableNames:'leaveAction enabled enableAction crAction tabAction converter
127
claus
parents: 125
diff changeset
    17
		leaveKeys immediateAccept acceptOnLeave acceptOnReturn
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    18
		lengthLimit entryCompletionBlock passwordCharacter cursorMovementWhenUpdating'
105
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
    19
	 classVariableNames:'DefaultForegroundColor DefaultBackgroundColor
127
claus
parents: 125
diff changeset
    20
		DefaultSelectionForegroundColor DefaultSelectionBackgroundColor
claus
parents: 125
diff changeset
    21
		DefaultFont'
105
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
    22
	 poolDictionaries:''
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
    23
	 category:'Views-Text'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    24
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    25
19
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
    26
!EditField class methodsFor:'documentation'!
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
    27
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    28
copyright
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    29
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    30
 COPYRIGHT (c) 1990 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
    31
	      All Rights Reserved
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    32
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    33
 This software is furnished under a license and may be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    34
 only in accordance with the terms of that license and with the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    35
 inclusion of the above copyright notice.   This software may not
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    36
 be provided or otherwise made available to, or used by, any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    37
 other person.  No title to or ownership of the software is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    38
 hereby transferred.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    39
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    40
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    41
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    42
version
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    43
    ^ '$Header: /cvs/stx/stx/libwidg/EditField.st,v 1.31 1995-11-20 16:11:27 cg Exp $'
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    44
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    45
19
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
    46
documentation
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
    47
"
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    48
    an editable text-field. Realized by using an EditTextView,
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    49
    and forcing its size to 1 line - disabling cursor movement
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    50
    in the vertical direction.
121
claus
parents: 120
diff changeset
    51
claus
parents: 120
diff changeset
    52
    Instance variables:
claus
parents: 120
diff changeset
    53
claus
parents: 120
diff changeset
    54
      leaveAction    <Block | nil>              if non-nil, this is evaluated with
claus
parents: 120
diff changeset
    55
						the key (#Return, #CursorUp etc.) when
claus
parents: 120
diff changeset
    56
						the field is left via keyboard keys.
claus
parents: 120
diff changeset
    57
						(fieldGroups use this to decide which
claus
parents: 120
diff changeset
    58
						 field has to be enabled next)
claus
parents: 120
diff changeset
    59
claus
parents: 120
diff changeset
    60
      enabled        <Boolean>                  if false, input is ignored.
claus
parents: 120
diff changeset
    61
125
claus
parents: 122
diff changeset
    62
      enableAction   <Block | nil>              action performed if the field is
claus
parents: 122
diff changeset
    63
						enabled via an explicit click.
claus
parents: 122
diff changeset
    64
						(this is used by the group to
claus
parents: 122
diff changeset
    65
						 set the active field to the clicked upon field)
121
claus
parents: 120
diff changeset
    66
claus
parents: 120
diff changeset
    67
      crAction       <Block | nil>              if non-nil, keyboard input of a cr are not
claus
parents: 120
diff changeset
    68
						handled specially, instead this block is evaluated
claus
parents: 120
diff changeset
    69
						(however, this block can perform additional checks and send
claus
parents: 120
diff changeset
    70
						 a #accept then)
claus
parents: 120
diff changeset
    71
claus
parents: 120
diff changeset
    72
      tabAction      <Block | nil>              if non-nil, keyboard input of a tab character
claus
parents: 120
diff changeset
    73
						is not entered into the text, instead this block
claus
parents: 120
diff changeset
    74
						is evaluated.
claus
parents: 120
diff changeset
    75
claus
parents: 120
diff changeset
    76
      converter      <PrintConverter | nil>     if non-nil, this is supposed to convert between
claus
parents: 120
diff changeset
    77
						the object and its printed representation.
claus
parents: 120
diff changeset
    78
						Defaults to nil i.e. assume that strings are edited.
claus
parents: 120
diff changeset
    79
claus
parents: 120
diff changeset
    80
      leaveKeys      <Collection>               keys which are interpreted as 'leving the field'
122
claus
parents: 121
diff changeset
    81
125
claus
parents: 122
diff changeset
    82
      immediateAccept   <Boolean>               if true, every change of the text is immediately
claus
parents: 122
diff changeset
    83
						forwarded to the model/acceptBlock. If false,
claus
parents: 122
diff changeset
    84
						the changed value is only stored in the model
claus
parents: 122
diff changeset
    85
						if the field is left or accepted.
claus
parents: 122
diff changeset
    86
						Default is false.
122
claus
parents: 121
diff changeset
    87
claus
parents: 121
diff changeset
    88
      acceptOnLeave  <Boolean>                  if true, leaving the field (via cursor keys)
claus
parents: 121
diff changeset
    89
						automatically accepts the value into the model.
130
claus
parents: 128
diff changeset
    90
						Default is true.
122
claus
parents: 121
diff changeset
    91
claus
parents: 121
diff changeset
    92
      acceptOnReturn <Boolean>                  if true, leaving the field via return
claus
parents: 121
diff changeset
    93
						automatically accepts the value into the model.
130
claus
parents: 128
diff changeset
    94
						Default is true.
19
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
    95
"
120
claus
parents: 118
diff changeset
    96
!
claus
parents: 118
diff changeset
    97
claus
parents: 118
diff changeset
    98
examples 
claus
parents: 118
diff changeset
    99
"
122
claus
parents: 121
diff changeset
   100
    see more examples in EnterFieldGroup>>examples.
claus
parents: 121
diff changeset
   101
claus
parents: 121
diff changeset
   102
claus
parents: 121
diff changeset
   103
    basic field in a view:
120
claus
parents: 118
diff changeset
   104
claus
parents: 118
diff changeset
   105
	|top field|
claus
parents: 118
diff changeset
   106
claus
parents: 118
diff changeset
   107
	top := StandardSystemView new.
claus
parents: 118
diff changeset
   108
	top extent:200@100.
claus
parents: 118
diff changeset
   109
claus
parents: 118
diff changeset
   110
	field := EditField origin:0.0@0.0 in:top.
claus
parents: 118
diff changeset
   111
	field width:1.0.        'let its height as-is'.
claus
parents: 118
diff changeset
   112
claus
parents: 118
diff changeset
   113
	top open
claus
parents: 118
diff changeset
   114
122
claus
parents: 121
diff changeset
   115
125
claus
parents: 122
diff changeset
   116
    forward input in topView to the field:
claus
parents: 122
diff changeset
   117
    (currently, the field does not know this - therefore,
claus
parents: 122
diff changeset
   118
     its been told here ... this may change)
122
claus
parents: 121
diff changeset
   119
claus
parents: 121
diff changeset
   120
	|top field|
claus
parents: 121
diff changeset
   121
claus
parents: 121
diff changeset
   122
	top := StandardSystemView new.
claus
parents: 121
diff changeset
   123
	top extent:200@100.
claus
parents: 121
diff changeset
   124
claus
parents: 121
diff changeset
   125
	field := EditField origin:0.0@0.0 in:top.
claus
parents: 121
diff changeset
   126
	field width:1.0.        'let its height as-is'.
claus
parents: 121
diff changeset
   127
claus
parents: 121
diff changeset
   128
	top delegate:(KeyboardForwarder toView:field).
125
claus
parents: 122
diff changeset
   129
	field hasKeyboardFocus:true.
122
claus
parents: 121
diff changeset
   130
	top open
claus
parents: 121
diff changeset
   131
claus
parents: 121
diff changeset
   132
125
claus
parents: 122
diff changeset
   133
    to make it look better: set some inset:
120
claus
parents: 118
diff changeset
   134
claus
parents: 118
diff changeset
   135
	|top field|
claus
parents: 118
diff changeset
   136
claus
parents: 118
diff changeset
   137
	top := StandardSystemView new.
claus
parents: 118
diff changeset
   138
	top extent:200@100.
claus
parents: 118
diff changeset
   139
claus
parents: 118
diff changeset
   140
	field := EditField origin:0.0@ViewSpacing in:top.
claus
parents: 118
diff changeset
   141
	field width:1.0.        'let its height as-is'.
claus
parents: 118
diff changeset
   142
	field leftInset:ViewSpacing;
claus
parents: 118
diff changeset
   143
	      rightInset:ViewSpacing.
claus
parents: 118
diff changeset
   144
claus
parents: 118
diff changeset
   145
	top open
claus
parents: 118
diff changeset
   146
122
claus
parents: 121
diff changeset
   147
120
claus
parents: 118
diff changeset
   148
    give it an initial contents:
claus
parents: 118
diff changeset
   149
claus
parents: 118
diff changeset
   150
	|top field|
claus
parents: 118
diff changeset
   151
claus
parents: 118
diff changeset
   152
	top := StandardSystemView new.
claus
parents: 118
diff changeset
   153
	top extent:200@100.
claus
parents: 118
diff changeset
   154
claus
parents: 118
diff changeset
   155
	field := EditField origin:0.0@ViewSpacing in:top.
claus
parents: 118
diff changeset
   156
	field width:1.0.       
claus
parents: 118
diff changeset
   157
	field leftInset:ViewSpacing;
claus
parents: 118
diff changeset
   158
	      rightInset:ViewSpacing.
121
claus
parents: 120
diff changeset
   159
	field editValue:'hello world'.
120
claus
parents: 118
diff changeset
   160
claus
parents: 118
diff changeset
   161
	top open
claus
parents: 118
diff changeset
   162
122
claus
parents: 121
diff changeset
   163
125
claus
parents: 122
diff changeset
   164
    have it preselected:
120
claus
parents: 118
diff changeset
   165
claus
parents: 118
diff changeset
   166
	|top field|
claus
parents: 118
diff changeset
   167
claus
parents: 118
diff changeset
   168
	top := StandardSystemView new.
claus
parents: 118
diff changeset
   169
	top extent:200@100.
claus
parents: 118
diff changeset
   170
claus
parents: 118
diff changeset
   171
	field := EditField origin:0.0@ViewSpacing in:top.
claus
parents: 118
diff changeset
   172
	field width:1.0.     
claus
parents: 118
diff changeset
   173
	field leftInset:ViewSpacing;
claus
parents: 118
diff changeset
   174
	      rightInset:ViewSpacing.
121
claus
parents: 120
diff changeset
   175
	field editValue:'hello world' selected:true.
120
claus
parents: 118
diff changeset
   176
claus
parents: 118
diff changeset
   177
	top open
claus
parents: 118
diff changeset
   178
122
claus
parents: 121
diff changeset
   179
120
claus
parents: 118
diff changeset
   180
    have part of it preselected:
claus
parents: 118
diff changeset
   181
claus
parents: 118
diff changeset
   182
	|top field|
claus
parents: 118
diff changeset
   183
claus
parents: 118
diff changeset
   184
	top := StandardSystemView new.
claus
parents: 118
diff changeset
   185
	top extent:200@100.
claus
parents: 118
diff changeset
   186
claus
parents: 118
diff changeset
   187
	field := EditField origin:0.0@ViewSpacing in:top.
claus
parents: 118
diff changeset
   188
	field width:1.0.     
claus
parents: 118
diff changeset
   189
	field leftInset:ViewSpacing;
claus
parents: 118
diff changeset
   190
	      rightInset:ViewSpacing.
121
claus
parents: 120
diff changeset
   191
	field editValue:'hello world';
120
claus
parents: 118
diff changeset
   192
	      selectFromCharacterPosition:1 to:5.
claus
parents: 118
diff changeset
   193
claus
parents: 118
diff changeset
   194
	top open
claus
parents: 118
diff changeset
   195
122
claus
parents: 121
diff changeset
   196
125
claus
parents: 122
diff changeset
   197
    set a size limit:
claus
parents: 122
diff changeset
   198
claus
parents: 122
diff changeset
   199
	|top field|
claus
parents: 122
diff changeset
   200
claus
parents: 122
diff changeset
   201
	top := StandardSystemView new.
claus
parents: 122
diff changeset
   202
	top extent:200@100.
claus
parents: 122
diff changeset
   203
claus
parents: 122
diff changeset
   204
	field := EditField origin:0.0@ViewSpacing in:top.
claus
parents: 122
diff changeset
   205
	field width:1.0.     
claus
parents: 122
diff changeset
   206
	field leftInset:ViewSpacing;
claus
parents: 122
diff changeset
   207
	      rightInset:ViewSpacing.
claus
parents: 122
diff changeset
   208
	field editValue:'hello';
claus
parents: 122
diff changeset
   209
	      maxChars:8.
claus
parents: 122
diff changeset
   210
claus
parents: 122
diff changeset
   211
	top open
claus
parents: 122
diff changeset
   212
claus
parents: 122
diff changeset
   213
121
claus
parents: 120
diff changeset
   214
    use a converter:
125
claus
parents: 122
diff changeset
   215
      - numbers (default to 0):
121
claus
parents: 120
diff changeset
   216
claus
parents: 120
diff changeset
   217
	|top field|
claus
parents: 120
diff changeset
   218
claus
parents: 120
diff changeset
   219
	top := StandardSystemView new.
claus
parents: 120
diff changeset
   220
	top extent:200@100.
claus
parents: 120
diff changeset
   221
claus
parents: 120
diff changeset
   222
	field := EditField origin:0.0@ViewSpacing in:top.
claus
parents: 120
diff changeset
   223
	field width:1.0.
claus
parents: 120
diff changeset
   224
	field leftInset:ViewSpacing;
claus
parents: 120
diff changeset
   225
	      rightInset:ViewSpacing.
claus
parents: 120
diff changeset
   226
claus
parents: 120
diff changeset
   227
	field converter:(PrintConverter new initForNumber).
claus
parents: 120
diff changeset
   228
	field editValue:1234.
claus
parents: 120
diff changeset
   229
	field acceptAction:[:value | Transcript showCr:value].
claus
parents: 120
diff changeset
   230
	field crAction:[field accept. top destroy].
claus
parents: 120
diff changeset
   231
	top open.
claus
parents: 120
diff changeset
   232
claus
parents: 120
diff changeset
   233
      - dates:
claus
parents: 120
diff changeset
   234
claus
parents: 120
diff changeset
   235
	|top field|
claus
parents: 120
diff changeset
   236
claus
parents: 120
diff changeset
   237
	top := StandardSystemView new.
claus
parents: 120
diff changeset
   238
	top extent:200@100.
claus
parents: 120
diff changeset
   239
claus
parents: 120
diff changeset
   240
	field := EditField origin:0.0@ViewSpacing in:top.
claus
parents: 120
diff changeset
   241
	field width:1.0.
claus
parents: 120
diff changeset
   242
	field leftInset:ViewSpacing;
claus
parents: 120
diff changeset
   243
	      rightInset:ViewSpacing.
claus
parents: 120
diff changeset
   244
claus
parents: 120
diff changeset
   245
	field converter:(PrintConverter new initForDate).
claus
parents: 120
diff changeset
   246
	field editValue:Date today.
125
claus
parents: 122
diff changeset
   247
	field acceptAction:[:value | Transcript showCr:value class name , ' ' , value printString].
121
claus
parents: 120
diff changeset
   248
	field crAction:[field accept. top destroy].
claus
parents: 120
diff changeset
   249
	top open.
claus
parents: 120
diff changeset
   250
122
claus
parents: 121
diff changeset
   251
125
claus
parents: 122
diff changeset
   252
    setting immediateAccept, makes the field update with every key:
claus
parents: 122
diff changeset
   253
claus
parents: 122
diff changeset
   254
      - immediate accept numbers, defaulting to nil:
121
claus
parents: 120
diff changeset
   255
claus
parents: 120
diff changeset
   256
	|top field|
claus
parents: 120
diff changeset
   257
claus
parents: 120
diff changeset
   258
	top := StandardSystemView new.
claus
parents: 120
diff changeset
   259
	top extent:200@100.
claus
parents: 120
diff changeset
   260
claus
parents: 120
diff changeset
   261
	field := EditField origin:0.0@ViewSpacing in:top.
claus
parents: 120
diff changeset
   262
	field width:1.0.
claus
parents: 120
diff changeset
   263
	field leftInset:ViewSpacing;
claus
parents: 120
diff changeset
   264
	      rightInset:ViewSpacing.
claus
parents: 120
diff changeset
   265
125
claus
parents: 122
diff changeset
   266
	field converter:(PrintConverter new initForNumberOrNil).
claus
parents: 122
diff changeset
   267
	field immediateAccept:true.
121
claus
parents: 120
diff changeset
   268
	field editValue:1234.
claus
parents: 120
diff changeset
   269
	field acceptAction:[:value | Transcript showCr:value].
claus
parents: 120
diff changeset
   270
	field crAction:[field accept. top destroy].
claus
parents: 120
diff changeset
   271
	top open.
claus
parents: 120
diff changeset
   272
122
claus
parents: 121
diff changeset
   273
127
claus
parents: 125
diff changeset
   274
claus
parents: 125
diff changeset
   275
120
claus
parents: 118
diff changeset
   276
    use a model:
claus
parents: 118
diff changeset
   277
    (see changing model value in inspector when return is pressed in the field)
claus
parents: 118
diff changeset
   278
claus
parents: 118
diff changeset
   279
	|top field model|
claus
parents: 118
diff changeset
   280
claus
parents: 118
diff changeset
   281
	model := 'hello world' asValue.
claus
parents: 118
diff changeset
   282
claus
parents: 118
diff changeset
   283
	top := StandardSystemView new.
claus
parents: 118
diff changeset
   284
	top extent:200@100.
claus
parents: 118
diff changeset
   285
claus
parents: 118
diff changeset
   286
	field := EditField origin:0.0@ViewSpacing in:top.
121
claus
parents: 120
diff changeset
   287
	field width:1.0.
120
claus
parents: 118
diff changeset
   288
	field leftInset:ViewSpacing;
claus
parents: 118
diff changeset
   289
	      rightInset:ViewSpacing.
claus
parents: 118
diff changeset
   290
	field model:model.
128
claus
parents: 127
diff changeset
   291
	field acceptOnReturn:true.
120
claus
parents: 118
diff changeset
   292
claus
parents: 118
diff changeset
   293
	top open.
121
claus
parents: 120
diff changeset
   294
	model inspect.
claus
parents: 120
diff changeset
   295
122
claus
parents: 121
diff changeset
   296
127
claus
parents: 125
diff changeset
   297
    two views on the same model (each accepts on return):
121
claus
parents: 120
diff changeset
   298
claus
parents: 120
diff changeset
   299
	|top1 top2 field1 field2 model|
claus
parents: 120
diff changeset
   300
claus
parents: 120
diff changeset
   301
	model := 'hello world' asValue.
claus
parents: 120
diff changeset
   302
claus
parents: 120
diff changeset
   303
	top1 := StandardSystemView new.
claus
parents: 120
diff changeset
   304
	top1 extent:200@100.
claus
parents: 120
diff changeset
   305
	field1 := EditField origin:0.0@ViewSpacing in:top1.
claus
parents: 120
diff changeset
   306
	field1 width:1.0.
claus
parents: 120
diff changeset
   307
	field1 leftInset:ViewSpacing;
claus
parents: 120
diff changeset
   308
	      rightInset:ViewSpacing.
claus
parents: 120
diff changeset
   309
	field1 model:model.
128
claus
parents: 127
diff changeset
   310
	field1 acceptOnReturn:true.
121
claus
parents: 120
diff changeset
   311
	top1 open.
claus
parents: 120
diff changeset
   312
claus
parents: 120
diff changeset
   313
	top2 := StandardSystemView new.
claus
parents: 120
diff changeset
   314
	top2 extent:200@100.
claus
parents: 120
diff changeset
   315
	field2 := EditField origin:0.0@ViewSpacing in:top2.
claus
parents: 120
diff changeset
   316
	field2 width:1.0.
claus
parents: 120
diff changeset
   317
	field2 leftInset:ViewSpacing;
claus
parents: 120
diff changeset
   318
	      rightInset:ViewSpacing.
claus
parents: 120
diff changeset
   319
	field2 model:model.
128
claus
parents: 127
diff changeset
   320
	field2 acceptOnReturn:true.
121
claus
parents: 120
diff changeset
   321
	top2 open.
claus
parents: 120
diff changeset
   322
127
claus
parents: 125
diff changeset
   323
    two views on the same model (no accept on return):
claus
parents: 125
diff changeset
   324
claus
parents: 125
diff changeset
   325
	|top1 top2 field1 field2 model|
claus
parents: 125
diff changeset
   326
claus
parents: 125
diff changeset
   327
	model := 'hello world' asValue.
claus
parents: 125
diff changeset
   328
claus
parents: 125
diff changeset
   329
	top1 := StandardSystemView new.
claus
parents: 125
diff changeset
   330
	top1 extent:200@100.
claus
parents: 125
diff changeset
   331
	field1 := EditField origin:0.0@ViewSpacing in:top1.
claus
parents: 125
diff changeset
   332
	field1 width:1.0.
claus
parents: 125
diff changeset
   333
	field1 leftInset:ViewSpacing;
claus
parents: 125
diff changeset
   334
	      rightInset:ViewSpacing.
claus
parents: 125
diff changeset
   335
	field1 model:model; acceptOnReturn:false.
claus
parents: 125
diff changeset
   336
	top1 open.
claus
parents: 125
diff changeset
   337
claus
parents: 125
diff changeset
   338
	top2 := StandardSystemView new.
claus
parents: 125
diff changeset
   339
	top2 extent:200@100.
claus
parents: 125
diff changeset
   340
	field2 := EditField origin:0.0@ViewSpacing in:top2.
claus
parents: 125
diff changeset
   341
	field2 width:1.0.
claus
parents: 125
diff changeset
   342
	field2 leftInset:ViewSpacing;
claus
parents: 125
diff changeset
   343
	      rightInset:ViewSpacing.
claus
parents: 125
diff changeset
   344
	field2 model:model; acceptOnReturn:false.
claus
parents: 125
diff changeset
   345
	top2 open.
claus
parents: 125
diff changeset
   346
125
claus
parents: 122
diff changeset
   347
    with immediate accept:
claus
parents: 122
diff changeset
   348
claus
parents: 122
diff changeset
   349
	|top1 top2 field1 field2 model|
claus
parents: 122
diff changeset
   350
claus
parents: 122
diff changeset
   351
	model := 'hello world' asValue.
claus
parents: 122
diff changeset
   352
claus
parents: 122
diff changeset
   353
	top1 := StandardSystemView new.
claus
parents: 122
diff changeset
   354
	top1 extent:200@100.
claus
parents: 122
diff changeset
   355
	field1 := EditField origin:0.0@ViewSpacing in:top1.
claus
parents: 122
diff changeset
   356
	field1 width:1.0.
claus
parents: 122
diff changeset
   357
	field1 leftInset:ViewSpacing; rightInset:ViewSpacing.
claus
parents: 122
diff changeset
   358
	field1 model:model; immediateAccept:true.
claus
parents: 122
diff changeset
   359
	top1 open.
claus
parents: 122
diff changeset
   360
claus
parents: 122
diff changeset
   361
	top2 := StandardSystemView new.
claus
parents: 122
diff changeset
   362
	top2 extent:200@100.
claus
parents: 122
diff changeset
   363
	field2 := EditField origin:0.0@ViewSpacing in:top2.
claus
parents: 122
diff changeset
   364
	field2 width:1.0.
claus
parents: 122
diff changeset
   365
	field2 leftInset:ViewSpacing; rightInset:ViewSpacing.
claus
parents: 122
diff changeset
   366
	field2 model:model; immediateAccept:true.
claus
parents: 122
diff changeset
   367
	top2 open.
122
claus
parents: 121
diff changeset
   368
121
claus
parents: 120
diff changeset
   369
    just an example; a checkBox and an editField on the same model:
claus
parents: 120
diff changeset
   370
claus
parents: 120
diff changeset
   371
	|top1 top2 field1 box model|
claus
parents: 120
diff changeset
   372
claus
parents: 120
diff changeset
   373
	model := false asValue.
claus
parents: 120
diff changeset
   374
claus
parents: 120
diff changeset
   375
	top1 := StandardSystemView new.
claus
parents: 120
diff changeset
   376
	top1 extent:200@100.
claus
parents: 120
diff changeset
   377
	field1 := EditField origin:0.0@ViewSpacing in:top1.
claus
parents: 120
diff changeset
   378
	field1 width:1.0.
claus
parents: 120
diff changeset
   379
	field1 leftInset:ViewSpacing;
claus
parents: 120
diff changeset
   380
	      rightInset:ViewSpacing.
claus
parents: 120
diff changeset
   381
	field1 converter:(PrintConverter new initForYesNo).
claus
parents: 120
diff changeset
   382
	field1 model:model.
claus
parents: 120
diff changeset
   383
	top1 open.
claus
parents: 120
diff changeset
   384
claus
parents: 120
diff changeset
   385
	top2 := StandardSystemView new.
claus
parents: 120
diff changeset
   386
	top2 extent:200@100.
claus
parents: 120
diff changeset
   387
	box := CheckBox on:model.
claus
parents: 120
diff changeset
   388
	box label:'on/off'.
claus
parents: 120
diff changeset
   389
	top2 add:box.
claus
parents: 120
diff changeset
   390
	top2 open.
claus
parents: 120
diff changeset
   391
120
claus
parents: 118
diff changeset
   392
	model inspect.
125
claus
parents: 122
diff changeset
   393
claus
parents: 122
diff changeset
   394
claus
parents: 122
diff changeset
   395
    connecting fields:
claus
parents: 122
diff changeset
   396
    update field2 wehenever field1 is changed.
claus
parents: 122
diff changeset
   397
    (normally, the processing below (xChanged) is done in your application
claus
parents: 122
diff changeset
   398
     class, or in a complex model. For the demonstration below, we use
claus
parents: 122
diff changeset
   399
     a Plug to simulate the protocol.)
claus
parents: 122
diff changeset
   400
claus
parents: 122
diff changeset
   401
	|application top field1 field2 value1 value2|
claus
parents: 122
diff changeset
   402
claus
parents: 122
diff changeset
   403
	application := Plug new.
claus
parents: 122
diff changeset
   404
	application respondTo:#value1Changed
claus
parents: 122
diff changeset
   405
			 with:[value2 value:(value1 value isNil ifTrue:[nil]
claus
parents: 122
diff changeset
   406
								ifFalse:[value1 value squared])].
claus
parents: 122
diff changeset
   407
claus
parents: 122
diff changeset
   408
	value1 := 1 asValue.
claus
parents: 122
diff changeset
   409
	value2 := 1 asValue.
claus
parents: 122
diff changeset
   410
claus
parents: 122
diff changeset
   411
	top := Dialog new.
claus
parents: 122
diff changeset
   412
	top extent:200@200.
claus
parents: 122
diff changeset
   413
claus
parents: 122
diff changeset
   414
	(top addTextLabel:'some number:') layout:#left.
claus
parents: 122
diff changeset
   415
	top addVerticalSpace.
claus
parents: 122
diff changeset
   416
claus
parents: 122
diff changeset
   417
	(top addInputFieldOn:value1 tabable:false) 
claus
parents: 122
diff changeset
   418
	    converter:(PrintConverter new initForNumberOrNil);
claus
parents: 122
diff changeset
   419
	    immediateAccept:true.
claus
parents: 122
diff changeset
   420
	top addVerticalSpace.
claus
parents: 122
diff changeset
   421
claus
parents: 122
diff changeset
   422
	(top addTextLabel:'squared:') layout:#left.
claus
parents: 122
diff changeset
   423
	top addVerticalSpace.
claus
parents: 122
diff changeset
   424
	(top addInputFieldOn:value2 tabable:false) 
claus
parents: 122
diff changeset
   425
	    converter:(PrintConverter new initForNumberOrNil).
claus
parents: 122
diff changeset
   426
claus
parents: 122
diff changeset
   427
	value1 onChangeSend:#value1Changed to:application.
claus
parents: 122
diff changeset
   428
claus
parents: 122
diff changeset
   429
	top openModeless.
claus
parents: 122
diff changeset
   430
claus
parents: 122
diff changeset
   431
claus
parents: 122
diff changeset
   432
    two-way connect:
claus
parents: 122
diff changeset
   433
    each field updates the other (notice, that we have to turn off
claus
parents: 122
diff changeset
   434
    onChange: notification, to avoid an endless notification cycle)
claus
parents: 122
diff changeset
   435
claus
parents: 122
diff changeset
   436
	|application top field1 field2 value1 value2|
claus
parents: 122
diff changeset
   437
claus
parents: 122
diff changeset
   438
	application := Plug new.
claus
parents: 122
diff changeset
   439
	application respondTo:#value1Changed
claus
parents: 122
diff changeset
   440
			 with:[value2 retractInterrestFor:application.
claus
parents: 122
diff changeset
   441
			       value2 value:(value1 value isNil ifTrue:[nil]
claus
parents: 122
diff changeset
   442
								ifFalse:[value1 value squared]).
claus
parents: 122
diff changeset
   443
			       value2 onChangeSend:#value2Changed to:application.
claus
parents: 122
diff changeset
   444
			      ].
claus
parents: 122
diff changeset
   445
	application respondTo:#value2Changed
claus
parents: 122
diff changeset
   446
			 with:[value1 retractInterrestFor:application.
claus
parents: 122
diff changeset
   447
			       value1 value:(value2 value isNil ifTrue:[nil]
claus
parents: 122
diff changeset
   448
								ifFalse:[value2 value sqrt]).
claus
parents: 122
diff changeset
   449
			       value1 onChangeSend:#value1Changed to:application.
claus
parents: 122
diff changeset
   450
			      ].
claus
parents: 122
diff changeset
   451
claus
parents: 122
diff changeset
   452
	value1 := 1 asValue.
claus
parents: 122
diff changeset
   453
	value2 := 1 asValue.
claus
parents: 122
diff changeset
   454
claus
parents: 122
diff changeset
   455
	top := Dialog new.
claus
parents: 122
diff changeset
   456
	top extent:200@200.
claus
parents: 122
diff changeset
   457
claus
parents: 122
diff changeset
   458
	(top addTextLabel:'some number:') layout:#left.
claus
parents: 122
diff changeset
   459
	top addVerticalSpace.
claus
parents: 122
diff changeset
   460
claus
parents: 122
diff changeset
   461
	(top addInputFieldOn:value1 tabable:false) 
claus
parents: 122
diff changeset
   462
	    converter:(PrintConverter new initForNumberOrNil);
claus
parents: 122
diff changeset
   463
	    immediateAccept:true.
claus
parents: 122
diff changeset
   464
	top addVerticalSpace.
claus
parents: 122
diff changeset
   465
claus
parents: 122
diff changeset
   466
	(top addTextLabel:'squared:') layout:#left.
claus
parents: 122
diff changeset
   467
	top addVerticalSpace.
claus
parents: 122
diff changeset
   468
	(top addInputFieldOn:value2 tabable:false) 
127
claus
parents: 125
diff changeset
   469
	    converter:(PrintConverter new initForNumberOrNil);
claus
parents: 125
diff changeset
   470
	    immediateAccept:true.
125
claus
parents: 122
diff changeset
   471
claus
parents: 122
diff changeset
   472
	value1 onChangeSend:#value1Changed to:application.
claus
parents: 122
diff changeset
   473
	value2 onChangeSend:#value2Changed to:application.
claus
parents: 122
diff changeset
   474
claus
parents: 122
diff changeset
   475
	top openModeless.
120
claus
parents: 118
diff changeset
   476
"
19
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
   477
! !
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   478
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   479
!EditField class methodsFor:'defaults'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   480
125
claus
parents: 122
diff changeset
   481
defaultLeaveKeys
128
claus
parents: 127
diff changeset
   482
    "return the set of keys which are taken as leave-keys.
claus
parents: 127
diff changeset
   483
     If the field is in an enterFieldGroup, all leave keys will be
claus
parents: 127
diff changeset
   484
     forwarded to the group and possible step to the next/previous field.
claus
parents: 127
diff changeset
   485
     Also, if acceptOnLeave is true, leave keys will store the current
claus
parents: 127
diff changeset
   486
     value into their model (if any)"
claus
parents: 127
diff changeset
   487
125
claus
parents: 122
diff changeset
   488
    ^ #(Return CursorUp CursorDown Next Previous Accept)
claus
parents: 122
diff changeset
   489
!
claus
parents: 122
diff changeset
   490
59
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   491
updateStyleCache
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   492
    DefaultForegroundColor := StyleSheet colorAt:'editFieldForegroundColor' default:Black.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   493
    DefaultBackgroundColor := StyleSheet colorAt:'editFieldBackgroundColor' default:White.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   494
    DefaultSelectionForegroundColor := StyleSheet colorAt:'editFieldSelectionForegroundColor' default:DefaultBackgroundColor.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   495
    DefaultSelectionBackgroundColor := StyleSheet colorAt:'editFieldSelectionBackgroundColor' default:DefaultForegroundColor.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   496
    DefaultFont := StyleSheet fontAt:'editFieldFont' default:nil.
59
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   497
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   498
    "
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   499
     self updateStyleCache
59
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   500
    "
105
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
   501
!
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
   502
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
   503
defaultNumberOfLines
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
   504
    "the number of lines in the field"
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
   505
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
   506
    ^ 1
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   507
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   508
125
claus
parents: 122
diff changeset
   509
!EditField methodsFor:'private'!
claus
parents: 122
diff changeset
   510
claus
parents: 122
diff changeset
   511
textChanged
claus
parents: 122
diff changeset
   512
    "this is sent by mySelf (somewhere in a superclass) whenever
claus
parents: 122
diff changeset
   513
     my contents has changed. 
claus
parents: 122
diff changeset
   514
     A good place to add immediateAccept functionality and check for the
claus
parents: 122
diff changeset
   515
     lengthLimit."
claus
parents: 122
diff changeset
   516
155
claus
parents: 144
diff changeset
   517
    |string c|
125
claus
parents: 122
diff changeset
   518
claus
parents: 122
diff changeset
   519
    super textChanged.
claus
parents: 122
diff changeset
   520
    string := self contents.
claus
parents: 122
diff changeset
   521
    lengthLimit notNil ifTrue:[
claus
parents: 122
diff changeset
   522
	string size > lengthLimit ifTrue:[
155
claus
parents: 144
diff changeset
   523
	    c := cursorCol.
claus
parents: 144
diff changeset
   524
	    self contents:(string copyTo:lengthLimit).
125
claus
parents: 122
diff changeset
   525
	    self flash.
155
claus
parents: 144
diff changeset
   526
	    self cursorCol:c.
125
claus
parents: 122
diff changeset
   527
	]
claus
parents: 122
diff changeset
   528
    ].
claus
parents: 122
diff changeset
   529
    immediateAccept ifTrue:[
claus
parents: 122
diff changeset
   530
	self accept
claus
parents: 122
diff changeset
   531
    ]
claus
parents: 122
diff changeset
   532
!
claus
parents: 122
diff changeset
   533
claus
parents: 122
diff changeset
   534
getListFromModel
claus
parents: 122
diff changeset
   535
    "redefined to aquire the text via the aspectMsg - not the listMsg,
claus
parents: 122
diff changeset
   536
     and to ignore updates resulting from my own change."
claus
parents: 122
diff changeset
   537
claus
parents: 122
diff changeset
   538
    "
claus
parents: 122
diff changeset
   539
     ignore updates from my own change
claus
parents: 122
diff changeset
   540
    "
claus
parents: 122
diff changeset
   541
    lockUpdates ifTrue:[
claus
parents: 122
diff changeset
   542
	lockUpdates := false.
claus
parents: 122
diff changeset
   543
	^ self
claus
parents: 122
diff changeset
   544
    ].
claus
parents: 122
diff changeset
   545
claus
parents: 122
diff changeset
   546
    (model notNil and:[aspectMsg notNil]) ifTrue:[
claus
parents: 122
diff changeset
   547
	self editValue:(model perform:aspectMsg).
claus
parents: 122
diff changeset
   548
    ]
claus
parents: 122
diff changeset
   549
!
claus
parents: 122
diff changeset
   550
127
claus
parents: 125
diff changeset
   551
argForChangeMessage
claus
parents: 125
diff changeset
   552
    "redefined to send use converted value (if I have one)"
claus
parents: 125
diff changeset
   553
claus
parents: 125
diff changeset
   554
    ^ self editValue
claus
parents: 125
diff changeset
   555
!
claus
parents: 125
diff changeset
   556
125
claus
parents: 122
diff changeset
   557
startAutoScrollUp:y
claus
parents: 122
diff changeset
   558
    "no vertical scrolling in editfields"
claus
parents: 122
diff changeset
   559
claus
parents: 122
diff changeset
   560
    ^ self
claus
parents: 122
diff changeset
   561
!
claus
parents: 122
diff changeset
   562
155
claus
parents: 144
diff changeset
   563
visibleAt:visLineNr
claus
parents: 144
diff changeset
   564
    "return the string at lineNr for display.
claus
parents: 144
diff changeset
   565
     If there is a password character, return a string consisting of those only."
claus
parents: 144
diff changeset
   566
claus
parents: 144
diff changeset
   567
    |s|
claus
parents: 144
diff changeset
   568
claus
parents: 144
diff changeset
   569
    s := super visibleAt:visLineNr.
claus
parents: 144
diff changeset
   570
    passwordCharacter notNil ifTrue:[
claus
parents: 144
diff changeset
   571
	^ String new:(s size) withAll:passwordCharacter
claus
parents: 144
diff changeset
   572
    ].
claus
parents: 144
diff changeset
   573
    ^ s
claus
parents: 144
diff changeset
   574
claus
parents: 144
diff changeset
   575
    "Modified: 6.9.1995 / 12:25:06 / claus"
claus
parents: 144
diff changeset
   576
!
claus
parents: 144
diff changeset
   577
125
claus
parents: 122
diff changeset
   578
startAutoScrollDown:y
claus
parents: 122
diff changeset
   579
    "no vertical scrolling in editfields"
claus
parents: 122
diff changeset
   580
claus
parents: 122
diff changeset
   581
    ^ self
claus
parents: 122
diff changeset
   582
! !
claus
parents: 122
diff changeset
   583
155
claus
parents: 144
diff changeset
   584
!EditField methodsFor:'scrolling'!
claus
parents: 144
diff changeset
   585
claus
parents: 144
diff changeset
   586
makeColVisible:col inLine:line
claus
parents: 144
diff changeset
   587
    "dont scroll for the cursor, if its behond the text and a lengthLimit
claus
parents: 144
diff changeset
   588
     is present."
claus
parents: 144
diff changeset
   589
claus
parents: 144
diff changeset
   590
    lengthLimit notNil ifTrue:[
claus
parents: 144
diff changeset
   591
	(col == cursorCol and:[col > lengthLimit]) ifTrue:[
claus
parents: 144
diff changeset
   592
	    ^ super makeColVisible:lengthLimit inLine:line
claus
parents: 144
diff changeset
   593
	]
claus
parents: 144
diff changeset
   594
    ].
claus
parents: 144
diff changeset
   595
    ^ super makeColVisible:col inLine:line
claus
parents: 144
diff changeset
   596
claus
parents: 144
diff changeset
   597
    "Modified: 6.9.1995 / 13:57:53 / claus"
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   598
! !
125
claus
parents: 122
diff changeset
   599
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   600
!EditField methodsFor:'accessing-contents'!
125
claus
parents: 122
diff changeset
   601
claus
parents: 122
diff changeset
   602
list:someText
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   603
    "low level access to the underlying contents' list.
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   604
     Redefined to force text to 1 line, and notify dependents
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   605
     of any changed extent-wishes (for automatic box resizing)."
125
claus
parents: 122
diff changeset
   606
claus
parents: 122
diff changeset
   607
    |l oldWidth|
claus
parents: 122
diff changeset
   608
claus
parents: 122
diff changeset
   609
    l := someText.
claus
parents: 122
diff changeset
   610
    l size > 1 ifTrue:[
claus
parents: 122
diff changeset
   611
	l := OrderedCollection with:(l at:1)
claus
parents: 122
diff changeset
   612
    ].
claus
parents: 122
diff changeset
   613
    oldWidth := self widthOfContents.
claus
parents: 122
diff changeset
   614
    super list:l.
claus
parents: 122
diff changeset
   615
    self widthOfContents ~~ oldWidth ifTrue:[
130
claus
parents: 128
diff changeset
   616
	self changed:#preferredExtent
125
claus
parents: 122
diff changeset
   617
    ]
claus
parents: 122
diff changeset
   618
!
claus
parents: 122
diff changeset
   619
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   620
contents
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   621
    "return contents as a string
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   622
     - redefined since EditFields hold only one line of text.
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   623
    In your application, please use #editValue; 
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   624
    it uses a converter (if any) and is compatible to ST-80."
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   625
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   626
    list isNil ifTrue:[^ ''].
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   627
    (list size == 0) ifTrue:[^ ''].
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   628
    ^ list at:1
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   629
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   630
125
claus
parents: 122
diff changeset
   631
contents:someText
claus
parents: 122
diff changeset
   632
    "set the contents from a string
claus
parents: 122
diff changeset
   633
     - redefined to place the cursor to the end.
claus
parents: 122
diff changeset
   634
    In your application, please use #editValue:; 
claus
parents: 122
diff changeset
   635
    it uses a converter (if any) and is compatible to ST-80."
claus
parents: 122
diff changeset
   636
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   637
    |newCol|
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   638
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   639
    newCol := cursorCol.
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   640
125
claus
parents: 122
diff changeset
   641
    super contents:someText.
claus
parents: 122
diff changeset
   642
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   643
    cursorMovementWhenUpdating == #endOfLine ifTrue:[
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   644
	 newCol := (someText size + 1).
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   645
    ] ifFalse:[
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   646
	cursorMovementWhenUpdating == #beginOfLine ifTrue:[
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   647
	    newCol := 1
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   648
	] ifFalse:[
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   649
	    "/ default: stay where it was
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   650
	]
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   651
    ].
125
claus
parents: 122
diff changeset
   652
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   653
    self cursorCol:newCol.
125
claus
parents: 122
diff changeset
   654
!
claus
parents: 122
diff changeset
   655
claus
parents: 122
diff changeset
   656
editValue
claus
parents: 122
diff changeset
   657
    "if the field edits a string, this is a name alias for #contents.
claus
parents: 122
diff changeset
   658
     Otherwise, if there is a converter, return the edited string
claus
parents: 122
diff changeset
   659
     converted to an appropriate object."
claus
parents: 122
diff changeset
   660
claus
parents: 122
diff changeset
   661
    |string|
claus
parents: 122
diff changeset
   662
claus
parents: 122
diff changeset
   663
    string := self contents.
claus
parents: 122
diff changeset
   664
    converter isNil ifTrue:[^ string].
claus
parents: 122
diff changeset
   665
    string isNil ifTrue:[string := ''].
claus
parents: 122
diff changeset
   666
    ^ converter readValueFrom:string 
claus
parents: 122
diff changeset
   667
!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   668
125
claus
parents: 122
diff changeset
   669
editValue:aStringOrObject
claus
parents: 122
diff changeset
   670
    "set the contents. If there is a converter, use it to convert
claus
parents: 122
diff changeset
   671
     the object into a printed representation.
claus
parents: 122
diff changeset
   672
     Otherwise, the argument is supposed to be a string like object,
claus
parents: 122
diff changeset
   673
     and used directly (i.e. this is equivalent to sending #contents:)."
claus
parents: 122
diff changeset
   674
claus
parents: 122
diff changeset
   675
    self editValue:aStringOrObject selected:false
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   676
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   677
125
claus
parents: 122
diff changeset
   678
editValue:aStringOrObject selected:aBoolean
claus
parents: 122
diff changeset
   679
    "set the contents. If there is a converter, use it to convert
claus
parents: 122
diff changeset
   680
     the object into a printed representation.
claus
parents: 122
diff changeset
   681
     Otherwise, the argument is supposed to be a string like object,
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   682
     and used directly (i.e. this is equivalent to sending #initialText:selected:)."
125
claus
parents: 122
diff changeset
   683
claus
parents: 122
diff changeset
   684
    |string|
claus
parents: 122
diff changeset
   685
claus
parents: 122
diff changeset
   686
    converter notNil ifTrue:[
claus
parents: 122
diff changeset
   687
	string := converter printStringFor:aStringOrObject
claus
parents: 122
diff changeset
   688
    ] ifFalse:[
claus
parents: 122
diff changeset
   689
	string :=  aStringOrObject.
claus
parents: 122
diff changeset
   690
    ].
claus
parents: 122
diff changeset
   691
    self contents:string.
claus
parents: 122
diff changeset
   692
    aBoolean ifTrue:[
claus
parents: 122
diff changeset
   693
	self selectFromLine:1 col:1 toLine:1 col:string size
claus
parents: 122
diff changeset
   694
    ]
claus
parents: 122
diff changeset
   695
!
claus
parents: 122
diff changeset
   696
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   697
initialText:aString selected:aBoolean
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   698
    "set the initialText and select it if aBoolean is true"
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   699
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   700
    |len s|
125
claus
parents: 122
diff changeset
   701
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   702
    leftOffset := 0.
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   703
    (s := aString) notNil ifTrue:[
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   704
	s := s asString
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   705
    ].
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   706
    self contents:s.
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   707
    aBoolean ifTrue:[
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   708
	(len := s size) ~~ 0 ifTrue:[
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   709
	    self selectFromLine:1 col:1 toLine:1 col:len
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   710
	]
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   711
    ]
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   712
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   713
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   714
initialText:aString
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   715
    "set the initialText and select it"
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   716
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   717
    self initialText:aString selected:true
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   718
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   719
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   720
stringValue
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   721
    "alias for #contents - for compatibility with ST-80's InputField"
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   722
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   723
    ^ self contents
125
claus
parents: 122
diff changeset
   724
!
claus
parents: 122
diff changeset
   725
claus
parents: 122
diff changeset
   726
converter:aConverter
claus
parents: 122
diff changeset
   727
    "set the converter. If non-nil,
claus
parents: 122
diff changeset
   728
     the converter is applied to the text to convert from the string
claus
parents: 122
diff changeset
   729
     representation to the actual object value and vice versa.
claus
parents: 122
diff changeset
   730
     The default converter is nil, meaning no-conversion
claus
parents: 122
diff changeset
   731
     (i.e. the edited object is the string itself."
claus
parents: 122
diff changeset
   732
claus
parents: 122
diff changeset
   733
    converter := aConverter
claus
parents: 122
diff changeset
   734
!
claus
parents: 122
diff changeset
   735
claus
parents: 122
diff changeset
   736
converter
claus
parents: 122
diff changeset
   737
    "return the converter (if any)."
claus
parents: 122
diff changeset
   738
claus
parents: 122
diff changeset
   739
    ^ converter
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   740
! !
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   741
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   742
!EditField methodsFor:'accessing-look'!
125
claus
parents: 122
diff changeset
   743
155
claus
parents: 144
diff changeset
   744
passwordCharacter:aCharacter
claus
parents: 144
diff changeset
   745
    passwordCharacter := aCharacter
claus
parents: 144
diff changeset
   746
claus
parents: 144
diff changeset
   747
    "Modified: 6.9.1995 / 12:25:33 / claus"
claus
parents: 144
diff changeset
   748
!
claus
parents: 144
diff changeset
   749
claus
parents: 144
diff changeset
   750
passwordCharacter
claus
parents: 144
diff changeset
   751
    ^ passwordCharacter
claus
parents: 144
diff changeset
   752
claus
parents: 144
diff changeset
   753
    "Modified: 6.9.1995 / 12:25:39 / claus"
claus
parents: 144
diff changeset
   754
!
claus
parents: 144
diff changeset
   755
claus
parents: 144
diff changeset
   756
maxChars
claus
parents: 144
diff changeset
   757
    "return the maximum number of characters that are allowed in
claus
parents: 144
diff changeset
   758
     the field. 
claus
parents: 144
diff changeset
   759
     A limit of nil means: unlimited. This is the default."
claus
parents: 144
diff changeset
   760
claus
parents: 144
diff changeset
   761
    ^ lengthLimit
claus
parents: 144
diff changeset
   762
claus
parents: 144
diff changeset
   763
    "Modified: 6.9.1995 / 13:43:33 / claus"
claus
parents: 144
diff changeset
   764
!
claus
parents: 144
diff changeset
   765
125
claus
parents: 122
diff changeset
   766
maxChars:aNumberOrNil
claus
parents: 122
diff changeset
   767
    "set the maximum number of characters that are allowed in
claus
parents: 122
diff changeset
   768
     the field. Additional input will be ignored by the field.
claus
parents: 122
diff changeset
   769
     A limit of nil means: unlimited. This is the default.
claus
parents: 122
diff changeset
   770
     This method has been renamed from #lengthLimit: for ST-80
claus
parents: 122
diff changeset
   771
     compatibility."
claus
parents: 122
diff changeset
   772
claus
parents: 122
diff changeset
   773
    lengthLimit := aNumberOrNil
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   774
! !
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   775
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   776
!EditField methodsFor:'accessing-behavior'!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   777
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   778
entryCompletionBlock:aOneArgBlock
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   779
    "define an action to be evaluated when Tab (NameCompletion) is pressed.
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   780
     The block gets the current contents as argument."
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   781
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   782
    entryCompletionBlock := aOneArgBlock
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   783
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   784
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   785
leaveAction:aBlock
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   786
    "define an action to be evaluated when field is left by return key"
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   787
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   788
    leaveAction := aBlock
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   789
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   790
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   791
enable
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   792
    "enable the field; show cursor and allow input"
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   793
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   794
    enabled ifFalse:[
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   795
"/        enableAction notNil ifTrue:[
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   796
"/            enableAction value
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   797
"/        ].
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   798
	enabled := true.
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   799
	super showCursor
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   800
    ]
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   801
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   802
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   803
immediateAccept:aBoolean
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   804
    "set/clear the immediateAccept flag. The default is false."
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   805
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   806
     immediateAccept := aBoolean
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   807
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   808
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   809
leaveKeys:aCollectionOfKeySymbols 
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   810
    "define the set of keys which are interpreted as leaveKeys.
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   811
     I.e. those that make the field inactive and accept (if acceptOnLeave is true).
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   812
     The default is a set of #CursorUp, #CursorDown, #Next, #Prior and #Return."
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   813
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   814
    leaveKeys := aCollectionOfKeySymbols
125
claus
parents: 122
diff changeset
   815
!
claus
parents: 122
diff changeset
   816
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   817
crAction:aBlock
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   818
    "define an action to be evaluated when the return key is pressed."
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   819
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   820
    crAction := aBlock
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   821
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   822
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   823
tabAction:aBlock
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   824
    "define an action to be evaluated when the tabulator key is pressed."
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   825
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   826
    tabAction := aBlock
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   827
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   828
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   829
acceptOnReturn:aBoolean
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   830
    "set/clear the acceptOnReturn flag. The default is false."
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   831
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   832
     acceptOnReturn := aBoolean
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   833
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   834
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   835
disable
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   836
    "disable the field; hide cursor and ignore input"
125
claus
parents: 122
diff changeset
   837
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   838
    enabled ifTrue:[
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   839
	enabled := false.
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   840
	self hideCursor
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   841
    ]
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   842
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   843
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   844
acceptOnLeave:aBoolean
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   845
    "set/clear the acceptOnLeave flag. The default is false."
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   846
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   847
     acceptOnLeave := aBoolean
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   848
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   849
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   850
enableAction:aBlock
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   851
    "define an action to be evaluated when enabled by clicking upon"
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   852
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   853
    enableAction := aBlock
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   854
!
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   855
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   856
cursorMovementWhenUpdating:aSymbol
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   857
    "define what should be done with the cursor, when I update
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   858
     my contents from the model. Allowed argumetns are:
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   859
	#keep / nil     -> stay where it was
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   860
	#endOfLine      -> position cursor after the string
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   861
	#beginOfLine    -> position cursor to the beginning
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   862
     The default is #endOfLine"
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   863
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   864
    cursorMovementWhenUpdating := aSymbol
125
claus
parents: 122
diff changeset
   865
! !
claus
parents: 122
diff changeset
   866
claus
parents: 122
diff changeset
   867
!EditField methodsFor:'initialization'!
claus
parents: 122
diff changeset
   868
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   869
initStyle
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   870
    super initStyle.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   871
59
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   872
    DefaultBackgroundColor notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   873
	bgColor := DefaultBackgroundColor on:device.
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   874
	self viewBackground:bgColor.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   875
    ].
59
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   876
    fgColor := DefaultForegroundColor.
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   877
    selectionFgColor := DefaultSelectionForegroundColor.
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   878
    selectionBgColor := DefaultSelectionBackgroundColor.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   879
59
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   880
    DefaultFont notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
   881
	font := DefaultFont on:device
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   882
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   883
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   884
125
claus
parents: 122
diff changeset
   885
initialize
claus
parents: 122
diff changeset
   886
    super initialize.
claus
parents: 122
diff changeset
   887
    self height:(font height + font descent + (topMargin * 2)).
claus
parents: 122
diff changeset
   888
    enabled := true.
claus
parents: 122
diff changeset
   889
    fixedSize := true.
claus
parents: 122
diff changeset
   890
    nFullLinesShown := 1.
claus
parents: 122
diff changeset
   891
    nLinesShown := 1.
130
claus
parents: 128
diff changeset
   892
    immediateAccept := false.
claus
parents: 128
diff changeset
   893
"/    acceptOnLeave := false.
claus
parents: 128
diff changeset
   894
"/    acceptOnReturn := false.
claus
parents: 128
diff changeset
   895
    acceptOnLeave := acceptOnReturn := true.
125
claus
parents: 122
diff changeset
   896
    cursorShown := true.
claus
parents: 122
diff changeset
   897
    leaveKeys := self class defaultLeaveKeys.
187
1a429506fad6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   898
    cursorMovementWhenUpdating := #endOfLine
125
claus
parents: 122
diff changeset
   899
!
claus
parents: 122
diff changeset
   900
97
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   901
editMenu
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   902
    |labels selectors m|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   903
97
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   904
    labels := #(
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   905
		'copy'
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   906
		'cut'
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   907
		'paste'
19
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
   908
"
97
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   909
		'replace'
19
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
   910
"
97
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   911
		'-'
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   912
		'accept'
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   913
	       ).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   914
97
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   915
     selectors := #(
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   916
		 copySelection
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   917
		 cut
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   918
		 paste
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   919
"
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   920
		 replace
19
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
   921
"
97
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   922
		 nil
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   923
		 accept
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   924
		).
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   925
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   926
    m := PopUpMenu 
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   927
	  labels:(resources array:labels)
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   928
	  selectors:selectors.
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   929
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   930
    self hasSelection ifFalse:[
131
claus
parents: 130
diff changeset
   931
	m disableAll:#(copySelection cut)
97
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   932
    ].
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   933
cbf495fe3b64 *** empty log message ***
claus
parents: 77
diff changeset
   934
    ^ m
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   935
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   936
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   937
!EditField methodsFor:'realization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   938
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   939
realize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   940
    "scroll back to beginning when realized"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   941
    leftOffset := 0.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   942
    super realize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   943
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   944
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   945
!EditField methodsFor:'queries'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   946
155
claus
parents: 144
diff changeset
   947
specClass
claus
parents: 144
diff changeset
   948
    self class == EditField ifTrue:[^ InputFieldSpec].
claus
parents: 144
diff changeset
   949
    ^ nil
claus
parents: 144
diff changeset
   950
claus
parents: 144
diff changeset
   951
    "Modified: 5.9.1995 / 17:28:27 / claus"
claus
parents: 144
diff changeset
   952
!
claus
parents: 144
diff changeset
   953
130
claus
parents: 128
diff changeset
   954
preferredExtent
claus
parents: 128
diff changeset
   955
    "return the preferred extent of this view.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   956
     That is the width of the string plus some extra, 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   957
     but not wider than half of the screen"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   958
155
claus
parents: 144
diff changeset
   959
    |string w f|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   960
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   961
    string := self contents.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   962
    (string isNil or:[string isBlank]) ifTrue:[
130
claus
parents: 128
diff changeset
   963
	string := '          ' "/ just any string is ok ^ super preferredExtent
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   964
    ].
155
claus
parents: 144
diff changeset
   965
    f := font on:device.
claus
parents: 144
diff changeset
   966
    w := ((f widthOf:string) * 1.5) rounded.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   967
    w := w min:(device width // 2).
155
claus
parents: 144
diff changeset
   968
    ^ w @ (f height * 1.5) rounded
claus
parents: 144
diff changeset
   969
claus
parents: 144
diff changeset
   970
    "Modified: 6.9.1995 / 19:24:06 / claus"
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   971
! !
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   972
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   973
!EditField methodsFor:'cursor drawing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   974
155
claus
parents: 144
diff changeset
   975
drawFromVisibleLine:startVisLineNr to:endVisLineNr with:fg and:bg
claus
parents: 144
diff changeset
   976
    startVisLineNr to:endVisLineNr do:[:visLine |
claus
parents: 144
diff changeset
   977
	self drawVisibleLine:visLine with:fg and:bg
claus
parents: 144
diff changeset
   978
    ]
claus
parents: 144
diff changeset
   979
claus
parents: 144
diff changeset
   980
    "Modified: 6.9.1995 / 12:24:29 / claus"
claus
parents: 144
diff changeset
   981
!
claus
parents: 144
diff changeset
   982
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   983
showCursor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   984
    "make cursor visible if currently invisible - but only if this
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   985
     EditField is enabled"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   986
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   987
    enabled ifTrue:[super showCursor]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   988
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   989
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   990
!EditField methodsFor:'cursor movement'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   991
125
claus
parents: 122
diff changeset
   992
cursorCol:col
claus
parents: 122
diff changeset
   993
    "redefined to lock the cursor at the end, if I have a lngthLimit"
claus
parents: 122
diff changeset
   994
claus
parents: 122
diff changeset
   995
    |c sz|
claus
parents: 122
diff changeset
   996
claus
parents: 122
diff changeset
   997
    c := col.
claus
parents: 122
diff changeset
   998
    lengthLimit notNil ifTrue:[
claus
parents: 122
diff changeset
   999
	sz := lengthLimit.
claus
parents: 122
diff changeset
  1000
	c > sz ifTrue:[
claus
parents: 122
diff changeset
  1001
	    c := sz+1.
claus
parents: 122
diff changeset
  1002
	]
claus
parents: 122
diff changeset
  1003
    ].
claus
parents: 122
diff changeset
  1004
    super cursorCol:c
claus
parents: 122
diff changeset
  1005
!
claus
parents: 122
diff changeset
  1006
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1007
cursorLine:line col:col
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
  1008
    "catch cursor movement"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
  1009
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
  1010
    super cursorLine:1 col:col
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1011
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1012
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1013
cursorDown
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1014
    "catch cursor movement"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1015
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1016
    (cursorVisibleLine == nLinesShown) ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
  1017
	super cursorDown
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1018
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1019
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1020
70
14443a9ea4ec *** empty log message ***
claus
parents: 62
diff changeset
  1021
!EditField methodsFor:'event handling'!
19
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
  1022
125
claus
parents: 122
diff changeset
  1023
keyPress:key x:x y:y
claus
parents: 122
diff changeset
  1024
    "if keyHandler is defined, pass input; otherwise check for leave
claus
parents: 122
diff changeset
  1025
     keys"
claus
parents: 122
diff changeset
  1026
132
claus
parents: 131
diff changeset
  1027
    <resource: #keyboard (#DeleteLine #EndOfText)>
claus
parents: 131
diff changeset
  1028
163
claus
parents: 155
diff changeset
  1029
    |leave xCol newOffset oldWidth newWidth s|
125
claus
parents: 122
diff changeset
  1030
claus
parents: 122
diff changeset
  1031
    enabled ifFalse:[
127
claus
parents: 125
diff changeset
  1032
	^ self
125
claus
parents: 122
diff changeset
  1033
    ].
claus
parents: 122
diff changeset
  1034
claus
parents: 122
diff changeset
  1035
    (key == #DeleteLine) ifTrue:[
127
claus
parents: 125
diff changeset
  1036
	Smalltalk at:#CopyBuffer put:(self contents).
claus
parents: 125
diff changeset
  1037
	self contents:''. ^ self
125
claus
parents: 122
diff changeset
  1038
    ].
19
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
  1039
125
claus
parents: 122
diff changeset
  1040
    (key == #Tab) ifTrue:[
127
claus
parents: 125
diff changeset
  1041
	tabAction notNil ifTrue:[tabAction value. ^ self].
144
claus
parents: 132
diff changeset
  1042
	entryCompletionBlock notNil ifTrue:[
163
claus
parents: 155
diff changeset
  1043
	    s := self contents.
claus
parents: 155
diff changeset
  1044
	    s isNil ifTrue:[
claus
parents: 155
diff changeset
  1045
		s := ''
claus
parents: 155
diff changeset
  1046
	    ] ifFalse:[
claus
parents: 155
diff changeset
  1047
		s := s asString
claus
parents: 155
diff changeset
  1048
	    ].
claus
parents: 155
diff changeset
  1049
	    entryCompletionBlock value:s. ^ self
144
claus
parents: 132
diff changeset
  1050
	]
125
claus
parents: 122
diff changeset
  1051
    ].
claus
parents: 122
diff changeset
  1052
    (key == #Return) ifTrue:[
127
claus
parents: 125
diff changeset
  1053
	crAction notNil ifTrue:[crAction value. ^ self].
125
claus
parents: 122
diff changeset
  1054
    ].
claus
parents: 122
diff changeset
  1055
    leave := leaveKeys includes:key.
claus
parents: 122
diff changeset
  1056
    leave ifTrue:[
127
claus
parents: 125
diff changeset
  1057
	leaveAction notNil ifTrue:[
claus
parents: 125
diff changeset
  1058
	    leaveAction value:key
claus
parents: 125
diff changeset
  1059
	].
121
claus
parents: 120
diff changeset
  1060
127
claus
parents: 125
diff changeset
  1061
	((key == #Return and:[acceptOnReturn])
claus
parents: 125
diff changeset
  1062
	or:[key ~~ #Return and:[acceptOnLeave]]) ifTrue:[
claus
parents: 125
diff changeset
  1063
	    self accept.
claus
parents: 125
diff changeset
  1064
	].
125
claus
parents: 122
diff changeset
  1065
127
claus
parents: 125
diff changeset
  1066
	x >= 0 ifTrue:[
claus
parents: 125
diff changeset
  1067
	    "
claus
parents: 125
diff changeset
  1068
	     let superview know about the leave ...
claus
parents: 125
diff changeset
  1069
	     This is a temporary kludge for the tableWidget -
claus
parents: 125
diff changeset
  1070
	     it is no clean coding style. Should make the tableWidget
claus
parents: 125
diff changeset
  1071
	     a proper model and handle it via the changed mechanism ....
claus
parents: 125
diff changeset
  1072
	    "
claus
parents: 125
diff changeset
  1073
	    (superView notNil and:[superView canHandle:key from:self]) ifTrue:[
claus
parents: 125
diff changeset
  1074
		superView keyPress:key x:x y:y.
claus
parents: 125
diff changeset
  1075
	    ].
claus
parents: 125
diff changeset
  1076
	].
claus
parents: 125
diff changeset
  1077
	^ self
19
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
  1078
    ].
121
claus
parents: 120
diff changeset
  1079
125
claus
parents: 122
diff changeset
  1080
    "
claus
parents: 122
diff changeset
  1081
     ignore some keys (if not a leaveKey) ...
claus
parents: 122
diff changeset
  1082
    "
claus
parents: 122
diff changeset
  1083
    (key == #Find) ifTrue:[^self].
claus
parents: 122
diff changeset
  1084
    (key == #FindNext) ifTrue:[^self].
claus
parents: 122
diff changeset
  1085
    (key == #FindPrev) ifTrue:[^self].
claus
parents: 122
diff changeset
  1086
    (key == #GotoLine) ifTrue:[^self].
claus
parents: 122
diff changeset
  1087
claus
parents: 122
diff changeset
  1088
    "
claus
parents: 122
diff changeset
  1089
     a normal key - let superclass's method insert it
claus
parents: 122
diff changeset
  1090
    "
claus
parents: 122
diff changeset
  1091
    oldWidth := self widthOfContents.
claus
parents: 122
diff changeset
  1092
    super keyPress:key x:x y:y.
claus
parents: 122
diff changeset
  1093
claus
parents: 122
diff changeset
  1094
    "
claus
parents: 122
diff changeset
  1095
     for end-of-text, also move to end-of-line
claus
parents: 122
diff changeset
  1096
    "
claus
parents: 122
diff changeset
  1097
    key == #EndOfText ifTrue:[
127
claus
parents: 125
diff changeset
  1098
	super keyPress:#EndOfLine x:x y:y.
125
claus
parents: 122
diff changeset
  1099
    ].
claus
parents: 122
diff changeset
  1100
    newWidth := self widthOfContents.
claus
parents: 122
diff changeset
  1101
claus
parents: 122
diff changeset
  1102
    "
claus
parents: 122
diff changeset
  1103
     should (& can) we resize ?
claus
parents: 122
diff changeset
  1104
    "
claus
parents: 122
diff changeset
  1105
    xCol := (self xOfCol:cursorCol inVisibleLine:cursorLine) - leftOffset.
claus
parents: 122
diff changeset
  1106
    (xCol > (width * (5/6))) ifTrue:[
130
claus
parents: 128
diff changeset
  1107
	self changed:#preferredExtent
125
claus
parents: 122
diff changeset
  1108
    ] ifFalse:[
127
claus
parents: 125
diff changeset
  1109
	newWidth < (width * (1/6)) ifTrue:[
130
claus
parents: 128
diff changeset
  1110
	    self changed:#preferredExtent
127
claus
parents: 125
diff changeset
  1111
	]
125
claus
parents: 122
diff changeset
  1112
    ].
claus
parents: 122
diff changeset
  1113
claus
parents: 122
diff changeset
  1114
    "
155
claus
parents: 144
diff changeset
  1115
     did someone react (i.e. has my extent changed) ?
125
claus
parents: 122
diff changeset
  1116
     (if not, we scroll horizontally)
claus
parents: 122
diff changeset
  1117
    "
claus
parents: 122
diff changeset
  1118
    xCol := (self xOfCol:cursorCol inVisibleLine:cursorLine) - leftOffset.
claus
parents: 122
diff changeset
  1119
    (xCol > (width * (5/6))) ifTrue:[
127
claus
parents: 125
diff changeset
  1120
	newOffset := leftOffset + (width // 2).
125
claus
parents: 122
diff changeset
  1121
    ] ifFalse:[
127
claus
parents: 125
diff changeset
  1122
	(xCol < (width * (1/6))) ifTrue:[
claus
parents: 125
diff changeset
  1123
	    newOffset := 0 max: leftOffset - (width // 2).
claus
parents: 125
diff changeset
  1124
	] ifFalse:[
claus
parents: 125
diff changeset
  1125
	    newOffset := leftOffset
claus
parents: 125
diff changeset
  1126
	]
125
claus
parents: 122
diff changeset
  1127
    ].
claus
parents: 122
diff changeset
  1128
    newOffset ~~ leftOffset ifTrue:[
155
claus
parents: 144
diff changeset
  1129
	self scrollHorizontalTo:newOffset.
claus
parents: 144
diff changeset
  1130
"/        leftOffset := newOffset.
claus
parents: 144
diff changeset
  1131
"/        self clear.
claus
parents: 144
diff changeset
  1132
"/        self redraw
125
claus
parents: 122
diff changeset
  1133
    ]
19
a696fb528758 *** empty log message ***
claus
parents: 7
diff changeset
  1134
!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1135
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1136
buttonPress:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1137
    "enable myself on mouse click"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1138
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1139
    enabled ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
  1140
	enabled := true.
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
  1141
	super buttonPress:button x:x y:y.
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
  1142
	enableAction notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
  1143
	    enableAction value
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
  1144
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1145
    ] ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 47
diff changeset
  1146
	super buttonPress:button x:x y:y
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1147
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1148
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1149
125
claus
parents: 122
diff changeset
  1150
focusIn
claus
parents: 122
diff changeset
  1151
    "got the explicit focus"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1152
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1153
    enabled ifFalse:[
125
claus
parents: 122
diff changeset
  1154
	enabled := true.
claus
parents: 122
diff changeset
  1155
	super focusIn.
claus
parents: 122
diff changeset
  1156
	enableAction notNil ifTrue:[
claus
parents: 122
diff changeset
  1157
	    enableAction value
claus
parents: 122
diff changeset
  1158
	]
claus
parents: 122
diff changeset
  1159
    ] ifTrue:[
claus
parents: 122
diff changeset
  1160
	super focusIn
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1161
    ].
105
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
  1162
!
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
  1163
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
  1164
canHandle:aKey
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
  1165
    "return true, if the receiver would like to handle aKey
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
  1166
     (usually from another view, when the receiver is part of
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
  1167
      a more complex dialog box).
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
  1168
     We do return true here, since the editfield will handle
125
claus
parents: 122
diff changeset
  1169
     all keys.
claus
parents: 122
diff changeset
  1170
     OBSOLETE: dont use this anymore - its a leftover for the tableWidget"
105
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
  1171
3d064ba4a0cc *** empty log message ***
claus
parents: 97
diff changeset
  1172
    ^ true
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
  1173
! !
125
claus
parents: 122
diff changeset
  1174
claus
parents: 122
diff changeset
  1175
!EditField methodsFor:'editing'!
claus
parents: 122
diff changeset
  1176
claus
parents: 122
diff changeset
  1177
paste:someText
claus
parents: 122
diff changeset
  1178
    "redefined to force text to 1 line"
claus
parents: 122
diff changeset
  1179
claus
parents: 122
diff changeset
  1180
    super paste:someText.
claus
parents: 122
diff changeset
  1181
    list size > 1 ifTrue:[
claus
parents: 122
diff changeset
  1182
	self deleteFromLine:2 toLine:(list size)
claus
parents: 122
diff changeset
  1183
    ]
claus
parents: 122
diff changeset
  1184
! !