EnterBox.st
author claus
Wed, 10 May 1995 04:30:46 +0200
changeset 126 40228f4fd66b
parent 122 04ec3fda7c11
child 130 338e856bddc9
permissions -rw-r--r--
.
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: 48
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
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
    13
'From Smalltalk/X, Version:2.10.4 on 28-dec-1994 at 2:45:44 pm'!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
    14
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
    15
DialogBox subclass:#EnterBox
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
    16
	 instanceVariableNames:'labelField enterField'
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
    17
	 classVariableNames:''
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
    18
	 poolDictionaries:''
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
    19
	 category:'Views-DialogBoxes'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    21
3
claus
parents: 0
diff changeset
    22
!EnterBox class methodsFor:'documentation'!
claus
parents: 0
diff changeset
    23
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    24
copyright
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    25
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    26
 COPYRIGHT (c) 1990 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    27
	      All Rights Reserved
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    28
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    29
 This software is furnished under a license and may be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    30
 only in accordance with the terms of that license and with the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    31
 inclusion of the above copyright notice.   This software may not
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    32
 be provided or otherwise made available to, or used by, any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    33
 other person.  No title to or ownership of the software is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    34
 hereby transferred.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    35
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    36
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    37
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    38
version
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    39
"
122
claus
parents: 121
diff changeset
    40
$Header: /cvs/stx/stx/libwidg/EnterBox.st,v 1.23 1995-05-07 00:16:00 claus Exp $
38
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
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    43
3
claus
parents: 0
diff changeset
    44
documentation
claus
parents: 0
diff changeset
    45
"
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    46
    this class implements a pop-up box to enter some string
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    47
    with 2 buttons; a cancel button, and a trigger-action button.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    48
    The boxes title can be changed using: 
3
claus
parents: 0
diff changeset
    49
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    50
	aBox title:'some string'
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    51
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    52
    The two button-labels default to 'abort' and 'ok'; 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    53
    they can be changed using:
3
claus
parents: 0
diff changeset
    54
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    55
	aBox okText:'someString'
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    56
	aBox abortText:'someString'
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    57
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    58
    The initial text in the enterfield can be set using:
3
claus
parents: 0
diff changeset
    59
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    60
	aBox initialText:'someString'
3
claus
parents: 0
diff changeset
    61
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    62
    when the ok-button is pressed, an action is performed, which is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    63
    set using:
3
claus
parents: 0
diff changeset
    64
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    65
	aBox action:[ ... ]
3
claus
parents: 0
diff changeset
    66
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    67
    the abort-action defaults to no-action, but can also be set.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    68
    The box can be opened modal (i.e. the currently active view will
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    69
    be suspended) or modeless. The default is modal (i.e. sending #open
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    70
    is equivalent to #openModal).
62
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    71
"
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    72
!
3
claus
parents: 0
diff changeset
    73
62
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    74
examples 
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    75
"
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    76
    examples:
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    77
	|box|
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    78
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    79
	box := EnterBox new.
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    80
	box title:'your name please:'.
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    81
	box action:[:arg | Transcript showCr:'entered: ' , arg printString].
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    82
	box open
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    83
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    84
	|box|
8
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
    85
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    86
	box := EnterBox new.
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    87
	box title:'your name please:'.
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    88
	box action:[:arg | Transcript showCr:'entered: ' , arg printString].
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    89
	box openModeless
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
    90
62
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    91
    for easier instance creation, there are also some combination
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    92
    methods for instance creation:
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    93
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    94
	|box|
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    95
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    96
	box := EnterBox 
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    97
		 title:'your name please:'
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    98
		 action:[:arg | Transcript showCr:'entered: ' , arg printString].
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
    99
	box openModeless
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
   100
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   101
    If the box is needed to ask for a simple string, you can also use the
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   102
    #request method, to bring up a box, let it ask for something and return
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   103
    the entered string. This method will return nil, if the box was
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   104
    closed with the 'abort' button.
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   105
    Example:
8
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   106
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   107
	|box string|
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   108
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   109
	box := EnterBox request:'input some string:'.
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   110
	string isNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   111
	    Transcript showCr:'no input'
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   112
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   113
	    Transcript showCr:('the enetered string was: ' , string)
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   114
	]
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   115
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   116
    of course, this can be written shorter as:
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   117
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   118
	|string|
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   119
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   120
	string := EnterBox request:'input some string:'.
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   121
	string isNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   122
	    Transcript showCr:'no input'
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   123
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   124
	    Transcript showCr:('the enetered string was: ' , string)
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   125
	]
