InfoBox.st
author claus
Fri, 16 Jul 1993 11:44:44 +0200
changeset 0 e6a541c1c0eb
child 3 9d7eefb5e69f
permissions -rw-r--r--
Initial revision
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     1
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1989-93 by Claus Gittinger
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:#InfoBox
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'formLabel textLabel okButton okAction'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:'InfoBitmap'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    16
       poolDictionaries:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    17
       category:'Views-Interactors'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
InfoBox comment:'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    21
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    22
COPYRIGHT (c) 1989-93 by Claus Gittinger
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    23
              All Rights Reserved
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    24
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    25
this class implements a pop-up box to show an information message
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    26
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    27
%W% %E%
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    28
written Spring/Summer 89 by claus
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    29
'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    30
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    31
!InfoBox class methodsFor:'instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    32
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    33
title:titleString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    34
    "create a new infoBox with title, aTitleString"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    35
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    36
    ^ (self new) title:titleString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    37
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    38
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    39
!InfoBox methodsFor:'initialization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    40
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    41
initialize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    42
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    43
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    44
    InfoBitmap isNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    45
        InfoBitmap := Form fromFile:'Information.xbm' resolution:100 on:device
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    46
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    47
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    48
    formLabel := Label in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    49
    self initFormBitmap.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    50
    formLabel borderWidth:0.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    51
    formLabel origin:(ViewSpacing @ ViewSpacing).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    52
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    53
    textLabel := Label label:'Information' in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    54
    textLabel borderWidth:0.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    55
    textLabel origin:((ViewSpacing + formLabel width + ViewSpacing) @ ViewSpacing).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    56
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    57
    okButton := Button label:(Resources at:'ok')
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    58
                       action:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    59
                                okButton turnOffWithoutRedraw.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    60
                                self okPressed 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    61
                              ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    62
                       in:self.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    63
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    64
    "okButton isReturnButton:true."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    65
    okButton origin:[(width // 4) @ (height - ViewSpacing - okButton height)]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    66
             extent:[(width // 2) @ okButton height]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    67
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    68
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    69
initFormBitmap
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    70
    formLabel form:InfoBitmap
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    71
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    72
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    73
!InfoBox methodsFor:'realization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    74
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    75
show
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    76
    "added bell to wake up user"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    77
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    78
    device beep.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    79
    super show
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    80
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    81
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    82
showAtPointer
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    83
    "redefined to show the box with the cursor in the ok-box"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    84
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    85
    self fixSize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    86
    self showAt:(device pointerPosition
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    87
                 - (okButton originRelativeTo:self)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    88
                 - ((okButton width // 2) @ (okButton height // 2)) )
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    89
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    90
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    91
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    92
!InfoBox methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    93
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    94
form:aForm
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    95
    "define a form to be displayed left of the title
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    96
     - usually an exclamation-mark"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    97
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    98
    formLabel form:aForm.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    99
    formLabel resize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   100
    self resize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   101
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   102
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   103
title:aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   104
    "set the title"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   105
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   106
    textLabel label:aString.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   107
    textLabel resize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   108
    self resize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   109
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   110
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   111
title
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   112
    "return the title"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   113
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   114
    ^ textLabel label
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   115
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
okAction:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   118
    "define the action to be performed when ok is pressed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   119
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
    okAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   121
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   123
okText:aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   124
    "define the text in the ok-button"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   125
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
    okButton label:aString.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   127
    self resize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   130
!InfoBox methodsFor:'private'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   131
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   132
resize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
    "resize myself to make everything fit into myself"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
    |w h extra|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   137
    w := ViewSpacing + formLabel width + ViewSpacing + textLabel width + ViewSpacing.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
    h := ViewSpacing
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   139
         + ((formLabel height) max:(textLabel height))
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   140
         + ViewSpacing + ViewSpacing
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   141
         + okButton height
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   142
         + ViewSpacing.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   143
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   144
    extra := margin * 2.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   145
    super extent:(w + extra) @ (h + extra)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   146
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   147
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   148
!InfoBox methodsFor:'user interaction'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   149
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   150
hideAndEvaluate:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   151
    "make myself invisible and evaluate aBlock"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   152
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   153
    self hide.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   154
    aBlock notNil ifTrue:[aBlock value]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   155
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   156
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
okPressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   158
    "user pressed ok-button; make myself invisible and if an action was
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
     specified do it"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
    self hideAndEvaluate:okAction
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   162
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
keyPress:aKey x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   165
    "return-key dublicates ok-function"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   166
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   167
    (aKey == #Return) ifTrue:[self okPressed]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   168
! !