EnterBox.st
author claus
Fri, 12 Aug 1994 01:46:28 +0200
changeset 43 2375d30c645b
parent 38 4b9b70b2cc87
child 48 eabeb474d989
permissions -rw-r--r--
dont shrink smaller than min-extent
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
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     4
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    11
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    12
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    13
ModalBox subclass:#EnterBox
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'labelField enterField buttonPanel
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    15
                              okButton abortButton
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    16
                              okAction abortAction'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    17
       classVariableNames:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
       poolDictionaries:''
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    19
       category:'Views-DialogBoxes'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    21
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    22
EnterBox comment:'
5
claus
parents: 3
diff changeset
    23
COPYRIGHT (c) 1990 by Claus Gittinger
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    24
              All Rights Reserved
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    25
43
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
    26
$Header: /cvs/stx/stx/libwidg/EnterBox.st,v 1.8 1994-08-11 23:46:28 claus Exp $
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    27
'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    28
3
claus
parents: 0
diff changeset
    29
!EnterBox class methodsFor:'documentation'!
claus
parents: 0
diff changeset
    30
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    31
copyright
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
 COPYRIGHT (c) 1990 by Claus Gittinger
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    34
              All Rights Reserved
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
 This software is furnished under a license and may be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    37
 only in accordance with the terms of that license and with the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    38
 inclusion of the above copyright notice.   This software may not
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    39
 be provided or otherwise made available to, or used by, any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    40
 other person.  No title to or ownership of the software is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    41
 hereby transferred.
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
!
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
version
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    46
"
43
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
    47
$Header: /cvs/stx/stx/libwidg/EnterBox.st,v 1.8 1994-08-11 23:46:28 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    48
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    49
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    50
3
claus
parents: 0
diff changeset
    51
documentation
claus
parents: 0
diff changeset
    52
"
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    53
    this class implements a pop-up box to enter some string
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    54
    with 2 buttons; a cancel button, and a trigger-action button.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    55
    The boxes title can be changed using: 
3
claus
parents: 0
diff changeset
    56
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    57
        aBox title:'some string'
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    58
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    59
    The two button-labels default to 'abort' and 'ok'; 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    60
    they can be changed using:
3
claus
parents: 0
diff changeset
    61
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    62
        aBox okText:'someString'
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    63
        aBox abortText:'someString'
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    64
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    65
    The initial text in the enterfield can be set using:
3
claus
parents: 0
diff changeset
    66
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    67
        aBox initialText:'someString'
3
claus
parents: 0
diff changeset
    68
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    69
    when the ok-button is pressed, an action is performed, which is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    70
    set using:
3
claus
parents: 0
diff changeset
    71
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    72
        aBox action:[ ... ]