3
claus
parents: 0
diff changeset
   126
"
claus
parents: 0
diff changeset
   127
! !
claus
parents: 0
diff changeset
   128
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
!EnterBox class methodsFor:'instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   130
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   131
action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   132
    "create and return a new EnterBox 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
     which will evaluate aBlock when 'ok' is pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
    ^ (self new) action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   137
    "(EnterBox action:[:string | Transcript showCr:string]) showAtPointer"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   139
62
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
   140
title:titleString
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
   141
    "create and return a new EnterBox with title aString"
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
   142
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
   143
    ^ self new title:titleString
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
   144
!
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
   145
101
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   146
title:titleString action:aBlock
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   147
    "create and return a new EnterBox with title aString,
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   148
     which will evaluate aBlock when 'ok' is pressed"
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   149
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   150
    ^ (self title:titleString) action:aBlock
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   151
!
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   152
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   153
title:titleString okText:okText action:aBlock
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   154
    "create and return a new EnterBox with title aString, and ok button showing
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   155
     okText; it will evaluate aBlock when 'ok' is pressed"
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   156
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   157
    ^ (self title:titleString action:aBlock) okText:okText
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   158
!
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   159
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
title:titleString okText:okText abortText:abortText action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
    "create and return a new EnterBox with title aString, and buttons showing
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   162
     okText and abortText; it will evaluate aBlock when 'ok' is pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
101
88e7faeda854 *** empty log message ***
claus
parents: 97
diff changeset
   164
    ^ (self title:titleString okText:okText action:aBlock) abortText:abortText 
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   165
! !
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   166
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   167
!EnterBox class methodsFor:'defaults'!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   168
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   169
minExtent
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   170
    ^ self defaultExtent
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   171
!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   172
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   173
defaultExtent
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   174
    ^ (Display pixelPerMillimeter * (60 @ 30)) rounded
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   175
! !
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   176
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   177
!EnterBox class methodsFor:'easy startup '!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   178
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   179
request:aTitle
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   180
    "create and show an enterBox asking for aTitle.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   181
     Return the enterred string or nil (if abort was pressed).
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   182
     The string may be empty, in case return was pressed immediately."
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   183
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   184
    ^ self new request:aTitle
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   185
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   186
    "
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   187
     EnterBox request:'enter a string'
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   188
    "
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   189
! !
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   190
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   191
!EnterBox methodsFor:'accessing'!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   192
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   193
contents
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   194
    "return my contents"
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   195
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   196
    ^ enterField contents
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   197
!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   198
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   199
initialText:aString
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   200
    "define the initial text in the enterfield. all will be selected initially"
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   201
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   202
    enterField initialText:aString
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   203
!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   204
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   205
title:aString
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   206
    "set the title to be displayed at top of enterBox"
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   207
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   208
    |oldSize|
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   209
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   210
    aString ~= labelField label ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   211
	oldSize := labelField extent.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   212
	labelField label:aString.
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   213
	labelField forceResize.
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   214
118
claus
parents: 113
diff changeset
   215
	shown ifTrue:[
claus
parents: 113
diff changeset
   216
	    labelField extent ~= oldSize ifTrue:[
claus
parents: 113
diff changeset
   217
		self resize
claus
parents: 113
diff changeset
   218
	    ]
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   219
	]
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   220
    ]
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   221
!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   222
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   223
initialText:aString selectFrom:start to:stop
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   224
    "define the initial text in the enterfield, and the part to be selected"
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   225
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   226
    enterField initialText:aString.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   227
    enterField selectFromLine:1 col:start toLine:1 col:stop
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   228
!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   229
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   230
title:titleString okText:okString
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   231
    "set title and text in okbutton"
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   232
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   233
    (titleString ~= labelField label or:[okString ~= okButton label]) ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   234
	okButton label:okString.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   235
	okButton resize.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   236
	labelField label:titleString.
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   237
	labelField forceResize.
97
cbf495fe3b64 *** empty log message ***
claus
parents: 90
diff changeset
   238
	shown ifTrue:[self resize].
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   239
    ]
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   240
!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   241
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   242
title:titleString okText:okString abortText:abortString
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   243
    "set title and texts in the buttons"
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   244
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   245
    (titleString ~= labelField label 
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   246
     or:[okString ~= okButton label
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   247
     or:[abortString ~= abortButton label]]) ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   248
	okButton label:okString.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   249
	okButton resize.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   250
	abortButton label:abortString.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   251
	abortButton resize.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   252
	labelField label:titleString.
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   253
	labelField forceResize.
97
cbf495fe3b64 *** empty log message ***
claus
parents: 90
diff changeset
   254
	shown ifTrue:[self resize].
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   255
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   256
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   257
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   258
!EnterBox methodsFor:'initialization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   259
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   260
createEnterField
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   261
    "this has been extracted from the initialize method
121
claus
parents: 118
diff changeset
   262
     to allow redefinition in subclasses. (FilenameEnterBox for example).
claus
parents: 118
diff changeset
   263
     It shall return a new instance of the desired editField class."
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   264
121
claus
parents: 118
diff changeset
   265
     ^ EditField new.
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   266
!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   267
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   268
initialize
90
6e94d68102a4 *** empty log message ***
claus
parents: 77
diff changeset
   269
    |space2 innerWidth|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   270
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   271
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   272
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   273
    self addAbortButton; addOkButton.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   274
73
2cd4588996e8 last version before using new DialogBox
claus
parents: 62
diff changeset
   275
    label := 'Enter'.
2cd4588996e8 last version before using new DialogBox
claus
parents: 62
diff changeset
   276
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   277
    space2 := 2 * ViewSpacing.
73
2cd4588996e8 last version before using new DialogBox
claus
parents: 62
diff changeset
   278
    innerWidth := width - space2.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   279
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   280
    labelField := Label in:self.
118
claus
parents: 113
diff changeset
   281
    labelField 
claus
parents: 113
diff changeset
   282
	label:''; 
claus
parents: 113
diff changeset
   283
	borderWidth:0;
claus
parents: 113
diff changeset
   284
	adjust:#left;
claus
parents: 113
diff changeset
   285
	origin:(0.0 @ ViewSpacing) extent:[1.0 @ labelField height];
claus
parents: 113
diff changeset
   286
	leftInset:ViewSpacing; 
claus
parents: 113
diff changeset
   287
	rightInset:ViewSpacing.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   288
121
claus
parents: 118
diff changeset
   289
    self addComponent:(enterField := self createEnterField).
118
claus
parents: 113
diff changeset
   290
    enterField 
claus
parents: 113
diff changeset
   291
	origin:[0.0 @ (space2 + labelField preferedExtent y "height")]
claus
parents: 113
diff changeset
   292
	extent:[1.0 @ enterField height].
claus
parents: 113
diff changeset
   293
    enterField 
claus
parents: 113
diff changeset
   294
	leftInset:ViewSpacing; 
claus
parents: 113
diff changeset
   295
	rightInset:ViewSpacing;
claus
parents: 113
diff changeset
   296
	leaveAction:[:key | self okPressed].
claus
parents: 113
diff changeset
   297
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   298
    enterField addDependent:self. "to get preferedExtent-changes"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   299
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   300
    "
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   301
     forward keyboard input to the enterfield
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   302
    "