3
claus
parents: 0
diff changeset
    73
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    74
    the abort-action defaults to no-action, but can also be set.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    75
    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
    76
    be suspended) or modeless. The default is modal (i.e. sending #open
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    77
    is equivalent to #openModal).
3
claus
parents: 0
diff changeset
    78
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    79
    example:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    80
        |box|
8
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
    81
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    82
        box := EnterBox new.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    83
        box title:'your name please:'.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    84
        box action:[:arg | Transcript showCr:'entered: ' , arg printString].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    85
        box open
8
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
    86
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    87
        |box|
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    88
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    89
        box := EnterBox new.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    90
        box title:'your name please:'.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    91
        box action:[:arg | Transcript showCr:'entered: ' , arg printString].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
    92
        box openModeless
3
claus
parents: 0
diff changeset
    93
"
claus
parents: 0
diff changeset
    94
! !
claus
parents: 0
diff changeset
    95
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    96
!EnterBox class methodsFor:'defaults'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    97
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    98
defaultExtent
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    99
    ^ (Display pixelPerMillimeter * (60 @ 30)) rounded
43
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   100
! 
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   101
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   102
minExtent
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   103
    ^ self defaultExtent
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   104
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   105
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   106
!EnterBox class methodsFor:'instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   107
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   108
action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   109
    "create and return a new EnterBox 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   110
     which will evaluate aBlock when 'ok' is pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   111
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   112
    ^ (self new) action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   113
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   114
    "(EnterBox action:[:string | Transcript showCr:string]) showAtPointer"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   115
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
title:titleString action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   118
    "create and return a new EnterBox with title aString,
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   119
     which will evaluate aBlock when 'ok' is pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   121
    ^ ((self new) title:titleString) action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   123
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   124
title:titleString okText:okText abortText:abortText action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   125
    "create and return a new EnterBox with title aString, and buttons showing
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
     okText and abortText; it will evaluate aBlock when 'ok' is pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   127
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
    ^ ((self new) title:titleString 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
                 okText:okText 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   130
              abortText:abortText) action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   131
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   132
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
!EnterBox methodsFor:'initialization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
initialize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
    |space2 innerWidth|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   137
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   139
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   140
    space2 := 2 * ViewSpacing.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   141
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   142
    labelField := Label in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   143
    labelField label:''.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   144
    labelField borderWidth:0.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   145
    labelField adjust:#center.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   146
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   147
    "kludge: preset extent to something useful since other subviews
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   148
     depend on it (extent blocks are not evaluated until view is realized)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   149
     - avoid visible resizing when realized the first time"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   150
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   151
    innerWidth := width - space2.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   152
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   153
    labelField origin:(ViewSpacing @ ViewSpacing)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   154
               extent:(innerWidth @ labelField height).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   155
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   156
    self createEnterField.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
    enterField origin:(ViewSpacing @ (space2 + labelField height))
19
a696fb528758 *** empty log message ***
claus
parents: 8
diff changeset
   158
               extent:((width - space2 - (enterField borderWidth * 2) - margin) @ enterField height).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
    enterField origin:[ViewSpacing @ (space2 + labelField height)]
19
a696fb528758 *** empty log message ***
claus
parents: 8
diff changeset
   160
               extent:[(width - space2 - (enterField borderWidth * 2) - margin) @ enterField height].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
    enterField leaveAction:[:key | self okPressed].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   162
    enterField addDependent:self. "to get preferredExtent-changes"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
    buttonPanel := HorizontalPanelView in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   165
    buttonPanel origin:(ViewSpacing @ (height - (font height * 2) - ViewSpacing - (borderWidth * 2)))
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   166
                extent:((width - space2 - (ViewSpacing // 2) - (buttonPanel borderWidth * 2)) 
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   167
                       @ ((font height * 2) + (borderWidth * 2))).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   168
    buttonPanel origin:[ViewSpacing @ (height - (font height * 2) - ViewSpacing - (borderWidth * 2))]
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   169
                extent:[(width - space2 - (ViewSpacing // 2) - (buttonPanel borderWidth * 2)) 
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   170
                       @ ((font height * 2) + (borderWidth * 2))].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   171
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   172
    buttonPanel layout:"#spread2" #right.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   173
    buttonPanel borderWidth:0.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   174
3
claus
parents: 0
diff changeset
   175
    abortButton := Button label:(resources at:'abort')
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   176
                         action:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   177
                                    abortButton turnOffWithoutRedraw.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   178
                                    self abortPressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   179
                                ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   180
                             in:buttonPanel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   181
3
claus
parents: 0
diff changeset
   182
    okButton := Button label:(resources at:'ok')
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   183
                      action:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   184
                                okButton turnOffWithoutRedraw.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   185
                                self okPressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   186
                             ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   187
                          in:buttonPanel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   188
    okButton isReturnButton:true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   189
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   190
    self keyboardHandler:enterField
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   191
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   192
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   193
createEnterField
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   194
    "
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   195
     this has been extracted from initialize method
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   196
     to allow redefinition in subclasses.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   197
    "
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   198
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   199
    enterField := EditField in:self.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   200
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   201
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   202
reAdjustGeometry
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   203
    "sent late in snapin processing - gives me a chance
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   204
     to resize for new font dimensions"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   205
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   206
    super reAdjustGeometry.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   207
    labelField resize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   208
    okButton resize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   209
    abortButton resize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   210
    self resize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   211
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   212
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   213
!EnterBox methodsFor:'realization'!
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   214
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   215
positionOffset
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   216
    "return the delta, by which the box should be displayed
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   217
     from the mouse pointer. Value returned here makes
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   218
     okButton appear under the cursor"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   219
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   220
    ^ (okButton originRelativeTo:self) + (okButton extent // 2)
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   221
! !
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   222
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   223
!EnterBox methodsFor:'private'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   224
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   225
resize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   226
    "resize myself to make everything visible"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   227
43
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   228
    |wWanted hWanted wPanel vs2 nx ny min|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   229
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   230
    vs2 := ViewSpacing * 2.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   231
    wWanted := (labelField widthIncludingBorder max:enterField preferredExtent x) + vs2.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   232
    wPanel := buttonPanel preferedExtent x + vs2.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   233
    wPanel > wWanted ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   234
        wWanted := wPanel
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   235
    ].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   236
    hWanted := vs2 + labelField height + enterField height +
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   237
               (ViewSpacing * 6) + buttonPanel height + ViewSpacing.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   238
43
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   239
    min := self class minExtent.
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   240
    wWanted <  min x ifTrue:[
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   241
        wWanted :=  min x
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   242
    ].
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   243
    hWanted <  min y ifTrue:[
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   244
        hWanted :=  min y
2375d30c645b dont shrink smaller than min-extent
claus
parents: 38
diff changeset
   245
    ].
3
claus
parents: 0
diff changeset
   246
    ((wWanted ~= width) or:[hWanted ~= height]) ifTrue:[
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   247
        "
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   248
         make sure, that we are fully visible
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   249
         (by moving origin if nescessary)
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   250
        "
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   251
        nx := self origin x min:(device width - wWanted).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   252
        ny := self origin y min:(device height - hWanted).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   253
        self origin:nx@ny extent:(wWanted @ hWanted)
3
claus
parents: 0
diff changeset
   254
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   255
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   256
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   257
!EnterBox methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   258
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   259
title:aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   260
    "set the title to be displayed at top of enterBox"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   261
3
claus
parents: 0
diff changeset
   262
    |oldSize|
claus
parents: 0
diff changeset
   263
8
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   264
    aString ~= labelField label ifTrue:[
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   265
        oldSize := labelField extent.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   266
        labelField label:aString.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   267
        labelField resize.
3
claus
parents: 0
diff changeset
   268
8
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   269
        labelField extent ~= oldSize ifTrue:[
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   270
            self resize
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   271
        ]
3
claus
parents: 0
diff changeset
   272
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   273
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   274
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   275
title:titleString okText:okString abortText:abortString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   276
    "set title and texts in the buttons"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   277
8
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   278
    (titleString ~= labelField label 
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   279
     or:[okString ~= okButton label
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   280
     or:[abortString ~= abortButton label]]) ifTrue:[
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   281
        okButton label:okString.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   282
        okButton resize.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   283
        abortButton label:abortString.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   284
        abortButton resize.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   285
        labelField label:titleString.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   286
        labelField resize.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   287
        self resize.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   288
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   289
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   290
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   291
title:titleString okText:okString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   292
    "set title and text in okbutton"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   293
8
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   294
    (titleString ~= labelField label or:[okString ~= okButton label]) ifTrue:[
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   295
        okButton label:okString.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   296
        okButton resize.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   297
        labelField label:titleString.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   298
        labelField resize.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   299
        self resize.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   300
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   301
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   302
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   303
okText:aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   304
    "set the text to be displayed in the ok-button"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   305
3
claus
parents: 0
diff changeset
   306
    |oldSize|
claus
parents: 0
diff changeset
   307
8
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   308
    aString ~= okButton label ifTrue:[
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   309
        oldSize := okButton extent.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   310
        okButton label:aString.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   311
        okButton resize.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   312
        okButton extent ~= oldSize ifTrue:[
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   313
            self resize
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   314
        ]
3
claus
parents: 0
diff changeset
   315
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   316
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   317
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   318
abortText:aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   319
    "set the text to be displayed in the abort-button"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   320
3
claus
parents: 0
diff changeset
   321
    |oldSize|
claus
parents: 0
diff changeset
   322
8
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   323
    aString ~= abortButton label ifTrue:[
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   324
        oldSize := abortButton extent.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   325
        abortButton label:aString.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   326
        abortButton resize.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   327
        abortButton extent ~= oldSize ifTrue:[
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   328
            self resize
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   329
        ]
3
claus
parents: 0
diff changeset
   330
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   331
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   332
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   333
okText:okString abortText:abortString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   334
    "set both texts displayed in the buttons"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   335
8
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   336
    (abortString ~= abortButton label 
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   337
    or:[okString ~= okButton label]) ifTrue:[
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   338
        okButton label:okString.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   339
        abortButton label:abortString.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   340
        okButton resize.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   341
        abortButton resize.
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   342
        self resize
82e87dc3540e *** empty log message ***
claus
parents: 7
diff changeset
   343
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   344
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   345
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   346
contents
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   347
    "return my contents"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   348
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   349
    ^ enterField contents
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   350
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   351
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   352
initialText:aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   353
    "define the initial text in the enterfield. all will be selected initially"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   354
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   355
    enterField initialText:aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   356
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   357
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   358
initialText:aString selectFrom:start to:stop
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   359
    "define the initial text in the enterfield, and the part to be selected"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   360
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   361
    enterField initialText:aString.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   362
    enterField selectFromLine:1 col:start toLine:1 col:stop
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   363
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   364
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   365
action:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   366
    "set the action to be performed when user presses ok-button;
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   367
     aBlock must be nil or a block with one argument "
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   368
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   369
    okAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   370
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   371
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   372
okAction:aBlock
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   373
    "same as action - for your convenience"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   374
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   375
    okAction := aBlock
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   376
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   377
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   378
abortAction:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   379
    "set the action to be performed when user presses abort-button;
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   380
     aBlock must be nil or a block with no arguments"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   381
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   382
    abortAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   383
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   384
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   385
!EnterBox methodsFor:'dependencies'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   386
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   387
update:something with:someArgument
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   388
    "sent if my enterbox thinks it needs more real-estate ..."
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   389
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   390
    |ext|
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   391
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   392
    something == enterField ifTrue:[
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   393
        someArgument == #preferredExtent ifTrue:[
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   394
            self resize
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   395
        ]
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   396
    ]
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   397
! !
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 19
diff changeset
   398
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   399
!EnterBox methodsFor:'user interaction'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   400
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   401
hideAndEvaluate:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   402
    "common processing for all ok-actions (see subclasses);
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   403
     shut down box, fetch entered string and evaluate the action with it"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   404
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   405
    |string|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   406
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   407
    self hide.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   408
    aBlock notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   409
        string := self contents.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   410
        string isNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   411
            string := ''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   412
        ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   413
            string := string withoutSeparators
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   414
        ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   415
        aBlock value:string
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   416
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   417
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   418
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   419
okPressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   420
    "user pressed ok button - hide myself and evaluate okAction"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   421
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   422
    self hideAndEvaluate:okAction
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   423
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   424
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   425
abortPressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   426
    "user pressed abort button - hide myself and evaluate okAction"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   427
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   428
    self hideAndEvaluate:abortAction
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   429
! !