122
claus
parents: 121
diff changeset
   303
    self delegate:(KeyboardForwarder toView:enterField condition:#noFocus).
121
claus
parents: 118
diff changeset
   304
    enterField hasKeyboardFocus:true.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   305
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   306
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   307
reAdjustGeometry
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   308
    "sent late in snapin processing - gives me a chance
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   309
     to resize for new font dimensions"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   310
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   311
    super reAdjustGeometry.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   312
    labelField resize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   313
    okButton resize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   314
    abortButton resize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   315
    self resize
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   316
!
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   317
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   318
focusSequence
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   319
    ^ Array with:enterField with:abortButton with:okButton 
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   320
! !
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   321
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   322
!EnterBox methodsFor:'dependencies'!
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   323
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   324
update:something with:someArgument from:changedObject
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   325
    "sent if my enterbox thinks it needs more real-estate ..."
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   326
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   327
    changedObject == enterField ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   328
	something == #preferedExtent ifTrue:[
105
3d064ba4a0cc *** empty log message ***
claus
parents: 101
diff changeset
   329
	    shown ifTrue:[self resize].
3d064ba4a0cc *** empty log message ***
claus
parents: 101
diff changeset
   330
	    ^ self
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   331
	]
105
3d064ba4a0cc *** empty log message ***
claus
parents: 101
diff changeset
   332
    ].
3d064ba4a0cc *** empty log message ***
claus
parents: 101
diff changeset
   333
    super update:something with:someArgument from:changedObject
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   334
! !
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   335
62
7cc1e330da47 *** empty log message ***
claus
parents: 60
diff changeset
   336
!EnterBox methodsFor:'queries'!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   337
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   338
preferedExtent 
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   339
    |wWanted hWanted wPanel vs2 min 
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   340
     labelPref enterPref panelPref|
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   341
73
2cd4588996e8 last version before using new DialogBox
claus
parents: 62
diff changeset
   342
    panelPref := buttonPanel preferedExtent.
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   343
    labelPref := labelField preferedExtent.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   344
    enterPref := enterField preferedExtent.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   345
    wWanted := (labelPref x max:enterPref x).
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   346
    wPanel := panelPref x.
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   347
    wPanel > wWanted ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   348
	wWanted := wPanel
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   349
    ].
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   350
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   351
    hWanted := labelPref y + enterPref y +
73
2cd4588996e8 last version before using new DialogBox
claus
parents: 62
diff changeset
   352
	       (ViewSpacing * 6) + panelPref y + ViewSpacing.
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   353
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   354
    min := self class minExtent.
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   355
    wWanted <  min x ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   356
	wWanted :=  min x
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   357
    ].
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   358
    hWanted <  min y ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   359
	hWanted :=  min y
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   360
    ].
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   361
    vs2 := ViewSpacing * 2.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   362
    ^ (wWanted + vs2) @ (hWanted + vs2) 
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   363
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   364
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   365
!EnterBox methodsFor:'user actions'!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   366
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   367
hideAndEvaluate:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   368
    "common processing for all ok-actions (see subclasses);
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   369
     shut down box, fetch entered string and evaluate the action with it"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   370
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   371
    |string|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   372
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   373
    self hide.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   374
    aBlock notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   375
	string := self contents.
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   376
	string isNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   377
	    string := ''
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   378
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   379
	    string := string withoutSeparators
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   380
	].
450ce95a72a4 *** empty log message ***
claus
parents: 48
diff changeset
   381
	aBlock value:string
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   382
    ]
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   383
! !
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   384
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   385
!EnterBox methodsFor:'startup'!
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   386
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   387
request
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   388
    "open the box and return the entered string or nil, if
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   389
     abort was pressed"
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   390
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   391
    self action:[:string | ^ string].
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   392
    self open.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   393
    ^ nil
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   394
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   395
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   396
request:title
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   397
    "set the title, open the box and return the entered string or nil, if
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   398
     abort was pressed"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   399
77
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   400
    self title:title.
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   401
    ^ self request
565b052f5277 *** empty log message ***
claus
parents: 73
diff changeset
   402
! !