View.st
author claus
Sun, 12 Dec 1993 22:34:05 +0100
changeset 15 ba1100f2ca03
parent 12 9f0995fac1fa
child 20 ab35d92b9a4b
permissions -rw-r--r--
fixed resize (smaller) border repaint bug
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
48194c26a46c Initial revision
claus
parents:
diff changeset
     1
"
6
7ee0cfde237d *** empty log message ***
claus
parents: 5
diff changeset
     2
 COPYRIGHT (c) 1989 by Claus Gittinger
0
48194c26a46c Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
48194c26a46c Initial revision
claus
parents:
diff changeset
     4
48194c26a46c Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
48194c26a46c Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
48194c26a46c Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
48194c26a46c Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
48194c26a46c Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
48194c26a46c Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
48194c26a46c Initial revision
claus
parents:
diff changeset
    11
"
48194c26a46c Initial revision
claus
parents:
diff changeset
    12
48194c26a46c Initial revision
claus
parents:
diff changeset
    13
PseudoView subclass:#View
48194c26a46c Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'superView subViews
48194c26a46c Initial revision
claus
parents:
diff changeset
    15
                              components style resources
48194c26a46c Initial revision
claus
parents:
diff changeset
    16
                              transformation viewport
48194c26a46c Initial revision
claus
parents:
diff changeset
    17
                              borderColor borderWidth borderShape viewShape
48194c26a46c Initial revision
claus
parents:
diff changeset
    18
                              top left
48194c26a46c Initial revision
claus
parents:
diff changeset
    19
                              extentChanged originChanged cornerChanged
48194c26a46c Initial revision
claus
parents:
diff changeset
    20
                              relativeOrigin relativeExtent relativeCorner
48194c26a46c Initial revision
claus
parents:
diff changeset
    21
                              originRule extentRule cornerRule
48194c26a46c Initial revision
claus
parents:
diff changeset
    22
                              topInset leftInset bottomInset rightInset
48194c26a46c Initial revision
claus
parents:
diff changeset
    23
                              shown hidden name
48194c26a46c Initial revision
claus
parents:
diff changeset
    24
                              level softEdge margin innerClipRect
48194c26a46c Initial revision
claus
parents:
diff changeset
    25
                              shadowColor lightColor
48194c26a46c Initial revision
claus
parents:
diff changeset
    26
                              halfShadowColor halfLightColor
48194c26a46c Initial revision
claus
parents:
diff changeset
    27
                              viewOrigin 
48194c26a46c Initial revision
claus
parents:
diff changeset
    28
                              contentsChangeAction originChangeAction
48194c26a46c Initial revision
claus
parents:
diff changeset
    29
                              bitGravity viewGravity
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
    30
                              keyboardHandler model controller windowGroup
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    31
                              aspectSymbol changeSymbol menuSymbol'
48194c26a46c Initial revision
claus
parents:
diff changeset
    32
       classVariableNames:   'Grey ZeroPoint CentPoint
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    33
                              ViewSpacing DefaultStyle'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    34
       poolDictionaries:     ''
48194c26a46c Initial revision
claus
parents:
diff changeset
    35
       category:'Views-Basic'
48194c26a46c Initial revision
claus
parents:
diff changeset
    36
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    37
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    38
View class instanceVariableNames:'ClassResources'!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    39
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    40
View comment:'
48194c26a46c Initial revision
claus
parents:
diff changeset
    41
6
7ee0cfde237d *** empty log message ***
claus
parents: 5
diff changeset
    42
COPYRIGHT (c) 1989 by Claus Gittinger
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    43
              All Rights Reserved
48194c26a46c Initial revision
claus
parents:
diff changeset
    44
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
    45
$Header: /cvs/stx/stx/libview/View.st,v 1.6 1993-12-12 21:34:05 claus Exp $
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    46
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    47
written spring/summer 89 by claus
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    48
3D effects summer 90 by claus
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    49
MVC, viewport and window stuff summer 92 by claus (for ST-80 compatibility)
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    50
'!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    51
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    52
"this flag controls (globally) how views look"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    53
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    54
Smalltalk at:#View3D put:false!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    55
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    56
!View class methodsFor:'documentation'!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    57
"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    58
this class implements functions common to all Views. 
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    59
Instances of View are seldom used, most views in the system inherit from this class. 
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    60
However, sometimes a view is used to create a dummy view for framing purposes.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    61
48194c26a46c Initial revision
claus
parents:
diff changeset
    62
Instance variables:
48194c26a46c Initial revision
claus
parents:
diff changeset
    63
48194c26a46c Initial revision
claus
parents:
diff changeset
    64
superView               <aView>                 my superview i.e. the view I am in
48194c26a46c Initial revision
claus
parents:
diff changeset
    65
subViews                <aCollection>           the collection of subviews
48194c26a46c Initial revision
claus
parents:
diff changeset
    66
transformation          <WindowingTransformation>
48194c26a46c Initial revision
claus
parents:
diff changeset
    67
window                  <Rectangle>             my window i.e. local coordinate-system
48194c26a46c Initial revision
claus
parents:
diff changeset
    68
viewport                <Rectangle>             my Rectangle in superviews coordinates
48194c26a46c Initial revision
claus
parents:
diff changeset
    69
borderColor             <Color>                 color of border
48194c26a46c Initial revision
claus
parents:
diff changeset
    70
borderWidth             <Number>                borderWidth in pixels (device dep.)
48194c26a46c Initial revision
claus
parents:
diff changeset
    71
borderShape             <Form>                  shape of border (if device supports it)
48194c26a46c Initial revision
claus
parents:
diff changeset
    72
viewShape               <Form>                  shape of view (if device supports it)
48194c26a46c Initial revision
claus
parents:
diff changeset
    73
top                     <Number>                top coordinate in superview
48194c26a46c Initial revision
claus
parents:
diff changeset
    74
left                    <Number>                left coordinate in superview
48194c26a46c Initial revision
claus
parents:
diff changeset
    75
extendChanged           <Boolean>               true if extend changed during setup
48194c26a46c Initial revision
claus
parents:
diff changeset
    76
originChanged           <Boolean>               true if origin changed during setup
48194c26a46c Initial revision
claus
parents:
diff changeset
    77
relativeOrigin          <Number>                relative origin in percent within superview
48194c26a46c Initial revision
claus
parents:
diff changeset
    78
relativeExtent          <Number>                relative extent in percent within superview
48194c26a46c Initial revision
claus
parents:
diff changeset
    79
originRule              <Block>                 rule to compute origin if superview changes size
48194c26a46c Initial revision
claus
parents:
diff changeset
    80
extentRule              <Block>                 rule to compute extent if superview changes size
48194c26a46c Initial revision
claus
parents:
diff changeset
    81
shown                   <Boolean>               true if visible (false if iconified)
48194c26a46c Initial revision
claus
parents:
diff changeset
    82
hidden                  <Boolean>               dont show automatically when superview is realized
48194c26a46c Initial revision
claus
parents:
diff changeset
    83
name                    <String>                my name (future use for resources)
48194c26a46c Initial revision
claus
parents:
diff changeset
    84
level                   <Number>                3D level relative to superview
48194c26a46c Initial revision
claus
parents:
diff changeset
    85
margin                  <Number>                convenient margin
48194c26a46c Initial revision
claus
parents:
diff changeset
    86
innerClipRect           <Rectangle>             convenient inner clip (minus margin)
48194c26a46c Initial revision
claus
parents:
diff changeset
    87
shadowColor             <Color>                 color used to draw 3D shadowed edges
48194c26a46c Initial revision
claus
parents:
diff changeset
    88
lightColor              <Color>                 color used to draw 3D lighted edges
48194c26a46c Initial revision
claus
parents:
diff changeset
    89
viewOrigin              <Point>                 origin within model
48194c26a46c Initial revision
claus
parents:
diff changeset
    90
contentsChanngeAction   <Block>                 action to perform when model contents changes
48194c26a46c Initial revision
claus
parents:
diff changeset
    91
originChangeAction      <Block>                 action to perform when model origin changes
48194c26a46c Initial revision
claus
parents:
diff changeset
    92
bitGravity              <Symbol>                gravity of contents (if device supports it)
48194c26a46c Initial revision
claus
parents:
diff changeset
    93
viewGravity             <Symbol>                gravity of view (if device supports it)
48194c26a46c Initial revision
claus
parents:
diff changeset
    94
keyboardHandler         <anObject>              gets keyboard input if non-nil
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
    95
model                   <anObject>              the model (if any)
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
    96
controller              <aController>           the controller
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    97
48194c26a46c Initial revision
claus
parents:
diff changeset
    98
Class variables:
48194c26a46c Initial revision
claus
parents:
diff changeset
    99
48194c26a46c Initial revision
claus
parents:
diff changeset
   100
Grey                    <Color>                 the color grey - its used so often
48194c26a46c Initial revision
claus
parents:
diff changeset
   101
ViewSpacing             <Number>                the number of pixels in a millimeter (prefered
48194c26a46c Initial revision
claus
parents:
diff changeset
   102
                                                spacing between views)
48194c26a46c Initial revision
claus
parents:
diff changeset
   103
ZeroPoint               <Point>                 0 @ 0 - its used so often
48194c26a46c Initial revision
claus
parents:
diff changeset
   104
CentPoint               <Point>                 100 @ 100 - its used so often
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   105
"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   106
! !
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   107
48194c26a46c Initial revision
claus
parents:
diff changeset
   108
!View class methodsFor:'initialization'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   109
48194c26a46c Initial revision
claus
parents:
diff changeset
   110
initialize
48194c26a46c Initial revision
claus
parents:
diff changeset
   111
    "Workstation initialize."
48194c26a46c Initial revision
claus
parents:
diff changeset
   112
48194c26a46c Initial revision
claus
parents:
diff changeset
   113
    super initialize.
48194c26a46c Initial revision
claus
parents:
diff changeset
   114
    Form initialize.
48194c26a46c Initial revision
claus
parents:
diff changeset
   115
    Color initialize.
48194c26a46c Initial revision
claus
parents:
diff changeset
   116
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   117
48194c26a46c Initial revision
claus
parents:
diff changeset
   118
!View class methodsFor:'defaults'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   119
48194c26a46c Initial revision
claus
parents:
diff changeset
   120
defaultExtent
48194c26a46c Initial revision
claus
parents:
diff changeset
   121
    "define the default extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   122
48194c26a46c Initial revision
claus
parents:
diff changeset
   123
    CentPoint isNil ifTrue:[CentPoint := 100 @ 100].
48194c26a46c Initial revision
claus
parents:
diff changeset
   124
    ^ CentPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
   125
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   126
48194c26a46c Initial revision
claus
parents:
diff changeset
   127
defaultStyle
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   128
    "return the default view style"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   129
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   130
    ^ DefaultStyle
48194c26a46c Initial revision
claus
parents:
diff changeset
   131
48194c26a46c Initial revision
claus
parents:
diff changeset
   132
    "View defaultStyle"
48194c26a46c Initial revision
claus
parents:
diff changeset
   133
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   134
48194c26a46c Initial revision
claus
parents:
diff changeset
   135
defaultStyle:aStyle
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   136
    "set the default view style"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   137
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   138
    DefaultStyle := aStyle
48194c26a46c Initial revision
claus
parents:
diff changeset
   139
48194c26a46c Initial revision
claus
parents:
diff changeset
   140
    "View defaultStyle:#next"
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   141
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   142
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   143
classResources
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   144
    "if not already loaded, get the classes resourcePack
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   145
     and return it"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   146
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   147
    ClassResources isNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   148
        ClassResources := ResourcePack for:self.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   149
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   150
    ^ ClassResources
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   151
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   152
48194c26a46c Initial revision
claus
parents:
diff changeset
   153
!View class methodsFor:'instance creation'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   154
48194c26a46c Initial revision
claus
parents:
diff changeset
   155
in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   156
    "return a new view as a subview of aView"
48194c26a46c Initial revision
claus
parents:
diff changeset
   157
48194c26a46c Initial revision
claus
parents:
diff changeset
   158
    |newView|
48194c26a46c Initial revision
claus
parents:
diff changeset
   159
48194c26a46c Initial revision
claus
parents:
diff changeset
   160
    newView := self basicNew.
48194c26a46c Initial revision
claus
parents:
diff changeset
   161
    newView device:(aView device).
48194c26a46c Initial revision
claus
parents:
diff changeset
   162
    newView superView:(aView).
48194c26a46c Initial revision
claus
parents:
diff changeset
   163
    newView initialize.
48194c26a46c Initial revision
claus
parents:
diff changeset
   164
    aView addSubView:newView.
48194c26a46c Initial revision
claus
parents:
diff changeset
   165
    ^ newView
48194c26a46c Initial revision
claus
parents:
diff changeset
   166
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   167
48194c26a46c Initial revision
claus
parents:
diff changeset
   168
extent:extent in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   169
    "create a new view as a subview of aView with given extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   170
48194c26a46c Initial revision
claus
parents:
diff changeset
   171
    ^ self origin:nil extent:extent borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   172
                      font:nil label:nil in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   173
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   174
48194c26a46c Initial revision
claus
parents:
diff changeset
   175
origin:origin in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   176
    "create a new view as a subview of aView with given origin"
48194c26a46c Initial revision
claus
parents:
diff changeset
   177
48194c26a46c Initial revision
claus
parents:
diff changeset
   178
    ^ self origin:origin extent:nil borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   179
                         font:nil label:nil in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   180
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   181
48194c26a46c Initial revision
claus
parents:
diff changeset
   182
extent:extent
48194c26a46c Initial revision
claus
parents:
diff changeset
   183
    "create a new view with given extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   184
48194c26a46c Initial revision
claus
parents:
diff changeset
   185
    ^ self origin:nil extent:extent borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   186
                      font:nil label:nil in:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   187
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   188
48194c26a46c Initial revision
claus
parents:
diff changeset
   189
origin:origin extent:extent
48194c26a46c Initial revision
claus
parents:
diff changeset
   190
    "create a new view with given origin and extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   191
48194c26a46c Initial revision
claus
parents:
diff changeset
   192
    ^ self origin:origin extent:extent borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   193
                         font:nil label:nil in:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   194
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   195
48194c26a46c Initial revision
claus
parents:
diff changeset
   196
origin:origin extent:extent in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   197
    "create a new view as a subview of aView with given origin and extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   198
48194c26a46c Initial revision
claus
parents:
diff changeset
   199
    ^ self origin:origin extent:extent borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   200
                         font:nil label:nil in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   201
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   202
48194c26a46c Initial revision
claus
parents:
diff changeset
   203
origin:origin extent:extent borderWidth:bw in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   204
    "create a new view as a subview of aView with given origin, extent
48194c26a46c Initial revision
claus
parents:
diff changeset
   205
     and borderWidth"
48194c26a46c Initial revision
claus
parents:
diff changeset
   206
48194c26a46c Initial revision
claus
parents:
diff changeset
   207
    ^ self origin:origin extent:extent borderWidth:bw
48194c26a46c Initial revision
claus
parents:
diff changeset
   208
                         font:nil label:nil in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   209
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   210
48194c26a46c Initial revision
claus
parents:
diff changeset
   211
origin:origin extent:extent borderWidth:bw
48194c26a46c Initial revision
claus
parents:
diff changeset
   212
    "create a new view with given origin, extent and borderWidth"
48194c26a46c Initial revision
claus
parents:
diff changeset
   213
48194c26a46c Initial revision
claus
parents:
diff changeset
   214
    ^ self origin:origin extent:extent borderWidth:bw
48194c26a46c Initial revision
claus
parents:
diff changeset
   215
                         font:nil label:nil in:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   216
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   217
48194c26a46c Initial revision
claus
parents:
diff changeset
   218
label:label
48194c26a46c Initial revision
claus
parents:
diff changeset
   219
    "create a new view with given label"
48194c26a46c Initial revision
claus
parents:
diff changeset
   220
48194c26a46c Initial revision
claus
parents:
diff changeset
   221
    ^ self origin:nil extent:nil borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   222
                      font:nil label:label in:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   223
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   224
48194c26a46c Initial revision
claus
parents:
diff changeset
   225
label:label in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   226
    "create a new view as subview of aView with given label"
48194c26a46c Initial revision
claus
parents:
diff changeset
   227
48194c26a46c Initial revision
claus
parents:
diff changeset
   228
    ^ self origin:nil extent:nil borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   229
                      font:nil label:label in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   230
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   231
48194c26a46c Initial revision
claus
parents:
diff changeset
   232
extent:extent label:label
48194c26a46c Initial revision
claus
parents:
diff changeset
   233
    "create a new view with given extent and label"
48194c26a46c Initial revision
claus
parents:
diff changeset
   234
48194c26a46c Initial revision
claus
parents:
diff changeset
   235
    ^ self origin:nil extent:extent borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   236
                      font:nil label:label in:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   237
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   238
48194c26a46c Initial revision
claus
parents:
diff changeset
   239
origin:origin extent:extent label:label
48194c26a46c Initial revision
claus
parents:
diff changeset
   240
    "create a new view with given origin, extent and label"
48194c26a46c Initial revision
claus
parents:
diff changeset
   241
48194c26a46c Initial revision
claus
parents:
diff changeset
   242
    ^ self origin:origin extent:extent borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   243
                         font:nil label:label in:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   244
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   245
48194c26a46c Initial revision
claus
parents:
diff changeset
   246
origin:origin extent:extent font:aFont label:label
48194c26a46c Initial revision
claus
parents:
diff changeset
   247
    ^ self origin:origin extent:extent borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   248
                         font:nil label:label in:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   249
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   250
48194c26a46c Initial revision
claus
parents:
diff changeset
   251
origin:origin extent:extent font:aFont label:label in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   252
    ^ self origin:origin extent:extent borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   253
                         font:aFont label:label in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   254
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   255
48194c26a46c Initial revision
claus
parents:
diff changeset
   256
origin:anOrigin extent:anExtent
48194c26a46c Initial revision
claus
parents:
diff changeset
   257
                label:aLabel icon:aForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   258
                minExtent:minExtent maxExtent:maxExtent
48194c26a46c Initial revision
claus
parents:
diff changeset
   259
    |newView|
48194c26a46c Initial revision
claus
parents:
diff changeset
   260
48194c26a46c Initial revision
claus
parents:
diff changeset
   261
    newView := self on:Display.
48194c26a46c Initial revision
claus
parents:
diff changeset
   262
    anOrigin notNil ifTrue:[newView origin:anOrigin].
48194c26a46c Initial revision
claus
parents:
diff changeset
   263
    anExtent notNil ifTrue:[newView extent:anExtent].
48194c26a46c Initial revision
claus
parents:
diff changeset
   264
    aLabel notNil ifTrue:[newView label:aLabel].
48194c26a46c Initial revision
claus
parents:
diff changeset
   265
    aForm notNil ifTrue:[newView icon:aForm].
48194c26a46c Initial revision
claus
parents:
diff changeset
   266
    minExtent notNil ifTrue:[newView minExtent:minExtent].
48194c26a46c Initial revision
claus
parents:
diff changeset
   267
    maxExtent notNil ifTrue:[newView maxExtent:maxExtent].
48194c26a46c Initial revision
claus
parents:
diff changeset
   268
    ^ newView
48194c26a46c Initial revision
claus
parents:
diff changeset
   269
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   270
48194c26a46c Initial revision
claus
parents:
diff changeset
   271
origin:anOrigin extent:anExtent borderWidth:bw
48194c26a46c Initial revision
claus
parents:
diff changeset
   272
                font:aFont label:aLabel in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   273
    |newView|
48194c26a46c Initial revision
claus
parents:
diff changeset
   274
48194c26a46c Initial revision
claus
parents:
diff changeset
   275
    aView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   276
        newView := self basicNew.
48194c26a46c Initial revision
claus
parents:
diff changeset
   277
        newView device:(aView device).
48194c26a46c Initial revision
claus
parents:
diff changeset
   278
        aView addSubView:newView.
48194c26a46c Initial revision
claus
parents:
diff changeset
   279
        newView initialize
48194c26a46c Initial revision
claus
parents:
diff changeset
   280
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   281
        newView := self on:Display
48194c26a46c Initial revision
claus
parents:
diff changeset
   282
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   283
    bw notNil ifTrue:[newView borderWidth:bw].
48194c26a46c Initial revision
claus
parents:
diff changeset
   284
    anExtent notNil ifTrue:[newView extent:anExtent].
48194c26a46c Initial revision
claus
parents:
diff changeset
   285
    anOrigin notNil ifTrue:[newView origin:anOrigin].
48194c26a46c Initial revision
claus
parents:
diff changeset
   286
    aFont notNil ifTrue:[newView font:aFont].
48194c26a46c Initial revision
claus
parents:
diff changeset
   287
    aLabel notNil ifTrue:[newView label:aLabel].
48194c26a46c Initial revision
claus
parents:
diff changeset
   288
    ^ newView
48194c26a46c Initial revision
claus
parents:
diff changeset
   289
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   290
48194c26a46c Initial revision
claus
parents:
diff changeset
   291
origin:origin corner:corner 
48194c26a46c Initial revision
claus
parents:
diff changeset
   292
    "create a new view with given origin and extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   293
48194c26a46c Initial revision
claus
parents:
diff changeset
   294
    ^ self origin:origin corner:corner borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   295
                         font:nil label:nil in:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   296
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   297
48194c26a46c Initial revision
claus
parents:
diff changeset
   298
origin:origin corner:corner in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   299
    "create a new view as a subview of aView with given origin and extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   300
48194c26a46c Initial revision
claus
parents:
diff changeset
   301
    ^ self origin:origin corner:corner borderWidth:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   302
                         font:nil label:nil in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   303
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   304
48194c26a46c Initial revision
claus
parents:
diff changeset
   305
origin:origin corner:corner borderWidth:bw in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   306
    "create a new view as a subview of aView with given origin and extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   307
48194c26a46c Initial revision
claus
parents:
diff changeset
   308
    ^ self origin:origin corner:corner borderWidth:bw
48194c26a46c Initial revision
claus
parents:
diff changeset
   309
                         font:nil label:nil in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   310
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   311
48194c26a46c Initial revision
claus
parents:
diff changeset
   312
origin:anOrigin corner:aCorner borderWidth:bw
48194c26a46c Initial revision
claus
parents:
diff changeset
   313
                font:aFont label:aLabel in:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   314
    |newView|
48194c26a46c Initial revision
claus
parents:
diff changeset
   315
48194c26a46c Initial revision
claus
parents:
diff changeset
   316
    aView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   317
        newView := self basicNew.
48194c26a46c Initial revision
claus
parents:
diff changeset
   318
        newView device:(aView device).
48194c26a46c Initial revision
claus
parents:
diff changeset
   319
        aView addSubView:newView.
48194c26a46c Initial revision
claus
parents:
diff changeset
   320
        newView initialize
48194c26a46c Initial revision
claus
parents:
diff changeset
   321
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   322
        newView := self on:Display
48194c26a46c Initial revision
claus
parents:
diff changeset
   323
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   324
    bw notNil ifTrue:[newView borderWidth:bw].
48194c26a46c Initial revision
claus
parents:
diff changeset
   325
    anOrigin notNil ifTrue:[newView origin:anOrigin].
48194c26a46c Initial revision
claus
parents:
diff changeset
   326
    aCorner notNil ifTrue:[newView corner:aCorner].
48194c26a46c Initial revision
claus
parents:
diff changeset
   327
    aFont notNil ifTrue:[newView font:aFont].
48194c26a46c Initial revision
claus
parents:
diff changeset
   328
    aLabel notNil ifTrue:[newView label:aLabel].
48194c26a46c Initial revision
claus
parents:
diff changeset
   329
    ^ newView
48194c26a46c Initial revision
claus
parents:
diff changeset
   330
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   331
48194c26a46c Initial revision
claus
parents:
diff changeset
   332
on:anObject aspect:aspectMsg change:changeMsg menu:menuMsg
48194c26a46c Initial revision
claus
parents:
diff changeset
   333
    ^ self new on:anObject
48194c26a46c Initial revision
claus
parents:
diff changeset
   334
           aspect:aspectMsg
48194c26a46c Initial revision
claus
parents:
diff changeset
   335
           change:changeMsg
48194c26a46c Initial revision
claus
parents:
diff changeset
   336
             menu:menuMsg
48194c26a46c Initial revision
claus
parents:
diff changeset
   337
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   338
48194c26a46c Initial revision
claus
parents:
diff changeset
   339
model:aModel
48194c26a46c Initial revision
claus
parents:
diff changeset
   340
    ^ self new model:aModel
48194c26a46c Initial revision
claus
parents:
diff changeset
   341
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   342
48194c26a46c Initial revision
claus
parents:
diff changeset
   343
!View methodsFor:'initialization'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   344
48194c26a46c Initial revision
claus
parents:
diff changeset
   345
initialize
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   346
    "initialize all state of the view - usually redefined in subclasses,
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   347
     but always doing a 'super initialize'. Each class should setup its
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   348
     locals - and not forget the others.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   349
     View setup is separated into two parts, the general setup done here
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   350
     and the style specific setup in initStyle. Each view should be prepared
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   351
     for a style change by beeing sent another initStyle with a new style value"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   352
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   353
    |ext|
48194c26a46c Initial revision
claus
parents:
diff changeset
   354
48194c26a46c Initial revision
claus
parents:
diff changeset
   355
    super initialize.
48194c26a46c Initial revision
claus
parents:
diff changeset
   356
    shown := false.
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   357
    hidden := false.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   358
    realized := false.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   359
48194c26a46c Initial revision
claus
parents:
diff changeset
   360
    "fill in some defaults - some of them are usually redefined in subclasses
48194c26a46c Initial revision
claus
parents:
diff changeset
   361
     initialize methods"
48194c26a46c Initial revision
claus
parents:
diff changeset
   362
48194c26a46c Initial revision
claus
parents:
diff changeset
   363
    name := self class name.
48194c26a46c Initial revision
claus
parents:
diff changeset
   364
    ext := self class defaultExtent.
48194c26a46c Initial revision
claus
parents:
diff changeset
   365
48194c26a46c Initial revision
claus
parents:
diff changeset
   366
    level := 0.
48194c26a46c Initial revision
claus
parents:
diff changeset
   367
    margin := 0.
48194c26a46c Initial revision
claus
parents:
diff changeset
   368
    softEdge := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
   369
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   370
    resources := self class classResources.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   371
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   372
    self initStyle.
48194c26a46c Initial revision
claus
parents:
diff changeset
   373
48194c26a46c Initial revision
claus
parents:
diff changeset
   374
    left := 0.
48194c26a46c Initial revision
claus
parents:
diff changeset
   375
    top := 0.
48194c26a46c Initial revision
claus
parents:
diff changeset
   376
    width := ext x.
48194c26a46c Initial revision
claus
parents:
diff changeset
   377
    height := ext y.
48194c26a46c Initial revision
claus
parents:
diff changeset
   378
    ZeroPoint isNil ifTrue:[ZeroPoint := 0 @ 0].
48194c26a46c Initial revision
claus
parents:
diff changeset
   379
    viewOrigin := ZeroPoint.
48194c26a46c Initial revision
claus
parents:
diff changeset
   380
    ViewSpacing isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   381
        ViewSpacing := Display verticalPixelPerMillimeter rounded
48194c26a46c Initial revision
claus
parents:
diff changeset
   382
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   383
    originChanged := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
   384
    extentChanged := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
   385
    bitGravity := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   386
    viewGravity := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   387
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   388
"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   389
    controller := self defaultController new.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   390
    controller view:self.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   391
"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   392
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   393
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   394
defaultController
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   395
    ^ Controller
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   396
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   397
48194c26a46c Initial revision
claus
parents:
diff changeset
   398
initStyle
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   399
    "this method sets up all style dependent things"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   400
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   401
    Grey isNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   402
        Grey := resources name:'VIEW_GREY' default:nil.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   403
        Grey isNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   404
            Grey := Color grey
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   405
        ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   406
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   407
    DefaultStyle isNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   408
        DefaultStyle := resources name:'VIEW_STYLE' 
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   409
                               default:(View3D ifTrue:[#view3D] 
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   410
                                              ifFalse:[#normal]) 
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   411
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   412
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   413
    style := DefaultStyle.
48194c26a46c Initial revision
claus
parents:
diff changeset
   414
48194c26a46c Initial revision
claus
parents:
diff changeset
   415
    self is3D ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   416
        borderWidth := 0
48194c26a46c Initial revision
claus
parents:
diff changeset
   417
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   418
        borderWidth := 1
48194c26a46c Initial revision
claus
parents:
diff changeset
   419
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   420
48194c26a46c Initial revision
claus
parents:
diff changeset
   421
    (self is3D and:[device hasGreyscales]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   422
        viewBackground := Grey.
48194c26a46c Initial revision
claus
parents:
diff changeset
   423
        lightColor := White.
48194c26a46c Initial revision
claus
parents:
diff changeset
   424
        shadowColor := Black.
48194c26a46c Initial revision
claus
parents:
diff changeset
   425
        halfShadowColor := Color darkGrey.
48194c26a46c Initial revision
claus
parents:
diff changeset
   426
        halfLightColor := White.
48194c26a46c Initial revision
claus
parents:
diff changeset
   427
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   428
        viewBackground := White.
48194c26a46c Initial revision
claus
parents:
diff changeset
   429
        lightColor := Color grey 
48194c26a46c Initial revision
claus
parents:
diff changeset
   430
                      "or White" 
48194c26a46c Initial revision
claus
parents:
diff changeset
   431
                      "or Color lightGrey".    "cant say which is better ..."
48194c26a46c Initial revision
claus
parents:
diff changeset
   432
        shadowColor := Black.
48194c26a46c Initial revision
claus
parents:
diff changeset
   433
        halfShadowColor := Color grey.
48194c26a46c Initial revision
claus
parents:
diff changeset
   434
        halfLightColor := White.
48194c26a46c Initial revision
claus
parents:
diff changeset
   435
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   436
48194c26a46c Initial revision
claus
parents:
diff changeset
   437
    borderColor := Black.
48194c26a46c Initial revision
claus
parents:
diff changeset
   438
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   439
48194c26a46c Initial revision
claus
parents:
diff changeset
   440
initEvents
48194c26a46c Initial revision
claus
parents:
diff changeset
   441
    "will be sent by create - can be redefined by subclasses to enable
48194c26a46c Initial revision
claus
parents:
diff changeset
   442
     view events"
48194c26a46c Initial revision
claus
parents:
diff changeset
   443
48194c26a46c Initial revision
claus
parents:
diff changeset
   444
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   445
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   446
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   447
prepareForReinit
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   448
    super prepareForReinit.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   449
    windowGroup notNil ifTrue:[
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
   450
        windowGroup reinitialize
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   451
    ]
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   452
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   453
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   454
reinitialize
48194c26a46c Initial revision
claus
parents:
diff changeset
   455
    "this is called right after snapIn"
48194c26a46c Initial revision
claus
parents:
diff changeset
   456
48194c26a46c Initial revision
claus
parents:
diff changeset
   457
    |myController|
48194c26a46c Initial revision
claus
parents:
diff changeset
   458
48194c26a46c Initial revision
claus
parents:
diff changeset
   459
    "if I have already been reinited - return"
48194c26a46c Initial revision
claus
parents:
diff changeset
   460
    drawableId notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   461
        ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   462
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   463
48194c26a46c Initial revision
claus
parents:
diff changeset
   464
    myController := controller.
48194c26a46c Initial revision
claus
parents:
diff changeset
   465
    controller := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   466
    self recreate.
48194c26a46c Initial revision
claus
parents:
diff changeset
   467
48194c26a46c Initial revision
claus
parents:
diff changeset
   468
    "if I was mapped, do it again"
48194c26a46c Initial revision
claus
parents:
diff changeset
   469
    realized ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   470
        "if it was iconified, try to remap iconified"
48194c26a46c Initial revision
claus
parents:
diff changeset
   471
        shown ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   472
            device mapWindow:drawableId iconified:true
48194c26a46c Initial revision
claus
parents:
diff changeset
   473
                                              atX:left y:top
48194c26a46c Initial revision
claus
parents:
diff changeset
   474
                                            width:width height:height
48194c26a46c Initial revision
claus
parents:
diff changeset
   475
        ] ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   476
            device mapWindow:drawableId iconified:false
48194c26a46c Initial revision
claus
parents:
diff changeset
   477
                                              atX:left y:top
48194c26a46c Initial revision
claus
parents:
diff changeset
   478
                                            width:width height:height
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   479
        ].
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   480
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   481
        "and restart the window-group process"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   482
        windowGroup notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   483
            windowGroup startup
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   484
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   485
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   486
48194c26a46c Initial revision
claus
parents:
diff changeset
   487
    "restore controller"
48194c26a46c Initial revision
claus
parents:
diff changeset
   488
    controller := myController
48194c26a46c Initial revision
claus
parents:
diff changeset
   489
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   490
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   491
reinitStyle
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   492
    "this method is called for a style change"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   493
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   494
    |t|
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   495
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   496
    Grey := nil.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   497
    DefaultStyle := nil.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   498
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   499
    self initStyle.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   500
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   501
    drawableId notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   502
        "force a change"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   503
        t := borderWidth. borderWidth := nil. self borderWidth:t.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   504
        t := viewBackground. viewBackground := nil. self viewBackground:t.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   505
        self clear.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   506
        self redraw
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   507
    ].
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   508
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   509
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   510
recreate
48194c26a46c Initial revision
claus
parents:
diff changeset
   511
    "recreate (i.e. tell X about me) after a snapin"
48194c26a46c Initial revision
claus
parents:
diff changeset
   512
48194c26a46c Initial revision
claus
parents:
diff changeset
   513
    drawableId isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   514
        "associate cursor/colors to device"
48194c26a46c Initial revision
claus
parents:
diff changeset
   515
48194c26a46c Initial revision
claus
parents:
diff changeset
   516
        super recreate.
48194c26a46c Initial revision
claus
parents:
diff changeset
   517
48194c26a46c Initial revision
claus
parents:
diff changeset
   518
        borderColor notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   519
            borderColor := borderColor on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
   520
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   521
        shadowColor notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   522
            shadowColor := shadowColor on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
   523
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   524
        lightColor notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   525
            lightColor := lightColor on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
   526
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   527
        halfShadowColor notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   528
            halfShadowColor := halfShadowColor on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
   529
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   530
        halfLightColor notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   531
            halfLightColor := halfLightColor on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
   532
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   533
48194c26a46c Initial revision
claus
parents:
diff changeset
   534
        drawableId := device createWindowFor:self 
48194c26a46c Initial revision
claus
parents:
diff changeset
   535
                                        left:left top:top 
48194c26a46c Initial revision
claus
parents:
diff changeset
   536
                                       width:width height:height.
48194c26a46c Initial revision
claus
parents:
diff changeset
   537
48194c26a46c Initial revision
claus
parents:
diff changeset
   538
        extentChanged := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
   539
        originChanged := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
   540
48194c26a46c Initial revision
claus
parents:
diff changeset
   541
        borderShape notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   542
            device setWindowBorderShape:(borderShape id) in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
   543
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   544
        viewShape notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   545
            device setWindowShape:(viewShape id) in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
   546
        ].
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   547
        (backed notNil and:[backed ~~ false]) ifTrue:[
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   548
            device setBackingStore:backed in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
   549
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   550
        saveUnder ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   551
            device setSaveUnder:saveUnder in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
   552
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   553
48194c26a46c Initial revision
claus
parents:
diff changeset
   554
        font := font on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
   555
48194c26a46c Initial revision
claus
parents:
diff changeset
   556
        "XXX has to be changed: eventmasks are device specific -
48194c26a46c Initial revision
claus
parents:
diff changeset
   557
         will not allow restart on another Workstation-type"
48194c26a46c Initial revision
claus
parents:
diff changeset
   558
48194c26a46c Initial revision
claus
parents:
diff changeset
   559
        device setEventMask:eventMask in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
   560
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   561
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   562
48194c26a46c Initial revision
claus
parents:
diff changeset
   563
!View methodsFor:'accessing-mvc'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   564
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   565
windowGroup
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   566
    "return the window group. For old style views, return nil"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   567
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   568
    ^ windowGroup
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   569
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   570
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   571
controller
48194c26a46c Initial revision
claus
parents:
diff changeset
   572
    "return the controller. For non MVC views, return nil"
48194c26a46c Initial revision
claus
parents:
diff changeset
   573
48194c26a46c Initial revision
claus
parents:
diff changeset
   574
    ^ controller
48194c26a46c Initial revision
claus
parents:
diff changeset
   575
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   576
48194c26a46c Initial revision
claus
parents:
diff changeset
   577
controller:aController
48194c26a46c Initial revision
claus
parents:
diff changeset
   578
    "set the controller"
48194c26a46c Initial revision
claus
parents:
diff changeset
   579
48194c26a46c Initial revision
claus
parents:
diff changeset
   580
    controller := aController.
48194c26a46c Initial revision
claus
parents:
diff changeset
   581
    controller view:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
   582
    controller model:model
48194c26a46c Initial revision
claus
parents:
diff changeset
   583
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   584
48194c26a46c Initial revision
claus
parents:
diff changeset
   585
model
48194c26a46c Initial revision
claus
parents:
diff changeset
   586
    "return the model, for non-MVC views,
48194c26a46c Initial revision
claus
parents:
diff changeset
   587
     this is usually the receiver"
48194c26a46c Initial revision
claus
parents:
diff changeset
   588
48194c26a46c Initial revision
claus
parents:
diff changeset
   589
    ^ model
48194c26a46c Initial revision
claus
parents:
diff changeset
   590
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   591
48194c26a46c Initial revision
claus
parents:
diff changeset
   592
model:aModel
48194c26a46c Initial revision
claus
parents:
diff changeset
   593
    "set the model"
48194c26a46c Initial revision
claus
parents:
diff changeset
   594
48194c26a46c Initial revision
claus
parents:
diff changeset
   595
    model notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   596
        model removeDependent:self
48194c26a46c Initial revision
claus
parents:
diff changeset
   597
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   598
    model := aModel.
48194c26a46c Initial revision
claus
parents:
diff changeset
   599
    model notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   600
        aModel addDependent:self
48194c26a46c Initial revision
claus
parents:
diff changeset
   601
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   602
    controller notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   603
        controller model:aModel
48194c26a46c Initial revision
claus
parents:
diff changeset
   604
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   605
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   606
48194c26a46c Initial revision
claus
parents:
diff changeset
   607
on: anObject aspect: aspectMsg change: changeMsg menu: menuMsg
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   608
    "ST-80 compatibility: set model, aspect, change and menu
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   609
     messages - needs a view which uses these"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   610
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   611
    self model:anObject.
48194c26a46c Initial revision
claus
parents:
diff changeset
   612
    self aspect:aspectMsg.
48194c26a46c Initial revision
claus
parents:
diff changeset
   613
    self change:changeMsg.
48194c26a46c Initial revision
claus
parents:
diff changeset
   614
    self menu:menuMsg
48194c26a46c Initial revision
claus
parents:
diff changeset
   615
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   616
48194c26a46c Initial revision
claus
parents:
diff changeset
   617
aspect:aspectMsg
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   618
    aspectSymbol := aspectMsg
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   619
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   620
48194c26a46c Initial revision
claus
parents:
diff changeset
   621
change:changeMsg
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   622
    changeSymbol := changeMsg
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   623
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   624
48194c26a46c Initial revision
claus
parents:
diff changeset
   625
menu:menuMsg
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   626
    menuSymbol := menuMsg
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   627
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   628
48194c26a46c Initial revision
claus
parents:
diff changeset
   629
heightOfContents
48194c26a46c Initial revision
claus
parents:
diff changeset
   630
    "return the height of the contents in pixels 
48194c26a46c Initial revision
claus
parents:
diff changeset
   631
     - defaults to views visible area here"
48194c26a46c Initial revision
claus
parents:
diff changeset
   632
48194c26a46c Initial revision
claus
parents:
diff changeset
   633
    ^ self innerHeight
48194c26a46c Initial revision
claus
parents:
diff changeset
   634
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   635
48194c26a46c Initial revision
claus
parents:
diff changeset
   636
widthOfContents
48194c26a46c Initial revision
claus
parents:
diff changeset
   637
    "return the width of the contents in pixels
48194c26a46c Initial revision
claus
parents:
diff changeset
   638
     - defaults to views visible area here"
48194c26a46c Initial revision
claus
parents:
diff changeset
   639
48194c26a46c Initial revision
claus
parents:
diff changeset
   640
    ^ self innerWidth
48194c26a46c Initial revision
claus
parents:
diff changeset
   641
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   642
48194c26a46c Initial revision
claus
parents:
diff changeset
   643
!View methodsFor:'accessing-dimensions'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   644
48194c26a46c Initial revision
claus
parents:
diff changeset
   645
left:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   646
    "set the x position"
48194c26a46c Initial revision
claus
parents:
diff changeset
   647
48194c26a46c Initial revision
claus
parents:
diff changeset
   648
    self origin:(aNumber @ top)
48194c26a46c Initial revision
claus
parents:
diff changeset
   649
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   650
48194c26a46c Initial revision
claus
parents:
diff changeset
   651
top:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   652
    "set the y position"
48194c26a46c Initial revision
claus
parents:
diff changeset
   653
48194c26a46c Initial revision
claus
parents:
diff changeset
   654
    self origin:(left @ aNumber)
48194c26a46c Initial revision
claus
parents:
diff changeset
   655
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   656
48194c26a46c Initial revision
claus
parents:
diff changeset
   657
width:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   658
    "set the views width in pixels"
48194c26a46c Initial revision
claus
parents:
diff changeset
   659
48194c26a46c Initial revision
claus
parents:
diff changeset
   660
    self extent:(aNumber @ height)
48194c26a46c Initial revision
claus
parents:
diff changeset
   661
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   662
48194c26a46c Initial revision
claus
parents:
diff changeset
   663
height:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   664
    "set the views height in pixels"
48194c26a46c Initial revision
claus
parents:
diff changeset
   665
48194c26a46c Initial revision
claus
parents:
diff changeset
   666
    self extent:(width @ aNumber)
48194c26a46c Initial revision
claus
parents:
diff changeset
   667
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   668
48194c26a46c Initial revision
claus
parents:
diff changeset
   669
innerWidth
48194c26a46c Initial revision
claus
parents:
diff changeset
   670
    "return the width of the view minus any shadow-borders"
48194c26a46c Initial revision
claus
parents:
diff changeset
   671
48194c26a46c Initial revision
claus
parents:
diff changeset
   672
    (level == 0) ifTrue:[^ width].
48194c26a46c Initial revision
claus
parents:
diff changeset
   673
    ^ width - (2 * margin)
48194c26a46c Initial revision
claus
parents:
diff changeset
   674
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   675
48194c26a46c Initial revision
claus
parents:
diff changeset
   676
innerHeight
48194c26a46c Initial revision
claus
parents:
diff changeset
   677
    "return the height of the view minus any shadow-borders"
48194c26a46c Initial revision
claus
parents:
diff changeset
   678
48194c26a46c Initial revision
claus
parents:
diff changeset
   679
    (margin == 0) ifTrue:[^ height].
48194c26a46c Initial revision
claus
parents:
diff changeset
   680
    ^ height - (2 * margin)
48194c26a46c Initial revision
claus
parents:
diff changeset
   681
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   682
48194c26a46c Initial revision
claus
parents:
diff changeset
   683
extent:extent
48194c26a46c Initial revision
claus
parents:
diff changeset
   684
    "set the views extent; extent may be:
48194c26a46c Initial revision
claus
parents:
diff changeset
   685
     a point where integer fields mean pixel-values
48194c26a46c Initial revision
claus
parents:
diff changeset
   686
     and float values mean relative-to-superview;
48194c26a46c Initial revision
claus
parents:
diff changeset
   687
     or a block returning a point"
48194c26a46c Initial revision
claus
parents:
diff changeset
   688
48194c26a46c Initial revision
claus
parents:
diff changeset
   689
    |w h e|
48194c26a46c Initial revision
claus
parents:
diff changeset
   690
48194c26a46c Initial revision
claus
parents:
diff changeset
   691
    extent isBlock ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   692
        extentRule := extent.
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
   693
        "shown " drawableId notNil " " ifTrue:[    "23-feb-93"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   694
            self pixelExtent:(extent value)
48194c26a46c Initial revision
claus
parents:
diff changeset
   695
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   696
            extentChanged := true
48194c26a46c Initial revision
claus
parents:
diff changeset
   697
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   698
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   699
        w := extent x.
48194c26a46c Initial revision
claus
parents:
diff changeset
   700
        h := extent y.
48194c26a46c Initial revision
claus
parents:
diff changeset
   701
        ((w isMemberOf:Float) or:[h isMemberOf:Float]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   702
            relativeExtent := extent.
48194c26a46c Initial revision
claus
parents:
diff changeset
   703
            e := self extentFromRelativeExtent.
48194c26a46c Initial revision
claus
parents:
diff changeset
   704
            e isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   705
                extentChanged := true
48194c26a46c Initial revision
claus
parents:
diff changeset
   706
            ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   707
                self pixelExtent:e
48194c26a46c Initial revision
claus
parents:
diff changeset
   708
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   709
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   710
            self pixelExtent:extent
48194c26a46c Initial revision
claus
parents:
diff changeset
   711
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   712
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   713
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   714
48194c26a46c Initial revision
claus
parents:
diff changeset
   715
origin:origin
48194c26a46c Initial revision
claus
parents:
diff changeset
   716
    "set the views origin; origin may be:
48194c26a46c Initial revision
claus
parents:
diff changeset
   717
     a point where integer fields mean pixel-values
48194c26a46c Initial revision
claus
parents:
diff changeset
   718
     and float values mean relative-to-superview;
48194c26a46c Initial revision
claus
parents:
diff changeset
   719
     or a block returning a point"
48194c26a46c Initial revision
claus
parents:
diff changeset
   720
48194c26a46c Initial revision
claus
parents:
diff changeset
   721
    |newLeft newTop o|
48194c26a46c Initial revision
claus
parents:
diff changeset
   722
48194c26a46c Initial revision
claus
parents:
diff changeset
   723
    origin isBlock ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   724
        originRule := origin.
48194c26a46c Initial revision
claus
parents:
diff changeset
   725
        drawableId notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   726
            self pixelOrigin:(origin value)
48194c26a46c Initial revision
claus
parents:
diff changeset
   727
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   728
            originChanged := true
48194c26a46c Initial revision
claus
parents:
diff changeset
   729
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   730
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   731
        newLeft := origin x.
48194c26a46c Initial revision
claus
parents:
diff changeset
   732
        newTop := origin y.
48194c26a46c Initial revision
claus
parents:
diff changeset
   733
        ((newLeft isMemberOf:Float) or:[newTop isMemberOf:Float]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   734
            relativeOrigin := origin.
48194c26a46c Initial revision
claus
parents:
diff changeset
   735
            o := self originFromRelativeOrigin.
48194c26a46c Initial revision
claus
parents:
diff changeset
   736
            o isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   737
                originChanged := true
48194c26a46c Initial revision
claus
parents:
diff changeset
   738
            ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   739
                self pixelOrigin:o
48194c26a46c Initial revision
claus
parents:
diff changeset
   740
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   741
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   742
            self pixelOrigin:origin
48194c26a46c Initial revision
claus
parents:
diff changeset
   743
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   744
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   745
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   746
48194c26a46c Initial revision
claus
parents:
diff changeset
   747
origin:origin corner:corner 
48194c26a46c Initial revision
claus
parents:
diff changeset
   748
    "set both origin and extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   749
48194c26a46c Initial revision
claus
parents:
diff changeset
   750
    |newLeft newTop newRight newBot|
48194c26a46c Initial revision
claus
parents:
diff changeset
   751
48194c26a46c Initial revision
claus
parents:
diff changeset
   752
    "do it as one operation if possible"
48194c26a46c Initial revision
claus
parents:
diff changeset
   753
48194c26a46c Initial revision
claus
parents:
diff changeset
   754
    origin isBlock ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   755
        corner isBlock ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   756
            newLeft := origin x.
48194c26a46c Initial revision
claus
parents:
diff changeset
   757
            (newLeft isMemberOf:Float) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   758
                newTop := origin y.
48194c26a46c Initial revision
claus
parents:
diff changeset
   759
                (newTop isMemberOf:Float) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   760
                    newRight := corner x.
48194c26a46c Initial revision
claus
parents:
diff changeset
   761
                    (newRight isMemberOf:Float) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   762
                        newBot := corner y.
48194c26a46c Initial revision
claus
parents:
diff changeset
   763
                        (newBot isMemberOf:Float) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   764
                            self pixelOrigin:origin corner:corner 
48194c26a46c Initial revision
claus
parents:
diff changeset
   765
                        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   766
                    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   767
                ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   768
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   769
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   770
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   771
    self origin:origin.
48194c26a46c Initial revision
claus
parents:
diff changeset
   772
    self corner:corner 
48194c26a46c Initial revision
claus
parents:
diff changeset
   773
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   774
48194c26a46c Initial revision
claus
parents:
diff changeset
   775
origin:origin extent:extent
48194c26a46c Initial revision
claus
parents:
diff changeset
   776
    "set both origin and extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   777
48194c26a46c Initial revision
claus
parents:
diff changeset
   778
    |newLeft newTop newWidth newHeight|
48194c26a46c Initial revision
claus
parents:
diff changeset
   779
48194c26a46c Initial revision
claus
parents:
diff changeset
   780
    "do it as one operation if possible"
48194c26a46c Initial revision
claus
parents:
diff changeset
   781
48194c26a46c Initial revision
claus
parents:
diff changeset
   782
    origin isBlock ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   783
        extent isBlock ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   784
            newLeft := origin x.
48194c26a46c Initial revision
claus
parents:
diff changeset
   785
            (newLeft isMemberOf:Float) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   786
                newTop := origin y.
48194c26a46c Initial revision
claus
parents:
diff changeset
   787
                (newTop isMemberOf:Float) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   788
                    newWidth := extent x.
48194c26a46c Initial revision
claus
parents:
diff changeset
   789
                    (newWidth isMemberOf:Float) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   790
                        newHeight := extent y.
48194c26a46c Initial revision
claus
parents:
diff changeset
   791
                        (newHeight isMemberOf:Float) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   792
                            self pixelOrigin:origin extent:extent
48194c26a46c Initial revision
claus
parents:
diff changeset
   793
                        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   794
                    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   795
                ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   796
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   797
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   798
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   799
    self extent:extent.
48194c26a46c Initial revision
claus
parents:
diff changeset
   800
    self origin:origin
48194c26a46c Initial revision
claus
parents:
diff changeset
   801
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   802
48194c26a46c Initial revision
claus
parents:
diff changeset
   803
left:newLeft top:newTop width:newWidth height:newHeight
48194c26a46c Initial revision
claus
parents:
diff changeset
   804
    "another way of specifying origin and extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   805
48194c26a46c Initial revision
claus
parents:
diff changeset
   806
    self origin:(newLeft @ newTop) extent:(newWidth @ newHeight)
48194c26a46c Initial revision
claus
parents:
diff changeset
   807
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   808
48194c26a46c Initial revision
claus
parents:
diff changeset
   809
relativeOrigin
48194c26a46c Initial revision
claus
parents:
diff changeset
   810
    "return the relative origin or nil"
48194c26a46c Initial revision
claus
parents:
diff changeset
   811
48194c26a46c Initial revision
claus
parents:
diff changeset
   812
    ^ relativeOrigin
48194c26a46c Initial revision
claus
parents:
diff changeset
   813
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   814
48194c26a46c Initial revision
claus
parents:
diff changeset
   815
relativeCorner
48194c26a46c Initial revision
claus
parents:
diff changeset
   816
    "return the relative corner or nil"
48194c26a46c Initial revision
claus
parents:
diff changeset
   817
48194c26a46c Initial revision
claus
parents:
diff changeset
   818
    ^ relativeCorner
48194c26a46c Initial revision
claus
parents:
diff changeset
   819
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   820
48194c26a46c Initial revision
claus
parents:
diff changeset
   821
relativeExtent
48194c26a46c Initial revision
claus
parents:
diff changeset
   822
    "return the relative extent or nil"
48194c26a46c Initial revision
claus
parents:
diff changeset
   823
48194c26a46c Initial revision
claus
parents:
diff changeset
   824
    ^ relativeExtent
48194c26a46c Initial revision
claus
parents:
diff changeset
   825
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   826
48194c26a46c Initial revision
claus
parents:
diff changeset
   827
relativeOrigin:aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
   828
    "set the relative origin"
48194c26a46c Initial revision
claus
parents:
diff changeset
   829
48194c26a46c Initial revision
claus
parents:
diff changeset
   830
    relativeOrigin := aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
   831
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   832
48194c26a46c Initial revision
claus
parents:
diff changeset
   833
relativeCorner:aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
   834
    "set the relative corner"
48194c26a46c Initial revision
claus
parents:
diff changeset
   835
48194c26a46c Initial revision
claus
parents:
diff changeset
   836
    relativeCorner := aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
   837
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   838
48194c26a46c Initial revision
claus
parents:
diff changeset
   839
relativeExtent:aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
   840
    "set the relative extent"
48194c26a46c Initial revision
claus
parents:
diff changeset
   841
48194c26a46c Initial revision
claus
parents:
diff changeset
   842
    relativeExtent := aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
   843
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   844
48194c26a46c Initial revision
claus
parents:
diff changeset
   845
center:newCenter
48194c26a46c Initial revision
claus
parents:
diff changeset
   846
    "move the receiver so that newCenter, aPoint becomes the center point"
48194c26a46c Initial revision
claus
parents:
diff changeset
   847
48194c26a46c Initial revision
claus
parents:
diff changeset
   848
    self origin:(newCenter - ((width // 2) @ (height // 2)))
48194c26a46c Initial revision
claus
parents:
diff changeset
   849
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   850
48194c26a46c Initial revision
claus
parents:
diff changeset
   851
center
48194c26a46c Initial revision
claus
parents:
diff changeset
   852
    "return the point at the center of the receiver"
48194c26a46c Initial revision
claus
parents:
diff changeset
   853
48194c26a46c Initial revision
claus
parents:
diff changeset
   854
    ^ (left + (width // 2)) @ (top + (height // 2))
48194c26a46c Initial revision
claus
parents:
diff changeset
   855
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   856
48194c26a46c Initial revision
claus
parents:
diff changeset
   857
origin
48194c26a46c Initial revision
claus
parents:
diff changeset
   858
    "return the origin (in pixels)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   859
48194c26a46c Initial revision
claus
parents:
diff changeset
   860
    ^ left@top
48194c26a46c Initial revision
claus
parents:
diff changeset
   861
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   862
48194c26a46c Initial revision
claus
parents:
diff changeset
   863
originRelativeTo:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   864
    "return the origin (in pixels) relative to a superView"
48194c26a46c Initial revision
claus
parents:
diff changeset
   865
48194c26a46c Initial revision
claus
parents:
diff changeset
   866
    |currentView
48194c26a46c Initial revision
claus
parents:
diff changeset
   867
     org  "{ Class: Point }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   868
     sumX "{ Class: SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   869
     sumY "{ Class: SmallInteger }" |
48194c26a46c Initial revision
claus
parents:
diff changeset
   870
48194c26a46c Initial revision
claus
parents:
diff changeset
   871
    currentView := self.
48194c26a46c Initial revision
claus
parents:
diff changeset
   872
    sumX := 0.
48194c26a46c Initial revision
claus
parents:
diff changeset
   873
    sumY := 0.
48194c26a46c Initial revision
claus
parents:
diff changeset
   874
    [currentView notNil] whileTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   875
        (currentView == aView) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   876
            ^ (sumX @ sumY)
48194c26a46c Initial revision
claus
parents:
diff changeset
   877
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   878
        org := currentView origin.
48194c26a46c Initial revision
claus
parents:
diff changeset
   879
        sumX := sumX + org x.
48194c26a46c Initial revision
claus
parents:
diff changeset
   880
        sumY := sumY + org y.
48194c26a46c Initial revision
claus
parents:
diff changeset
   881
        currentView := currentView superView
48194c26a46c Initial revision
claus
parents:
diff changeset
   882
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   883
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   884
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   885
48194c26a46c Initial revision
claus
parents:
diff changeset
   886
left
48194c26a46c Initial revision
claus
parents:
diff changeset
   887
    "return the x position of the left border"
48194c26a46c Initial revision
claus
parents:
diff changeset
   888
48194c26a46c Initial revision
claus
parents:
diff changeset
   889
    ^ left
48194c26a46c Initial revision
claus
parents:
diff changeset
   890
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   891
48194c26a46c Initial revision
claus
parents:
diff changeset
   892
right
48194c26a46c Initial revision
claus
parents:
diff changeset
   893
    "return the x position of the right border"
48194c26a46c Initial revision
claus
parents:
diff changeset
   894
48194c26a46c Initial revision
claus
parents:
diff changeset
   895
    ^ left + width - 1
48194c26a46c Initial revision
claus
parents:
diff changeset
   896
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   897
48194c26a46c Initial revision
claus
parents:
diff changeset
   898
top
48194c26a46c Initial revision
claus
parents:
diff changeset
   899
    "return the y position of the top border"
48194c26a46c Initial revision
claus
parents:
diff changeset
   900
48194c26a46c Initial revision
claus
parents:
diff changeset
   901
    ^ top
48194c26a46c Initial revision
claus
parents:
diff changeset
   902
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   903
48194c26a46c Initial revision
claus
parents:
diff changeset
   904
bottom
48194c26a46c Initial revision
claus
parents:
diff changeset
   905
    "return the y position of the bottom border"
48194c26a46c Initial revision
claus
parents:
diff changeset
   906
48194c26a46c Initial revision
claus
parents:
diff changeset
   907
    ^ top + height - 1
48194c26a46c Initial revision
claus
parents:
diff changeset
   908
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   909
48194c26a46c Initial revision
claus
parents:
diff changeset
   910
corner
48194c26a46c Initial revision
claus
parents:
diff changeset
   911
    "return the lower right corner-point"
48194c26a46c Initial revision
claus
parents:
diff changeset
   912
48194c26a46c Initial revision
claus
parents:
diff changeset
   913
    ^ (left + width - 1) @ (top + height - 1)
48194c26a46c Initial revision
claus
parents:
diff changeset
   914
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   915
48194c26a46c Initial revision
claus
parents:
diff changeset
   916
corner:corner 
48194c26a46c Initial revision
claus
parents:
diff changeset
   917
    "set the views  corner;  corner may be:
48194c26a46c Initial revision
claus
parents:
diff changeset
   918
     a point where integer fields mean pixel-values
48194c26a46c Initial revision
claus
parents:
diff changeset
   919
     and float values mean relative-to-superview;
48194c26a46c Initial revision
claus
parents:
diff changeset
   920
     or a block returning a point"
48194c26a46c Initial revision
claus
parents:
diff changeset
   921
48194c26a46c Initial revision
claus
parents:
diff changeset
   922
    |x y c|
48194c26a46c Initial revision
claus
parents:
diff changeset
   923
48194c26a46c Initial revision
claus
parents:
diff changeset
   924
    corner isBlock ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   925
        cornerRule := corner.
48194c26a46c Initial revision
claus
parents:
diff changeset
   926
        drawableId notNil ifTrue:[    
48194c26a46c Initial revision
claus
parents:
diff changeset
   927
            self pixelCorner:(corner value)
48194c26a46c Initial revision
claus
parents:
diff changeset
   928
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   929
            extentChanged := true
48194c26a46c Initial revision
claus
parents:
diff changeset
   930
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   931
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   932
        x := corner x.
48194c26a46c Initial revision
claus
parents:
diff changeset
   933
        y := corner y.
48194c26a46c Initial revision
claus
parents:
diff changeset
   934
        ((x isMemberOf:Float) or:[y isMemberOf:Float]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   935
            relativeCorner := corner.
48194c26a46c Initial revision
claus
parents:
diff changeset
   936
            c := self cornerFromRelativeCorner.
48194c26a46c Initial revision
claus
parents:
diff changeset
   937
            c isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   938
                extentChanged := true
48194c26a46c Initial revision
claus
parents:
diff changeset
   939
            ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   940
                self pixelCorner:c
48194c26a46c Initial revision
claus
parents:
diff changeset
   941
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   942
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   943
            self pixelCorner:corner
48194c26a46c Initial revision
claus
parents:
diff changeset
   944
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   945
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   946
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   947
48194c26a46c Initial revision
claus
parents:
diff changeset
   948
!View methodsFor:'accessing-transformation'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   949
48194c26a46c Initial revision
claus
parents:
diff changeset
   950
window
48194c26a46c Initial revision
claus
parents:
diff changeset
   951
    ^ window
48194c26a46c Initial revision
claus
parents:
diff changeset
   952
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   953
48194c26a46c Initial revision
claus
parents:
diff changeset
   954
window:aRectangle
48194c26a46c Initial revision
claus
parents:
diff changeset
   955
    window := aRectangle.
48194c26a46c Initial revision
claus
parents:
diff changeset
   956
    subViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   957
        subViews do:[:s |
48194c26a46c Initial revision
claus
parents:
diff changeset
   958
            s superViewChangedSize
48194c26a46c Initial revision
claus
parents:
diff changeset
   959
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   960
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   961
48194c26a46c Initial revision
claus
parents:
diff changeset
   962
"
48194c26a46c Initial revision
claus
parents:
diff changeset
   963
    viewport isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   964
        viewport := aRectangle.
48194c26a46c Initial revision
claus
parents:
diff changeset
   965
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   966
"
48194c26a46c Initial revision
claus
parents:
diff changeset
   967
"
48194c26a46c Initial revision
claus
parents:
diff changeset
   968
    superView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   969
        self superViewChangedSize
48194c26a46c Initial revision
claus
parents:
diff changeset
   970
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   971
        originChanged := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
   972
        extentChanged := true
48194c26a46c Initial revision
claus
parents:
diff changeset
   973
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   974
"
48194c26a46c Initial revision
claus
parents:
diff changeset
   975
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   976
48194c26a46c Initial revision
claus
parents:
diff changeset
   977
window:aRectangle viewport:vRect
48194c26a46c Initial revision
claus
parents:
diff changeset
   978
    window := aRectangle.
48194c26a46c Initial revision
claus
parents:
diff changeset
   979
    self viewport:vRect.
48194c26a46c Initial revision
claus
parents:
diff changeset
   980
    subViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   981
        subViews do:[:s |
48194c26a46c Initial revision
claus
parents:
diff changeset
   982
            s superViewChangedSize
48194c26a46c Initial revision
claus
parents:
diff changeset
   983
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   984
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   985
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   986
48194c26a46c Initial revision
claus
parents:
diff changeset
   987
transformation 
48194c26a46c Initial revision
claus
parents:
diff changeset
   988
    transformation isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   989
        superView isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   990
            transformation := WindowingTransformation window:window
48194c26a46c Initial revision
claus
parents:
diff changeset
   991
                                                    viewport:(0@0 extent:self extent)
48194c26a46c Initial revision
claus
parents:
diff changeset
   992
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   993
            window isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   994
                window := (0 @ 0) corner:(1 @ 1)
48194c26a46c Initial revision
claus
parents:
diff changeset
   995
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   996
            transformation := WindowingTransformation window:window
48194c26a46c Initial revision
claus
parents:
diff changeset
   997
                                                    viewport:(self origin extent:self extent)
48194c26a46c Initial revision
claus
parents:
diff changeset
   998
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   999
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1000
    ^ transformation
48194c26a46c Initial revision
claus
parents:
diff changeset
  1001
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1002
48194c26a46c Initial revision
claus
parents:
diff changeset
  1003
displayTransformation
48194c26a46c Initial revision
claus
parents:
diff changeset
  1004
    "ST-80 compatibility - ST/X does not draw onto the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1005
48194c26a46c Initial revision
claus
parents:
diff changeset
  1006
    ^ self transformation
48194c26a46c Initial revision
claus
parents:
diff changeset
  1007
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1008
48194c26a46c Initial revision
claus
parents:
diff changeset
  1009
displayTransform:aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
  1010
    "given a point in window coordinate, make pixel coordinate"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1011
48194c26a46c Initial revision
claus
parents:
diff changeset
  1012
    |nx ny|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1013
48194c26a46c Initial revision
claus
parents:
diff changeset
  1014
    nx := aPoint x - window left * width / window width.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1015
    ny := aPoint y - window top * height / window height.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1016
    ^ nx @ ny
48194c26a46c Initial revision
claus
parents:
diff changeset
  1017
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1018
48194c26a46c Initial revision
claus
parents:
diff changeset
  1019
inverseDisplayTransform:aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
  1020
    "given a pixel coordinate, make window coordinate"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1021
48194c26a46c Initial revision
claus
parents:
diff changeset
  1022
    |nx ny|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1023
48194c26a46c Initial revision
claus
parents:
diff changeset
  1024
    window isNil ifTrue:[^ aPoint].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1025
    nx := aPoint x * window width / width + window left.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1026
    ny := aPoint y * window height / height + window top.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1027
    ^ nx @ ny
48194c26a46c Initial revision
claus
parents:
diff changeset
  1028
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1029
48194c26a46c Initial revision
claus
parents:
diff changeset
  1030
viewport:aRectangle
48194c26a46c Initial revision
claus
parents:
diff changeset
  1031
    "define my extend in my superviews coordinate-system."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1032
48194c26a46c Initial revision
claus
parents:
diff changeset
  1033
    |relW relH relX relY winW winH|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1034
48194c26a46c Initial revision
claus
parents:
diff changeset
  1035
    viewport := aRectangle.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1036
    self dimensionFromViewport
48194c26a46c Initial revision
claus
parents:
diff changeset
  1037
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1038
    superView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1039
        superView window isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1040
            winW := 1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1041
            winH := 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1042
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1043
            winW := superView window width.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1044
            winH := superView window height
48194c26a46c Initial revision
claus
parents:
diff changeset
  1045
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1046
        relW := (aRectangle width / winW) asFloat.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1047
        relH := (aRectangle height / winH) asFloat.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1048
        relX := (aRectangle left / winW) asFloat.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1049
        relY := (aRectangle top / winH) asFloat.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1050
        self origin:(relX @ relY) extent:(relW @ relH)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1051
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1052
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1053
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1054
48194c26a46c Initial revision
claus
parents:
diff changeset
  1055
viewRectangle
48194c26a46c Initial revision
claus
parents:
diff changeset
  1056
    "return the inside area"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1057
48194c26a46c Initial revision
claus
parents:
diff changeset
  1058
    |m2|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1059
48194c26a46c Initial revision
claus
parents:
diff changeset
  1060
    innerClipRect notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1061
        ^ innerClipRect
48194c26a46c Initial revision
claus
parents:
diff changeset
  1062
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1063
    m2 := margin + margin.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1064
48194c26a46c Initial revision
claus
parents:
diff changeset
  1065
    ^ (margin @ margin) extent:((width - m2) @ (height - m2))
48194c26a46c Initial revision
claus
parents:
diff changeset
  1066
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1067
48194c26a46c Initial revision
claus
parents:
diff changeset
  1068
viewOrigin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1069
    "return the viewOrigin; thats the coordinate of the contents 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1070
     which is shown topLeft in the view 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1071
     (i.e. the origin of the visible part of the contents)."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1072
48194c26a46c Initial revision
claus
parents:
diff changeset
  1073
    ^ viewOrigin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1074
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1075
48194c26a46c Initial revision
claus
parents:
diff changeset
  1076
viewOrigin:aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
  1077
    "set the viewOrigin - i.e. virtually scroll without redrawing"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1078
48194c26a46c Initial revision
claus
parents:
diff changeset
  1079
    viewOrigin := aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
  1080
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1081
48194c26a46c Initial revision
claus
parents:
diff changeset
  1082
xOriginOfContents
48194c26a46c Initial revision
claus
parents:
diff changeset
  1083
    "return the x coordinate of the viewOrigin; used by scrollBars to compute
48194c26a46c Initial revision
claus
parents:
diff changeset
  1084
     thumb position"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1085
48194c26a46c Initial revision
claus
parents:
diff changeset
  1086
    ^ viewOrigin x
48194c26a46c Initial revision
claus
parents:
diff changeset
  1087
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1088
48194c26a46c Initial revision
claus
parents:
diff changeset
  1089
yOriginOfContents
48194c26a46c Initial revision
claus
parents:
diff changeset
  1090
    "return the y coordinate of the viewOrigin; used by scrollBars to compute
48194c26a46c Initial revision
claus
parents:
diff changeset
  1091
     thumb position"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1092
48194c26a46c Initial revision
claus
parents:
diff changeset
  1093
    ^ viewOrigin y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1094
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1095
48194c26a46c Initial revision
claus
parents:
diff changeset
  1096
!View methodsFor:'accessing-hierarchy'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1097
48194c26a46c Initial revision
claus
parents:
diff changeset
  1098
superView
48194c26a46c Initial revision
claus
parents:
diff changeset
  1099
    "return my superView"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1100
48194c26a46c Initial revision
claus
parents:
diff changeset
  1101
    ^ superView
48194c26a46c Initial revision
claus
parents:
diff changeset
  1102
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1103
48194c26a46c Initial revision
claus
parents:
diff changeset
  1104
superView:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
  1105
    "set my superView to be aView"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1106
48194c26a46c Initial revision
claus
parents:
diff changeset
  1107
    superView := aView
48194c26a46c Initial revision
claus
parents:
diff changeset
  1108
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1109
48194c26a46c Initial revision
claus
parents:
diff changeset
  1110
topView
48194c26a46c Initial revision
claus
parents:
diff changeset
  1111
    "return the topView - thats the one with no superview"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1112
48194c26a46c Initial revision
claus
parents:
diff changeset
  1113
    |v|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1114
48194c26a46c Initial revision
claus
parents:
diff changeset
  1115
    v := self.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1116
    [v notNil] whileTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1117
        v superView isNil ifTrue:[^ v].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1118
        v := v superView
48194c26a46c Initial revision
claus
parents:
diff changeset
  1119
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1120
48194c26a46c Initial revision
claus
parents:
diff changeset
  1121
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1122
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1123
48194c26a46c Initial revision
claus
parents:
diff changeset
  1124
subViews
48194c26a46c Initial revision
claus
parents:
diff changeset
  1125
    "return the collection of subviews"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1126
48194c26a46c Initial revision
claus
parents:
diff changeset
  1127
    ^ subViews
48194c26a46c Initial revision
claus
parents:
diff changeset
  1128
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1129
48194c26a46c Initial revision
claus
parents:
diff changeset
  1130
subViews:aListOfViews
48194c26a46c Initial revision
claus
parents:
diff changeset
  1131
    "set the collection of subviews"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1132
48194c26a46c Initial revision
claus
parents:
diff changeset
  1133
    subViews := aListOfViews.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1134
    subViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1135
        subViews do:[:view |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1136
            view superView:self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1137
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1138
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1139
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1140
48194c26a46c Initial revision
claus
parents:
diff changeset
  1141
!View methodsFor:'accessing-misc'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1142
48194c26a46c Initial revision
claus
parents:
diff changeset
  1143
viewGravity
48194c26a46c Initial revision
claus
parents:
diff changeset
  1144
    "return the viewGravity - thats the direction where the view will move
48194c26a46c Initial revision
claus
parents:
diff changeset
  1145
     when the superView is resized."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1146
48194c26a46c Initial revision
claus
parents:
diff changeset
  1147
    ^ viewGravity
48194c26a46c Initial revision
claus
parents:
diff changeset
  1148
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1149
48194c26a46c Initial revision
claus
parents:
diff changeset
  1150
viewGravity:gravity
48194c26a46c Initial revision
claus
parents:
diff changeset
  1151
    "set the viewGravity - thats the direction where the view will move
48194c26a46c Initial revision
claus
parents:
diff changeset
  1152
     when the superView is resized."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1153
48194c26a46c Initial revision
claus
parents:
diff changeset
  1154
    viewGravity := gravity
48194c26a46c Initial revision
claus
parents:
diff changeset
  1155
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1156
48194c26a46c Initial revision
claus
parents:
diff changeset
  1157
bitGravity
48194c26a46c Initial revision
claus
parents:
diff changeset
  1158
    "return the bitGravity - thats the direction where the contents will move
48194c26a46c Initial revision
claus
parents:
diff changeset
  1159
     when the the view is resized."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1160
48194c26a46c Initial revision
claus
parents:
diff changeset
  1161
    ^ bitGravity
48194c26a46c Initial revision
claus
parents:
diff changeset
  1162
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1163
48194c26a46c Initial revision
claus
parents:
diff changeset
  1164
inputOnly
48194c26a46c Initial revision
claus
parents:
diff changeset
  1165
    "return true, if this view is an input-only view;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1166
     input only views are transparent and can be layed on top of a view to
48194c26a46c Initial revision
claus
parents:
diff changeset
  1167
     catch its input"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1168
48194c26a46c Initial revision
claus
parents:
diff changeset
  1169
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
  1170
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1171
48194c26a46c Initial revision
claus
parents:
diff changeset
  1172
createOnTop
48194c26a46c Initial revision
claus
parents:
diff changeset
  1173
    "return true, if this view should be put on top (raised) automatically.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1174
     usually this is true for alertBoxes etc."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1175
48194c26a46c Initial revision
claus
parents:
diff changeset
  1176
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
  1177
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1178
48194c26a46c Initial revision
claus
parents:
diff changeset
  1179
canDrop:anObjectOrCollection
48194c26a46c Initial revision
claus
parents:
diff changeset
  1180
    "return true, if anObjectOrCollection can be
48194c26a46c Initial revision
claus
parents:
diff changeset
  1181
     dropped in the receiver. This method should be
48194c26a46c Initial revision
claus
parents:
diff changeset
  1182
     redefined in views which can take objects"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1183
48194c26a46c Initial revision
claus
parents:
diff changeset
  1184
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
  1185
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1186
48194c26a46c Initial revision
claus
parents:
diff changeset
  1187
is3D
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1188
    "return true, if my style is some kind of 3D style - will change"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1189
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1190
    ^ #(next iris openwin view3D motif) includes:style
48194c26a46c Initial revision
claus
parents:
diff changeset
  1191
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1192
48194c26a46c Initial revision
claus
parents:
diff changeset
  1193
shown
48194c26a46c Initial revision
claus
parents:
diff changeset
  1194
    "return true if the view is shown; false if hidden"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1195
48194c26a46c Initial revision
claus
parents:
diff changeset
  1196
    ^ shown
48194c26a46c Initial revision
claus
parents:
diff changeset
  1197
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1198
48194c26a46c Initial revision
claus
parents:
diff changeset
  1199
isCollapsed
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1200
    "ST80 compatibility: return true if the view is not shown (i.e. iconified)"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1201
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1202
    ^ shown not
48194c26a46c Initial revision
claus
parents:
diff changeset
  1203
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1204
48194c26a46c Initial revision
claus
parents:
diff changeset
  1205
hidden:aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
  1206
    "if the argument is true, the receiver view will not
48194c26a46c Initial revision
claus
parents:
diff changeset
  1207
     be realized automatically when superview is realized"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1208
48194c26a46c Initial revision
claus
parents:
diff changeset
  1209
    hidden := aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
  1210
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1211
48194c26a46c Initial revision
claus
parents:
diff changeset
  1212
hidden
48194c26a46c Initial revision
claus
parents:
diff changeset
  1213
    "return true, if the view does not want to be realized
48194c26a46c Initial revision
claus
parents:
diff changeset
  1214
     automatically when superview is realized"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1215
48194c26a46c Initial revision
claus
parents:
diff changeset
  1216
    ^ hidden
48194c26a46c Initial revision
claus
parents:
diff changeset
  1217
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1218
48194c26a46c Initial revision
claus
parents:
diff changeset
  1219
lower
48194c26a46c Initial revision
claus
parents:
diff changeset
  1220
    "bring to back"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1221
48194c26a46c Initial revision
claus
parents:
diff changeset
  1222
    drawableId isNil ifTrue:[self create].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1223
    device lowerWindow:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1224
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1225
48194c26a46c Initial revision
claus
parents:
diff changeset
  1226
raise
48194c26a46c Initial revision
claus
parents:
diff changeset
  1227
    "bring to front"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1228
48194c26a46c Initial revision
claus
parents:
diff changeset
  1229
    drawableId isNil ifTrue:[self create].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1230
    device raiseWindow:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1231
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1232
48194c26a46c Initial revision
claus
parents:
diff changeset
  1233
!View methodsFor:'accessing-bg & border'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1234
48194c26a46c Initial revision
claus
parents:
diff changeset
  1235
viewBackground:something
48194c26a46c Initial revision
claus
parents:
diff changeset
  1236
    "set the viewBackground to something, a color, pixel or form.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1237
     if its a color and we run on a color display, also set shadow and light
48194c26a46c Initial revision
claus
parents:
diff changeset
  1238
     colors."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1239
48194c26a46c Initial revision
claus
parents:
diff changeset
  1240
    (something isKindOf:Color) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1241
        (device hasColors or:[device hasGreyscales]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1242
            shadowColor := something darkened.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1243
            lightColor := something lightened
48194c26a46c Initial revision
claus
parents:
diff changeset
  1244
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1245
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1246
    super viewBackground:something
48194c26a46c Initial revision
claus
parents:
diff changeset
  1247
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1248
48194c26a46c Initial revision
claus
parents:
diff changeset
  1249
borderColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  1250
    "return my borderColor"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1251
48194c26a46c Initial revision
claus
parents:
diff changeset
  1252
    ^ borderColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  1253
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1254
48194c26a46c Initial revision
claus
parents:
diff changeset
  1255
borderColor:aColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  1256
    "set my borderColor"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1257
48194c26a46c Initial revision
claus
parents:
diff changeset
  1258
    |id dither|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1259
48194c26a46c Initial revision
claus
parents:
diff changeset
  1260
    (aColor ~~ borderColor) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1261
        borderColor := aColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1262
        drawableId notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1263
            borderColor := borderColor on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1264
            id := borderColor colorId.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1265
            id notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1266
                device setWindowBorderColor:id in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1267
            ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1268
                dither := borderColor ditherForm.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1269
                dither notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1270
                    device setWindowBorderPixmap:(dither id) in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1271
                ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1272
                    'bad borderColor' printNewline
48194c26a46c Initial revision
claus
parents:
diff changeset
  1273
                ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1274
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1275
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1276
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1277
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1278
48194c26a46c Initial revision
claus
parents:
diff changeset
  1279
borderWidth
48194c26a46c Initial revision
claus
parents:
diff changeset
  1280
    "return my borderWidth"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1281
48194c26a46c Initial revision
claus
parents:
diff changeset
  1282
    ^ borderWidth
48194c26a46c Initial revision
claus
parents:
diff changeset
  1283
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1284
48194c26a46c Initial revision
claus
parents:
diff changeset
  1285
borderWidth:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
  1286
    "set my borderWidth"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1287
48194c26a46c Initial revision
claus
parents:
diff changeset
  1288
    (aNumber ~~ borderWidth) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1289
        borderWidth := aNumber.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1290
        drawableId notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1291
            device setWindowBorderWidth:aNumber in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1292
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1293
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1294
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1295
48194c26a46c Initial revision
claus
parents:
diff changeset
  1296
borderShape:aForm
48194c26a46c Initial revision
claus
parents:
diff changeset
  1297
    "set the borderShape to aForm"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1298
48194c26a46c Initial revision
claus
parents:
diff changeset
  1299
    borderShape := aForm.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1300
    drawableId notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1301
        device setWindowBorderShape:(aForm id) in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1302
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1303
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1304
48194c26a46c Initial revision
claus
parents:
diff changeset
  1305
viewShape:aForm
48194c26a46c Initial revision
claus
parents:
diff changeset
  1306
    "set the viewShape to aForm"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1307
48194c26a46c Initial revision
claus
parents:
diff changeset
  1308
    viewShape := aForm.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1309
    drawableId notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1310
        device setWindowShape:(aForm id) in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1311
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1312
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1313
48194c26a46c Initial revision
claus
parents:
diff changeset
  1314
name
48194c26a46c Initial revision
claus
parents:
diff changeset
  1315
    "return my name component to be used for resource-access"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1316
48194c26a46c Initial revision
claus
parents:
diff changeset
  1317
    ^ name
48194c26a46c Initial revision
claus
parents:
diff changeset
  1318
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1319
48194c26a46c Initial revision
claus
parents:
diff changeset
  1320
fullName
48194c26a46c Initial revision
claus
parents:
diff changeset
  1321
    "return my full name to be used for resource-access"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1322
48194c26a46c Initial revision
claus
parents:
diff changeset
  1323
    superView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1324
        ^ superView fullName , '.' , name
48194c26a46c Initial revision
claus
parents:
diff changeset
  1325
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1326
    ^ name
48194c26a46c Initial revision
claus
parents:
diff changeset
  1327
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1328
48194c26a46c Initial revision
claus
parents:
diff changeset
  1329
name:aString
48194c26a46c Initial revision
claus
parents:
diff changeset
  1330
    "set my name component to be used for resource-access"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1331
48194c26a46c Initial revision
claus
parents:
diff changeset
  1332
    name := aString
48194c26a46c Initial revision
claus
parents:
diff changeset
  1333
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1334
48194c26a46c Initial revision
claus
parents:
diff changeset
  1335
keyboardHandler:someOne
48194c26a46c Initial revision
claus
parents:
diff changeset
  1336
    "set my keyboardHandler"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1337
48194c26a46c Initial revision
claus
parents:
diff changeset
  1338
    keyboardHandler := someOne
48194c26a46c Initial revision
claus
parents:
diff changeset
  1339
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1340
48194c26a46c Initial revision
claus
parents:
diff changeset
  1341
level
48194c26a46c Initial revision
claus
parents:
diff changeset
  1342
    "return my level relative to superView (3D)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1343
48194c26a46c Initial revision
claus
parents:
diff changeset
  1344
    ^ level
48194c26a46c Initial revision
claus
parents:
diff changeset
  1345
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1346
48194c26a46c Initial revision
claus
parents:
diff changeset
  1347
level:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
  1348
    "set my level relative to superView (3D)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1349
48194c26a46c Initial revision
claus
parents:
diff changeset
  1350
    |oldMargin how|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1351
48194c26a46c Initial revision
claus
parents:
diff changeset
  1352
    self is3D ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1353
        (aNumber ~~ level) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1354
            level := aNumber.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1355
            oldMargin := margin.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1356
            margin := level abs.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1357
48194c26a46c Initial revision
claus
parents:
diff changeset
  1358
            realized ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1359
                (margin > oldMargin) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1360
                    how := #smaller
48194c26a46c Initial revision
claus
parents:
diff changeset
  1361
                ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1362
                    how := #larger
48194c26a46c Initial revision
claus
parents:
diff changeset
  1363
                ].
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1364
                self sizeChanged:how.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1365
                self computeInnerClip.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1366
                self redrawEdges
48194c26a46c Initial revision
claus
parents:
diff changeset
  1367
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1368
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1369
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1370
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1371
48194c26a46c Initial revision
claus
parents:
diff changeset
  1372
margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1373
    "return my margin - this is usually the level,
48194c26a46c Initial revision
claus
parents:
diff changeset
  1374
     but can be more for some views"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1375
48194c26a46c Initial revision
claus
parents:
diff changeset
  1376
    ^ margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1377
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1378
48194c26a46c Initial revision
claus
parents:
diff changeset
  1379
widthIncludingBorder
48194c26a46c Initial revision
claus
parents:
diff changeset
  1380
    "return my width including border"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1381
48194c26a46c Initial revision
claus
parents:
diff changeset
  1382
    ^ width + (2*borderWidth)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1383
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1384
48194c26a46c Initial revision
claus
parents:
diff changeset
  1385
heightIncludingBorder
48194c26a46c Initial revision
claus
parents:
diff changeset
  1386
    "return my height including border"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1387
48194c26a46c Initial revision
claus
parents:
diff changeset
  1388
    ^ height + (2*borderWidth)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1389
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1390
48194c26a46c Initial revision
claus
parents:
diff changeset
  1391
!View methodsFor:'adding & removing components'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1392
48194c26a46c Initial revision
claus
parents:
diff changeset
  1393
addComponent:aComponent
48194c26a46c Initial revision
claus
parents:
diff changeset
  1394
    components isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1395
        components := IdentitySet new
48194c26a46c Initial revision
claus
parents:
diff changeset
  1396
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1397
    components add:aComponent
48194c26a46c Initial revision
claus
parents:
diff changeset
  1398
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1399
48194c26a46c Initial revision
claus
parents:
diff changeset
  1400
removeComponent:aComponent
48194c26a46c Initial revision
claus
parents:
diff changeset
  1401
    components isNil ifTrue:[^self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1402
    components remove:aComponent ifAbsent:[]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1403
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1404
48194c26a46c Initial revision
claus
parents:
diff changeset
  1405
addSubView:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
  1406
    "add a view to the collection of subviews"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1407
48194c26a46c Initial revision
claus
parents:
diff changeset
  1408
    subViews isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1409
        subViews := OrderedCollection new
48194c26a46c Initial revision
claus
parents:
diff changeset
  1410
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1411
    subViews add:aView.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1412
    aView superView:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1413
    (aView device ~~ device) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1414
        'warning subview (' print. aView class name print.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1415
        ') has different device than me (' print.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1416
        self class name print. ').' printNewline.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1417
        aView device:device
48194c26a46c Initial revision
claus
parents:
diff changeset
  1418
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1419
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1420
48194c26a46c Initial revision
claus
parents:
diff changeset
  1421
addSubView:aView in:bounds borderWidth:bw
48194c26a46c Initial revision
claus
parents:
diff changeset
  1422
    aView borderWidth:bw.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1423
    aView origin:(bounds origin x asFloat) @ (bounds origin y asFloat)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1424
          extent:(bounds extent x asFloat) @ (bounds extent y asFloat).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1425
    self addSubView:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
  1426
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1427
48194c26a46c Initial revision
claus
parents:
diff changeset
  1428
add:aView in:bounds
48194c26a46c Initial revision
claus
parents:
diff changeset
  1429
    aView origin:(bounds origin x asFloat) @ (bounds origin y asFloat)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1430
          extent:(bounds extent x asFloat) @ (bounds extent y asFloat).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1431
    self addSubView:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
  1432
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1433
48194c26a46c Initial revision
claus
parents:
diff changeset
  1434
addSubView:aView viewport:aRectangle
48194c26a46c Initial revision
claus
parents:
diff changeset
  1435
    "Adds aView to the views list of subviews and uses the
48194c26a46c Initial revision
claus
parents:
diff changeset
  1436
     existing subviews window and the new viewport to position it"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1437
48194c26a46c Initial revision
claus
parents:
diff changeset
  1438
    self addSubView:aView.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1439
    aView viewport:aRectangle
48194c26a46c Initial revision
claus
parents:
diff changeset
  1440
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1441
48194c26a46c Initial revision
claus
parents:
diff changeset
  1442
addSubView:aView window:aWindowRectangle viewport:aViewportRectangle
48194c26a46c Initial revision
claus
parents:
diff changeset
  1443
    "Adds aView to the views list of subviews and uses 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1444
     aWindowRectangle and aViewportRectangle to position it"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1445
48194c26a46c Initial revision
claus
parents:
diff changeset
  1446
    self addSubView:aView.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1447
    aView window:aWindowRectangle.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1448
    aView viewport:aViewportRectangle
48194c26a46c Initial revision
claus
parents:
diff changeset
  1449
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1450
48194c26a46c Initial revision
claus
parents:
diff changeset
  1451
removeSubView:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
  1452
    "remove a view from the collection of subviews"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1453
48194c26a46c Initial revision
claus
parents:
diff changeset
  1454
    subViews remove:aView ifAbsent:[nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1455
    (subViews size == 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1456
        subViews := nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1457
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1458
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1459
48194c26a46c Initial revision
claus
parents:
diff changeset
  1460
!View methodsFor:'ST-80 compatibility'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1461
48194c26a46c Initial revision
claus
parents:
diff changeset
  1462
on:aModel aspect:aspect change:change list:list menu:menu
48194c26a46c Initial revision
claus
parents:
diff changeset
  1463
    "ST-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1464
48194c26a46c Initial revision
claus
parents:
diff changeset
  1465
    aspectSymbol := aspect.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1466
    changeSymbol := change.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1467
    menuSymbol := menu.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1468
    self model:aModel
48194c26a46c Initial revision
claus
parents:
diff changeset
  1469
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1470
48194c26a46c Initial revision
claus
parents:
diff changeset
  1471
sensor
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1472
    windowGroup notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1473
        ^ windowGroup sensor.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1474
    ].
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1475
    ^ nil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1476
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1477
48194c26a46c Initial revision
claus
parents:
diff changeset
  1478
open
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1479
    ProcessorScheduler isPureEventDriven ifFalse:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1480
        windowGroup isNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1481
            windowGroup := WindowGroup new.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1482
            windowGroup addTopView:self.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1483
        ].
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1484
        windowGroup startup.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1485
    ].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1486
    ^ self realize
48194c26a46c Initial revision
claus
parents:
diff changeset
  1487
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1488
48194c26a46c Initial revision
claus
parents:
diff changeset
  1489
update
48194c26a46c Initial revision
claus
parents:
diff changeset
  1490
    ^ self redraw
48194c26a46c Initial revision
claus
parents:
diff changeset
  1491
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1492
48194c26a46c Initial revision
claus
parents:
diff changeset
  1493
update:aspect
48194c26a46c Initial revision
claus
parents:
diff changeset
  1494
    "an update request - should be redefined in subclasses"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1495
48194c26a46c Initial revision
claus
parents:
diff changeset
  1496
    ^ self update
48194c26a46c Initial revision
claus
parents:
diff changeset
  1497
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1498
48194c26a46c Initial revision
claus
parents:
diff changeset
  1499
update:aspect with:anObject
48194c26a46c Initial revision
claus
parents:
diff changeset
  1500
    "an update request - should be redefined in subclasses"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1501
48194c26a46c Initial revision
claus
parents:
diff changeset
  1502
    aspect == #rectangle ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1503
        ^ self update:#all
48194c26a46c Initial revision
claus
parents:
diff changeset
  1504
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1505
    ^ self update:aspect
48194c26a46c Initial revision
claus
parents:
diff changeset
  1506
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1507
48194c26a46c Initial revision
claus
parents:
diff changeset
  1508
!View methodsFor:'informing others of changes'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1509
48194c26a46c Initial revision
claus
parents:
diff changeset
  1510
originWillChange
48194c26a46c Initial revision
claus
parents:
diff changeset
  1511
    "this one is sent, just before viewOrigin changes -
48194c26a46c Initial revision
claus
parents:
diff changeset
  1512
     gives subclasses a chance to catch scrolls easily
48194c26a46c Initial revision
claus
parents:
diff changeset
  1513
     (for example to hide cursor before scroll)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1514
48194c26a46c Initial revision
claus
parents:
diff changeset
  1515
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1516
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1517
48194c26a46c Initial revision
claus
parents:
diff changeset
  1518
originChangeAction:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1519
    "set the action, aBlock to be evaluated whenever my orgin changes
48194c26a46c Initial revision
claus
parents:
diff changeset
  1520
     - to allow for scrollBars to track contents"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1521
48194c26a46c Initial revision
claus
parents:
diff changeset
  1522
    originChangeAction := aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1523
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1524
48194c26a46c Initial revision
claus
parents:
diff changeset
  1525
originChanged:delta
48194c26a46c Initial revision
claus
parents:
diff changeset
  1526
    "this one is sent, after my origin changed -
48194c26a46c Initial revision
claus
parents:
diff changeset
  1527
     (for example to redraw cursor)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1528
48194c26a46c Initial revision
claus
parents:
diff changeset
  1529
    originChangeAction notNil ifTrue:[originChangeAction value:self]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1530
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1531
48194c26a46c Initial revision
claus
parents:
diff changeset
  1532
contentsChangeAction:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1533
    "set the action, aBlock to be evaluated whenever my contents changes
48194c26a46c Initial revision
claus
parents:
diff changeset
  1534
     - to allow for scrollBars to track contents"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1535
48194c26a46c Initial revision
claus
parents:
diff changeset
  1536
    contentsChangeAction := aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1537
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1538
48194c26a46c Initial revision
claus
parents:
diff changeset
  1539
contentsChanged
48194c26a46c Initial revision
claus
parents:
diff changeset
  1540
    "this one is sent, whenever contents changes size -
48194c26a46c Initial revision
claus
parents:
diff changeset
  1541
     gives subclasses a chance to catch it (i.e. scrollbars etc)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1542
48194c26a46c Initial revision
claus
parents:
diff changeset
  1543
    contentsChangeAction notNil ifTrue:[contentsChangeAction value:self]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1544
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1545
48194c26a46c Initial revision
claus
parents:
diff changeset
  1546
!View methodsFor:'scrolling'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1547
48194c26a46c Initial revision
claus
parents:
diff changeset
  1548
widthForScrollBetween:firstLine and:lastLine
48194c26a46c Initial revision
claus
parents:
diff changeset
  1549
    "answer the width in pixels for a scroll between firstLine and lastLine
48194c26a46c Initial revision
claus
parents:
diff changeset
  1550
     - return full width here since we do not know how wide contents is"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1551
48194c26a46c Initial revision
claus
parents:
diff changeset
  1552
    ^ (width - margin - margin)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1553
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1554
48194c26a46c Initial revision
claus
parents:
diff changeset
  1555
scrollVerticalToPercent:percent
48194c26a46c Initial revision
claus
parents:
diff changeset
  1556
    "scroll to a position given in percent of total"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1557
48194c26a46c Initial revision
claus
parents:
diff changeset
  1558
    self scrollVerticalTo:
48194c26a46c Initial revision
claus
parents:
diff changeset
  1559
            ((((self heightOfContents * percent) / 100.0) + 0.5) asInteger)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1560
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1561
48194c26a46c Initial revision
claus
parents:
diff changeset
  1562
scrollVerticalTo:aPixelOffset
48194c26a46c Initial revision
claus
parents:
diff changeset
  1563
    "change origin to make aPixelOffset be the top line"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1564
48194c26a46c Initial revision
claus
parents:
diff changeset
  1565
    |orgY|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1566
48194c26a46c Initial revision
claus
parents:
diff changeset
  1567
    orgY := viewOrigin y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1568
48194c26a46c Initial revision
claus
parents:
diff changeset
  1569
    (aPixelOffset < orgY) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1570
        self scrollUp:(orgY - aPixelOffset)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1571
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1572
        (aPixelOffset > orgY) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1573
            self scrollDown:(aPixelOffset - orgY)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1574
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1575
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1576
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1577
48194c26a46c Initial revision
claus
parents:
diff changeset
  1578
scrollHorizontalToPercent:percent
48194c26a46c Initial revision
claus
parents:
diff changeset
  1579
    "scroll to a position given in percent of total"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1580
48194c26a46c Initial revision
claus
parents:
diff changeset
  1581
    self scrollHorizontalTo:
48194c26a46c Initial revision
claus
parents:
diff changeset
  1582
            ((((self widthOfContents * percent) / 100.0) + 0.5) asInteger)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1583
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1584
48194c26a46c Initial revision
claus
parents:
diff changeset
  1585
scrollHorizontalTo:aPixelOffset
48194c26a46c Initial revision
claus
parents:
diff changeset
  1586
    "change origin to make aPixelOffset be the left col"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1587
48194c26a46c Initial revision
claus
parents:
diff changeset
  1588
    |orgX|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1589
48194c26a46c Initial revision
claus
parents:
diff changeset
  1590
    orgX := viewOrigin x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1591
48194c26a46c Initial revision
claus
parents:
diff changeset
  1592
    (aPixelOffset < orgX) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1593
        self scrollLeft:(orgX - aPixelOffset)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1594
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1595
        (aPixelOffset > orgX) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1596
            self scrollRight:(aPixelOffset - orgX)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1597
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1598
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1599
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1600
48194c26a46c Initial revision
claus
parents:
diff changeset
  1601
scrollTo:aPixelOffset
48194c26a46c Initial revision
claus
parents:
diff changeset
  1602
    "only here for historic reasons - will vanish soon"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1603
48194c26a46c Initial revision
claus
parents:
diff changeset
  1604
    ^ self scrollVerticalTo:aPixelOffset
48194c26a46c Initial revision
claus
parents:
diff changeset
  1605
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1606
48194c26a46c Initial revision
claus
parents:
diff changeset
  1607
scrollToTop
48194c26a46c Initial revision
claus
parents:
diff changeset
  1608
    "move viewOrigin to top"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1609
48194c26a46c Initial revision
claus
parents:
diff changeset
  1610
    self scrollVerticalTo:0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1611
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1612
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1613
scrollToTopLeft
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1614
    "move viewOrigin to top/left"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1615
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1616
    self scrollVerticalTo:0.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1617
    self scrollHorizontalTo:0
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1618
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1619
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1620
scrollUp:nPixels
48194c26a46c Initial revision
claus
parents:
diff changeset
  1621
    "change origin to scroll up some pixels"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1622
48194c26a46c Initial revision
claus
parents:
diff changeset
  1623
    |count "{ Class:SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1624
     m2    "{ Class:SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1625
     w     "{ Class:SmallInteger }"|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1626
48194c26a46c Initial revision
claus
parents:
diff changeset
  1627
    count := nPixels.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1628
    (count > viewOrigin y) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1629
        count := viewOrigin y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1630
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1631
    (count <= 0) ifTrue:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1632
48194c26a46c Initial revision
claus
parents:
diff changeset
  1633
    self originWillChange.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1634
    viewOrigin := viewOrigin x @ (viewOrigin y - count).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1635
48194c26a46c Initial revision
claus
parents:
diff changeset
  1636
    (count >= self innerHeight) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1637
        self redraw.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1638
        self originChanged:(0 @ count negated)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1639
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1640
        w := self widthForScrollBetween:(viewOrigin y)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1641
                                    and:(viewOrigin y + count).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1642
        m2 := margin * 2.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1643
        w := w min:(width - m2).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1644
48194c26a46c Initial revision
claus
parents:
diff changeset
  1645
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1646
        super function:#copy.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1647
        super foreground:White.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1648
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1649
        self copyFrom:self x:margin y:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1650
                         toX:margin y:(count + margin)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1651
                       width:w 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1652
                      height:(height - m2 - count).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1653
        self redrawX:margin y:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1654
               width:(width - m2)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1655
              height:count.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1656
48194c26a46c Initial revision
claus
parents:
diff changeset
  1657
        self originChanged:(0 @ count negated).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1658
        self waitForExpose
48194c26a46c Initial revision
claus
parents:
diff changeset
  1659
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1660
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1661
48194c26a46c Initial revision
claus
parents:
diff changeset
  1662
scrollUp
48194c26a46c Initial revision
claus
parents:
diff changeset
  1663
    "scroll up by some amount
48194c26a46c Initial revision
claus
parents:
diff changeset
  1664
      - question is how much is a good default here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1665
48194c26a46c Initial revision
claus
parents:
diff changeset
  1666
    self scrollUp:(device verticalPixelPerMillimeter * 20) asInteger
48194c26a46c Initial revision
claus
parents:
diff changeset
  1667
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1668
48194c26a46c Initial revision
claus
parents:
diff changeset
  1669
scrollDown:nPixels
48194c26a46c Initial revision
claus
parents:
diff changeset
  1670
    "change origin to scroll down some pixels"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1671
48194c26a46c Initial revision
claus
parents:
diff changeset
  1672
    |count "{ Class:SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1673
     m2    "{ Class:SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1674
     w     "{ Class:SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1675
     hCont "{ Class:SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1676
     ih    "{ Class:SmallInteger }"|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1677
48194c26a46c Initial revision
claus
parents:
diff changeset
  1678
    count := nPixels.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1679
    hCont := self heightOfContents.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1680
    ih := self innerHeight.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1681
48194c26a46c Initial revision
claus
parents:
diff changeset
  1682
    ((viewOrigin y + nPixels + ih) > hCont) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1683
        count := hCont - viewOrigin y - ih
48194c26a46c Initial revision
claus
parents:
diff changeset
  1684
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1685
    (count <= 0) ifTrue:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1686
48194c26a46c Initial revision
claus
parents:
diff changeset
  1687
    self originWillChange.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1688
    viewOrigin := viewOrigin x @ (viewOrigin y + count).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1689
48194c26a46c Initial revision
claus
parents:
diff changeset
  1690
    (count >= ih) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1691
        self redraw.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1692
        self originChanged:(0 @ count)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1693
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1694
        m2 := margin * 2.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1695
        w := self widthForScrollBetween:(viewOrigin y)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1696
                                    and:(viewOrigin y + count).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1697
        w := w min:(width - m2).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1698
48194c26a46c Initial revision
claus
parents:
diff changeset
  1699
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1700
        super function:#copy.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1701
        super foreground:White.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1702
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1703
        self copyFrom:self x:margin y:(count + margin)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1704
                         toX:margin y:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1705
                       width:w 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1706
                      height:(height - m2 - count).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1707
48194c26a46c Initial revision
claus
parents:
diff changeset
  1708
        self redrawX:margin y:(height - margin - count) 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1709
               width:(width - m2) height:count.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1710
48194c26a46c Initial revision
claus
parents:
diff changeset
  1711
        self originChanged:(0 @ count).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1712
        self waitForExpose
48194c26a46c Initial revision
claus
parents:
diff changeset
  1713
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1714
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1715
48194c26a46c Initial revision
claus
parents:
diff changeset
  1716
scrollDown
48194c26a46c Initial revision
claus
parents:
diff changeset
  1717
    "scroll down by some amount
48194c26a46c Initial revision
claus
parents:
diff changeset
  1718
      - question is how much is a good default here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1719
48194c26a46c Initial revision
claus
parents:
diff changeset
  1720
    self scrollDown:(device verticalPixelPerMillimeter * 20) asInteger
48194c26a46c Initial revision
claus
parents:
diff changeset
  1721
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1722
48194c26a46c Initial revision
claus
parents:
diff changeset
  1723
scrollLeft:nPixels
48194c26a46c Initial revision
claus
parents:
diff changeset
  1724
    "change origin to scroll left some pixels"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1725
48194c26a46c Initial revision
claus
parents:
diff changeset
  1726
    |count "{ Class:SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1727
     m2    "{ Class:SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1728
     h     "{ Class:SmallInteger }"|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1729
48194c26a46c Initial revision
claus
parents:
diff changeset
  1730
    count := nPixels.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1731
    (count > viewOrigin x) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1732
        count := viewOrigin x
48194c26a46c Initial revision
claus
parents:
diff changeset
  1733
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1734
    (count <= 0) ifTrue:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1735
48194c26a46c Initial revision
claus
parents:
diff changeset
  1736
    self originWillChange.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1737
    viewOrigin := (viewOrigin x - count) @ viewOrigin y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1738
48194c26a46c Initial revision
claus
parents:
diff changeset
  1739
    (count >= self innerWidth) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1740
        self redraw.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1741
        self originChanged:(count negated @ 0)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1742
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1743
        m2 := margin * 2.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1744
        h := (height - m2).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1745
48194c26a46c Initial revision
claus
parents:
diff changeset
  1746
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1747
        super function:#copy.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1748
        super foreground:White.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1749
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1750
        self copyFrom:self x:margin y:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1751
                         toX:(count + margin) y:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1752
                       width:(width - m2 - count) 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1753
                      height:h.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1754
48194c26a46c Initial revision
claus
parents:
diff changeset
  1755
        self redrawX:margin y:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1756
               width:count
48194c26a46c Initial revision
claus
parents:
diff changeset
  1757
              height:(height - m2).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1758
48194c26a46c Initial revision
claus
parents:
diff changeset
  1759
        self originChanged:(count negated @ 0).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1760
        self waitForExpose
48194c26a46c Initial revision
claus
parents:
diff changeset
  1761
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1762
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1763
48194c26a46c Initial revision
claus
parents:
diff changeset
  1764
scrollLeft
48194c26a46c Initial revision
claus
parents:
diff changeset
  1765
    "scroll left by some amount
48194c26a46c Initial revision
claus
parents:
diff changeset
  1766
      - question is how much is a good default here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1767
48194c26a46c Initial revision
claus
parents:
diff changeset
  1768
    self scrollLeft:(device horizontalPixelPerMillimeter * 20) asInteger
48194c26a46c Initial revision
claus
parents:
diff changeset
  1769
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1770
48194c26a46c Initial revision
claus
parents:
diff changeset
  1771
scrollRight:nPixels
48194c26a46c Initial revision
claus
parents:
diff changeset
  1772
    "change origin to scroll right some pixels"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1773
48194c26a46c Initial revision
claus
parents:
diff changeset
  1774
    |count "{ Class:SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1775
     m2    "{ Class:SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1776
     h     "{ Class:SmallInteger }" 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1777
     wCont "{ Class:SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1778
     iw    "{ Class:SmallInteger }"|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1779
48194c26a46c Initial revision
claus
parents:
diff changeset
  1780
    count := nPixels.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1781
    wCont := self widthOfContents.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1782
    iw := self innerWidth.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1783
48194c26a46c Initial revision
claus
parents:
diff changeset
  1784
    ((viewOrigin x + nPixels + iw) > wCont) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1785
        count := wCont - viewOrigin x - iw
48194c26a46c Initial revision
claus
parents:
diff changeset
  1786
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1787
    (count <= 0) ifTrue:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1788
48194c26a46c Initial revision
claus
parents:
diff changeset
  1789
    self originWillChange.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1790
    viewOrigin := (viewOrigin x + count) @ viewOrigin y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1791
48194c26a46c Initial revision
claus
parents:
diff changeset
  1792
    (count >= iw) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1793
        self redraw.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1794
        self originChanged:(count @ 0)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1795
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1796
        m2 := margin * 2.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1797
        h := (height - m2).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1798
48194c26a46c Initial revision
claus
parents:
diff changeset
  1799
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1800
        super function:#copy.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1801
        super foreground:White.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1802
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1803
        self copyFrom:self x:(count + margin) y:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1804
                         toX:margin y:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1805
                       width:(width - m2 - count) 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1806
                      height:h.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1807
48194c26a46c Initial revision
claus
parents:
diff changeset
  1808
        self redrawX:(width - margin - count) y:margin 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1809
               width:count height:(height - m2).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1810
48194c26a46c Initial revision
claus
parents:
diff changeset
  1811
        self originChanged:(count @ 0).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1812
        self waitForExpose
48194c26a46c Initial revision
claus
parents:
diff changeset
  1813
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1814
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1815
48194c26a46c Initial revision
claus
parents:
diff changeset
  1816
scrollRight
48194c26a46c Initial revision
claus
parents:
diff changeset
  1817
    "scroll right by some amount
48194c26a46c Initial revision
claus
parents:
diff changeset
  1818
      - question is how much is a good default here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1819
48194c26a46c Initial revision
claus
parents:
diff changeset
  1820
    self scrollRight:(device horizontalPixelPerMillimeter * 20) asInteger
48194c26a46c Initial revision
claus
parents:
diff changeset
  1821
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1822
48194c26a46c Initial revision
claus
parents:
diff changeset
  1823
!View methodsFor:'private'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1824
48194c26a46c Initial revision
claus
parents:
diff changeset
  1825
pixelExtent:extent
48194c26a46c Initial revision
claus
parents:
diff changeset
  1826
    "set the views extent in pixels"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1827
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1828
    self pixelOrigin:(left @ top) extent:extent
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1829
!
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1830
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1831
XXpixelExtent:extent
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1832
    "set the views extent in pixels"
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1833
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1834
    |newWidth newHeight how mustRedrawBottomEdge mustRedrawRightEdge|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1835
48194c26a46c Initial revision
claus
parents:
diff changeset
  1836
    newWidth := extent x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1837
    newHeight := extent y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1838
    ((newWidth ~~ width) or:[newHeight ~~ height]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1839
        "shown "drawableId notNil"" ifTrue:[    "23-feb-93"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1840
            ((newHeight <= height) and:[newWidth <= width]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1841
                how := #smaller
48194c26a46c Initial revision
claus
parents:
diff changeset
  1842
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1843
48194c26a46c Initial revision
claus
parents:
diff changeset
  1844
            mustRedrawBottomEdge := (level ~~ 0) and:[newHeight < height].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1845
            mustRedrawRightEdge := (level ~~ 0) and:[newWidth < width].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1846
48194c26a46c Initial revision
claus
parents:
diff changeset
  1847
            (level ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1848
                "clear the old edges"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1849
48194c26a46c Initial revision
claus
parents:
diff changeset
  1850
                newWidth > width ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1851
                    self clipRect:nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1852
                    self paint:viewBackground.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1853
                    self fillRectangleX:(width - margin)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1854
                                      y:0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1855
                                  width:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1856
                                 height:height
48194c26a46c Initial revision
claus
parents:
diff changeset
  1857
                ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1858
                newHeight > height ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1859
                    self clipRect:nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1860
                    self paint:viewBackground.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1861
                    self fillRectangleX:0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1862
                                      y:(height - margin)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1863
                                  width:width
48194c26a46c Initial revision
claus
parents:
diff changeset
  1864
                                 height:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1865
                ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1866
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1867
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1868
48194c26a46c Initial revision
claus
parents:
diff changeset
  1869
        width := newWidth.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1870
        height := newHeight.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1871
48194c26a46c Initial revision
claus
parents:
diff changeset
  1872
        "shown "drawableId notNil"" ifTrue:[       "23-feb-93"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1873
            self setInnerClip.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1874
48194c26a46c Initial revision
claus
parents:
diff changeset
  1875
            (how == #smaller) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1876
                "if view becomes smaller, send sizeChanged first"
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1877
                self sizeChanged:how
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1878
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1879
48194c26a46c Initial revision
claus
parents:
diff changeset
  1880
            "have to tell X, when extent of view is changed"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1881
            device resizeWindow:drawableId width:width height:height.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1882
48194c26a46c Initial revision
claus
parents:
diff changeset
  1883
            "if view becomes bigger, send sizeChanged after"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1884
            (how ~~ #smaller) ifTrue:[
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  1885
                self sizeChanged:how
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1886
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1887
48194c26a46c Initial revision
claus
parents:
diff changeset
  1888
            (mustRedrawBottomEdge or:[mustRedrawRightEdge]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1889
                self clipRect:nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1890
                mustRedrawBottomEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1891
                    self drawBottomEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  1892
                ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1893
                mustRedrawRightEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1894
                    self drawRightEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  1895
                ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1896
                self clipRect:innerClipRect
48194c26a46c Initial revision
claus
parents:
diff changeset
  1897
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1898
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1899
            "otherwise memorize the need for a sizeChanged message"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1900
            extentChanged := true
48194c26a46c Initial revision
claus
parents:
diff changeset
  1901
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1902
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1903
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1904
48194c26a46c Initial revision
claus
parents:
diff changeset
  1905
pixelOrigin:origin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1906
    "set the views origin in pixels"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1907
48194c26a46c Initial revision
claus
parents:
diff changeset
  1908
    |newLeft newTop|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1909
48194c26a46c Initial revision
claus
parents:
diff changeset
  1910
    newLeft := origin x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1911
    newTop := origin y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1912
    ((newTop ~~ top) or:[newLeft ~~ left]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1913
        top := newTop.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1914
        left := newLeft.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1915
        drawableId notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1916
            "have to tell X, when origin of view is changed"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1917
            device moveWindow:drawableId x:left y:top
48194c26a46c Initial revision
claus
parents:
diff changeset
  1918
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1919
        realized ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1920
            originChanged := true
48194c26a46c Initial revision
claus
parents:
diff changeset
  1921
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1922
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1923
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1924
48194c26a46c Initial revision
claus
parents:
diff changeset
  1925
pixelCorner:corner
48194c26a46c Initial revision
claus
parents:
diff changeset
  1926
    "set the views corner in pixels"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1927
48194c26a46c Initial revision
claus
parents:
diff changeset
  1928
    |newWidth newHeight|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1929
48194c26a46c Initial revision
claus
parents:
diff changeset
  1930
    newWidth := corner x - left.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1931
    newHeight := corner y - top.
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1932
" old:
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1933
    self pixelExtent:(newWidth @ newHeight)
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1934
"
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1935
    self pixelOrigin:(left @ top) extent:(newWidth @ newHeight)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1936
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1937
48194c26a46c Initial revision
claus
parents:
diff changeset
  1938
pixelOrigin:origin corner:corner
48194c26a46c Initial revision
claus
parents:
diff changeset
  1939
    "set the views origin and extent in pixels"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1940
48194c26a46c Initial revision
claus
parents:
diff changeset
  1941
    |newWidth newHeight|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1942
48194c26a46c Initial revision
claus
parents:
diff changeset
  1943
    newWidth := corner x - origin x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1944
    newHeight := corner y - origin y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1945
    self pixelOrigin:origin extent:(newWidth @ newHeight)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1946
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1947
48194c26a46c Initial revision
claus
parents:
diff changeset
  1948
pixelOrigin:origin extent:extent
48194c26a46c Initial revision
claus
parents:
diff changeset
  1949
    "set the views origin and extent in pixels"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1950
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1951
    |newLeft newTop newWidth newHeight how 
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1952
     mustRedrawBottomEdge mustRedrawRightEdge mustRepaintBottom
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1953
     mustRepaintRight sameOrigin oldWidth oldHeight|
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1954
48194c26a46c Initial revision
claus
parents:
diff changeset
  1955
    newLeft := origin x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1956
    newTop := origin y.
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1957
    sameOrigin := ((newTop == top) and:[newLeft == left]).
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1958
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1959
    newWidth := extent x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1960
    newHeight := extent y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1961
    ((newWidth == width) and:[newHeight == height]) ifTrue:[
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1962
        sameOrigin ifTrue:[^ self].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1963
        ^ self pixelOrigin:origin
48194c26a46c Initial revision
claus
parents:
diff changeset
  1964
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1965
    top := newTop.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1966
    left := newLeft.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1967
48194c26a46c Initial revision
claus
parents:
diff changeset
  1968
    mustRedrawBottomEdge := (level ~~ 0) and:[newHeight < height].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1969
    mustRedrawRightEdge := (level ~~ 0) and:[newWidth < width].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1970
48194c26a46c Initial revision
claus
parents:
diff changeset
  1971
    ((newHeight <= height) and:[newWidth <= width]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1972
        how := #smaller
48194c26a46c Initial revision
claus
parents:
diff changeset
  1973
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1974
48194c26a46c Initial revision
claus
parents:
diff changeset
  1975
    "shown "drawableId notNil"" ifTrue:[        "23-feb-93"
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1976
        mustRepaintRight := false.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1977
        mustRepaintBottom := false.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1978
        (level ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1979
            "clear the old edges"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1980
48194c26a46c Initial revision
claus
parents:
diff changeset
  1981
            newWidth > width ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1982
                self clipRect:nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1983
                self paint:viewBackground.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1984
                self fillRectangleX:(width - margin)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1985
                                  y:0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1986
                              width:margin
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1987
                             height:height.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1988
                mustRepaintRight := true.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1989
                oldWidth := width
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1990
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1991
            newHeight > height ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1992
                self clipRect:nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1993
                self paint:viewBackground.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1994
                self fillRectangleX:0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1995
                                  y:(height - margin)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1996
                              width:width
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1997
                             height:margin.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1998
                mustRepaintBottom := true.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  1999
                oldHeight := height
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2000
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2001
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2002
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2003
        width := newWidth.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2004
        height := newHeight.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2005
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2006
        self setInnerClip.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2007
48194c26a46c Initial revision
claus
parents:
diff changeset
  2008
        "if view becomes smaller, send sizeChanged first"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2009
        (how == #smaller) ifTrue:[
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2010
            self sizeChanged:how
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2011
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2012
48194c26a46c Initial revision
claus
parents:
diff changeset
  2013
        "have to tell X, when extent of view is changed"
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2014
        sameOrigin ifTrue:[
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2015
            device resizeWindow:drawableId width:width height:height.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2016
        ] ifFalse:[
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2017
            "claus: some xservers seem to do better when resizing
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2018
             first ...."
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2019
" 
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2020
            (how == #smaller) ifTrue:[
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2021
                device resizeWindow:drawableId width:width height:height.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2022
                device moveWindow:drawableId x:left y:top
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2023
            ] ifFalse:[
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2024
                device moveResizeWindow:drawableId x:left y:top width:width height:height
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2025
            ].
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2026
" 
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2027
            device moveResizeWindow:drawableId x:left y:top
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2028
                                           width:width height:height.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2029
" "
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2030
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2031
48194c26a46c Initial revision
claus
parents:
diff changeset
  2032
        "if view becomes bigger, send sizeChanged after"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2033
        (how ~~ #smaller) ifTrue:[
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2034
            self sizeChanged:how
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2035
        ].
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2036
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2037
        (mustRedrawBottomEdge or:[mustRedrawRightEdge]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2038
            self clipRect:nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2039
            mustRedrawBottomEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2040
                self drawBottomEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  2041
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2042
            mustRedrawRightEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2043
                self drawRightEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  2044
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2045
            self clipRect:innerClipRect
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2046
        ].
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2047
        mustRepaintRight ifTrue:[
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2048
            self redrawX:(oldWidth - margin)
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2049
                       y:0
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2050
                   width:margin
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2051
                  height:height.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2052
        ].
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2053
        mustRepaintBottom ifTrue:[
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2054
            self redrawX:0
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2055
                       y:(oldHeight - margin)
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2056
                   width:width
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2057
                  height:margin.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2058
        ].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2059
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2060
        "otherwise memorize the need for a sizeChanged message"
15
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2061
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2062
        width := newWidth.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2063
        height := newHeight.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2064
        sameOrigin ifFalse:[
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2065
            originChanged := true.
ba1100f2ca03 fixed resize (smaller) border repaint bug
claus
parents: 12
diff changeset
  2066
        ].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2067
        extentChanged := true
48194c26a46c Initial revision
claus
parents:
diff changeset
  2068
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2069
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2070
48194c26a46c Initial revision
claus
parents:
diff changeset
  2071
pointFromRelativePoint:relativePoint
48194c26a46c Initial revision
claus
parents:
diff changeset
  2072
    "given relative point, compute absolute point (in pixels)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2073
48194c26a46c Initial revision
claus
parents:
diff changeset
  2074
    |newX newY rel inRect|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2075
48194c26a46c Initial revision
claus
parents:
diff changeset
  2076
    superView isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2077
    inRect := superView viewRectangle.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2078
48194c26a46c Initial revision
claus
parents:
diff changeset
  2079
    rel := relativePoint x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2080
    (rel isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2081
        newX := (rel * (inRect width + (2 * borderWidth))) asInteger + inRect left
48194c26a46c Initial revision
claus
parents:
diff changeset
  2082
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2083
        newX := rel
48194c26a46c Initial revision
claus
parents:
diff changeset
  2084
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2085
    rel := relativePoint y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2086
    (rel isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2087
        newY := (rel * (inRect height + (2 * borderWidth))) asInteger + inRect top
48194c26a46c Initial revision
claus
parents:
diff changeset
  2088
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2089
        newY := rel
48194c26a46c Initial revision
claus
parents:
diff changeset
  2090
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2091
    ^ (newX @ newY)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2092
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2093
48194c26a46c Initial revision
claus
parents:
diff changeset
  2094
originFromRelativeOrigin
48194c26a46c Initial revision
claus
parents:
diff changeset
  2095
    "compute pixel origin from relativeOrigin"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2096
48194c26a46c Initial revision
claus
parents:
diff changeset
  2097
    |newOrigin newX newY rel inRect bw2|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2098
48194c26a46c Initial revision
claus
parents:
diff changeset
  2099
    superView isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2100
48194c26a46c Initial revision
claus
parents:
diff changeset
  2101
    inRect := superView viewRectangle.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2102
    bw2 := borderWidth * 2.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2103
    rel := relativeOrigin x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2104
    (rel isMemberOf:Float) ifTrue:[
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  2105
        newX := (rel * (inRect width + borderWidth "bw2")) asInteger + inRect left
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2106
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2107
        newX := rel
48194c26a46c Initial revision
claus
parents:
diff changeset
  2108
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2109
    rel := relativeOrigin y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2110
    (rel isMemberOf:Float) ifTrue:[
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  2111
        newY := (rel * (inRect height + borderWidth "bw2")) asInteger + inRect top
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2112
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2113
        newY := rel
48194c26a46c Initial revision
claus
parents:
diff changeset
  2114
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2115
    newOrigin :=  (newX @ newY).
48194c26a46c Initial revision
claus
parents:
diff changeset
  2116
48194c26a46c Initial revision
claus
parents:
diff changeset
  2117
    (borderWidth ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2118
        (relativeOrigin x isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2119
            newOrigin x:(newOrigin x - borderWidth)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2120
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2121
        (relativeOrigin y isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2122
            newOrigin y:(newOrigin y - borderWidth)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2123
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2124
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2125
    ^ newOrigin
48194c26a46c Initial revision
claus
parents:
diff changeset
  2126
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2127
48194c26a46c Initial revision
claus
parents:
diff changeset
  2128
cornerFromRelativeCorner
48194c26a46c Initial revision
claus
parents:
diff changeset
  2129
    "compute pixel corner from relativeCorner"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2130
48194c26a46c Initial revision
claus
parents:
diff changeset
  2131
    |newCorner newX newY rel inRect bw2|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2132
48194c26a46c Initial revision
claus
parents:
diff changeset
  2133
    superView isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2134
48194c26a46c Initial revision
claus
parents:
diff changeset
  2135
    inRect := superView viewRectangle.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2136
    bw2 := borderWidth * 2.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2137
    rel := relativeCorner x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2138
    (rel isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2139
        newX := (rel * (inRect width" + bw2")) asInteger "+ inRect left"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2140
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2141
        newX := rel
48194c26a46c Initial revision
claus
parents:
diff changeset
  2142
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2143
    rel := relativeCorner y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2144
    (rel isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2145
        newY := (rel * (inRect height" + bw2")) asInteger "+ inRect top"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2146
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2147
        newY := rel
48194c26a46c Initial revision
claus
parents:
diff changeset
  2148
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2149
    newCorner :=  (newX @ newY).
48194c26a46c Initial revision
claus
parents:
diff changeset
  2150
48194c26a46c Initial revision
claus
parents:
diff changeset
  2151
    (borderWidth ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2152
        (relativeCorner x isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2153
            newCorner x:(newCorner x - borderWidth)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2154
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2155
        (relativeCorner y isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2156
            newCorner y:(newCorner y - borderWidth)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2157
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2158
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2159
    ^ newCorner
48194c26a46c Initial revision
claus
parents:
diff changeset
  2160
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2161
48194c26a46c Initial revision
claus
parents:
diff changeset
  2162
extentFromRelativeExtent
48194c26a46c Initial revision
claus
parents:
diff changeset
  2163
    "compute pixel extent from relativeExtent"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2164
48194c26a46c Initial revision
claus
parents:
diff changeset
  2165
    |newExtent newX newY rel inRect bw2|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2166
48194c26a46c Initial revision
claus
parents:
diff changeset
  2167
    superView isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2168
48194c26a46c Initial revision
claus
parents:
diff changeset
  2169
    inRect := superView viewRectangle.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2170
    bw2 := borderWidth * 2.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2171
    rel := relativeExtent x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2172
    (rel isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2173
        newX := (rel * (inRect width + bw2)) asInteger + inRect left
48194c26a46c Initial revision
claus
parents:
diff changeset
  2174
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2175
        newX := rel
48194c26a46c Initial revision
claus
parents:
diff changeset
  2176
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2177
    rel := relativeExtent y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2178
    (rel isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2179
        newY := (rel * (inRect height + bw2)) asInteger + inRect top
48194c26a46c Initial revision
claus
parents:
diff changeset
  2180
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2181
        newY := rel
48194c26a46c Initial revision
claus
parents:
diff changeset
  2182
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2183
    newExtent :=  (newX @ newY).
48194c26a46c Initial revision
claus
parents:
diff changeset
  2184
48194c26a46c Initial revision
claus
parents:
diff changeset
  2185
    (borderWidth ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2186
        (relativeExtent x isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2187
            newExtent x:(newExtent x - (1 * borderWidth))
48194c26a46c Initial revision
claus
parents:
diff changeset
  2188
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2189
        (relativeExtent y isMemberOf:Float) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2190
            newExtent y:(newExtent y - (1 * borderWidth))
48194c26a46c Initial revision
claus
parents:
diff changeset
  2191
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2192
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2193
    ^ newExtent
48194c26a46c Initial revision
claus
parents:
diff changeset
  2194
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2195
48194c26a46c Initial revision
claus
parents:
diff changeset
  2196
dimensionFromViewport
48194c26a46c Initial revision
claus
parents:
diff changeset
  2197
    "define my origin/extend from viewport"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2198
48194c26a46c Initial revision
claus
parents:
diff changeset
  2199
    |relW relH relX relY winW winH org ext|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2200
48194c26a46c Initial revision
claus
parents:
diff changeset
  2201
    superView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2202
        superView window isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2203
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2204
            v := superView.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2205
            (v notNil and:[v window isNil]) whileTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2206
                v := v superview
48194c26a46c Initial revision
claus
parents:
diff changeset
  2207
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2208
            v notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2209
                w := v window
48194c26a46c Initial revision
claus
parents:
diff changeset
  2210
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2211
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2212
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2213
            winW := 1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2214
            winH := 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  2215
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2216
            winW := superView width.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2217
            winH := superView height.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2218
48194c26a46c Initial revision
claus
parents:
diff changeset
  2219
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2220
            winW := superView window width.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2221
            winH := superView window height
48194c26a46c Initial revision
claus
parents:
diff changeset
  2222
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2223
        relW := (viewport width / winW) asFloat.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2224
        relH := (viewport height / winH) asFloat.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2225
        relX := (viewport left / winW) asFloat.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2226
        relY := (viewport top / winH) asFloat.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2227
        relativeOrigin := (relX @ relY).
48194c26a46c Initial revision
claus
parents:
diff changeset
  2228
        org := self originFromRelativeOrigin.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2229
        relativeOrigin := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2230
48194c26a46c Initial revision
claus
parents:
diff changeset
  2231
        relativeExtent := (relW @ relH).
48194c26a46c Initial revision
claus
parents:
diff changeset
  2232
        ext := self extentFromRelativeExtent.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2233
        relativeExtent := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2234
48194c26a46c Initial revision
claus
parents:
diff changeset
  2235
        self pixelOrigin:org extent:ext.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2236
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2237
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2238
48194c26a46c Initial revision
claus
parents:
diff changeset
  2239
computeInnerClip
48194c26a46c Initial revision
claus
parents:
diff changeset
  2240
    |m2|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2241
48194c26a46c Initial revision
claus
parents:
diff changeset
  2242
    (margin ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2243
        m2 := margin + margin.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2244
        innerClipRect := Rectangle left:margin top:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  2245
                                 width:(width - m2) height:(height - m2)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2246
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2247
        innerClipRect := nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  2248
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2249
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2250
48194c26a46c Initial revision
claus
parents:
diff changeset
  2251
setInnerClip
48194c26a46c Initial revision
claus
parents:
diff changeset
  2252
    |m2|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2253
48194c26a46c Initial revision
claus
parents:
diff changeset
  2254
    (margin ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2255
        m2 := margin + margin.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2256
        innerClipRect := Rectangle left:margin top:margin
48194c26a46c Initial revision
claus
parents:
diff changeset
  2257
                                  width:(width - m2)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2258
                                 height:(height - m2)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2259
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2260
        innerClipRect := nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  2261
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2262
    self clipRect:innerClipRect
48194c26a46c Initial revision
claus
parents:
diff changeset
  2263
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  2264
48194c26a46c Initial revision
claus
parents:
diff changeset
  2265
!View methodsFor:'realization'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2266
48194c26a46c Initial revision
claus
parents:
diff changeset
  2267
create
48194c26a46c Initial revision
claus
parents:
diff changeset
  2268
    "create (i.e. tell X about me)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2269
     this is kind of stupid - creation means XCreateWindow;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2270
     realizing means XMapWindow"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2271
48194c26a46c Initial revision
claus
parents:
diff changeset
  2272
    drawableId isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2273
        "make certain, superview is created also"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2274
48194c26a46c Initial revision
claus
parents:
diff changeset
  2275
        superView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2276
            superView id isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2277
                superView create
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2278
            ].
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2279
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2280
            "and put my controller into the superviews controller list"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2281
            controller notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2282
                superView controller notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2283
                    controller manager:(superView controller manager)
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2284
                ]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2285
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2286
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2287
48194c26a46c Initial revision
claus
parents:
diff changeset
  2288
        "associate cursor/colors to device"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2289
48194c26a46c Initial revision
claus
parents:
diff changeset
  2290
        viewBackground := viewBackground on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2291
        borderColor := borderColor on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2292
        shadowColor := shadowColor on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2293
        lightColor := lightColor on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2294
        cursor := cursor on:device.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2295
48194c26a46c Initial revision
claus
parents:
diff changeset
  2296
        drawableId := device createWindowFor:self 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2297
                                        left:left top:top 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2298
                                       width:width height:height.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2299
48194c26a46c Initial revision
claus
parents:
diff changeset
  2300
        extentChanged := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2301
        originChanged := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2302
48194c26a46c Initial revision
claus
parents:
diff changeset
  2303
        borderShape notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2304
            device setWindowBorderShape:(borderShape id) in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  2305
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2306
        viewShape notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2307
            device setWindowShape:(viewShape id) in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  2308
        ].
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  2309
        (backed notNil and:[backed ~~ false]) ifTrue:[
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2310
            device setBackingStore:backed in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  2311
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2312
        saveUnder ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2313
            device setSaveUnder:true in:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  2314
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2315
48194c26a46c Initial revision
claus
parents:
diff changeset
  2316
        font := font on:device.
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2317
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2318
        self initializeMiddleButtonMenu.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2319
        self initEvents.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2320
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2321
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2322
48194c26a46c Initial revision
claus
parents:
diff changeset
  2323
createWithAllSubViews
48194c26a46c Initial revision
claus
parents:
diff changeset
  2324
    "create, then create all subviews"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2325
48194c26a46c Initial revision
claus
parents:
diff changeset
  2326
    drawableId isNil ifTrue:[self create].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2327
    subViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2328
        subViews do:[:subView | subView createWithAllSubViews]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2329
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2330
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2331
48194c26a46c Initial revision
claus
parents:
diff changeset
  2332
initializeMiddleButtonMenu
48194c26a46c Initial revision
claus
parents:
diff changeset
  2333
    "a place to initialize menu - this one is sent once when the view is
48194c26a46c Initial revision
claus
parents:
diff changeset
  2334
     first created; usually redefined in subclasses; default here is no menu"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2335
48194c26a46c Initial revision
claus
parents:
diff changeset
  2336
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  2337
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2338
48194c26a46c Initial revision
claus
parents:
diff changeset
  2339
fixSize
48194c26a46c Initial revision
claus
parents:
diff changeset
  2340
    "adjust size of window according to either relative/abs or
48194c26a46c Initial revision
claus
parents:
diff changeset
  2341
     block extent; also set origin"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2342
48194c26a46c Initial revision
claus
parents:
diff changeset
  2343
    window notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2344
        ^ self superViewChangedSize
48194c26a46c Initial revision
claus
parents:
diff changeset
  2345
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2346
48194c26a46c Initial revision
claus
parents:
diff changeset
  2347
    "if the extent is not the one we created the window with ..."
48194c26a46c Initial revision
claus
parents:
diff changeset
  2348
    extentChanged ifTrue:[
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2349
        self sizeChanged:nil.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2350
        extentChanged := false
48194c26a46c Initial revision
claus
parents:
diff changeset
  2351
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2352
48194c26a46c Initial revision
claus
parents:
diff changeset
  2353
    originChanged ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2354
        originRule notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2355
            self pixelOrigin:(originRule value)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2356
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2357
            relativeOrigin notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2358
                self originFromRelativeOrigin
48194c26a46c Initial revision
claus
parents:
diff changeset
  2359
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2360
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2361
        originChanged := false
48194c26a46c Initial revision
claus
parents:
diff changeset
  2362
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2363
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2364
48194c26a46c Initial revision
claus
parents:
diff changeset
  2365
realize
48194c26a46c Initial revision
claus
parents:
diff changeset
  2366
    "realize - make visible;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2367
     realizing is done very late (after layout is fixed) to avoid
48194c26a46c Initial revision
claus
parents:
diff changeset
  2368
     visible rearranging of windows on the screen"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2369
48194c26a46c Initial revision
claus
parents:
diff changeset
  2370
    drawableId isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2371
        self create.
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2372
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2373
        "if it is the first realize (which means a create),
48194c26a46c Initial revision
claus
parents:
diff changeset
  2374
         force sizechange messages"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2375
        extentChanged := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2376
        originChanged := true
48194c26a46c Initial revision
claus
parents:
diff changeset
  2377
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2378
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2379
    "put myself into superviews windowgroup"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2380
    superView notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2381
        windowGroup notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2382
            'oops - wgroup change on realize' printNewline.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2383
            windowGroup removeView:self
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2384
        ].
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2385
        windowGroup := superView windowGroup.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2386
        windowGroup notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2387
            windowGroup addView:self.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2388
        ]
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2389
    ].
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2390
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2391
    hidden ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2392
        ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  2393
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2394
48194c26a46c Initial revision
claus
parents:
diff changeset
  2395
    realized ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2396
        (originChanged or:[extentChanged]) ifTrue:[self fixSize].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2397
        subViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2398
            subViews do:[:subView |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2399
                subView realize
48194c26a46c Initial revision
claus
parents:
diff changeset
  2400
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2401
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2402
        self setInnerClip.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2403
48194c26a46c Initial revision
claus
parents:
diff changeset
  2404
        "and make it visible"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2405
        device mapWindow:drawableId.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2406
        realized := true
48194c26a46c Initial revision
claus
parents:
diff changeset
  2407
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2408
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2409
48194c26a46c Initial revision
claus
parents:
diff changeset
  2410
rerealize
48194c26a46c Initial revision
claus
parents:
diff changeset
  2411
    "rerealize at old position"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2412
48194c26a46c Initial revision
claus
parents:
diff changeset
  2413
    device mapWindow:drawableId iconified:false
48194c26a46c Initial revision
claus
parents:
diff changeset
  2414
                                      atX:left y:top
48194c26a46c Initial revision
claus
parents:
diff changeset
  2415
                                    width:width height:height
48194c26a46c Initial revision
claus
parents:
diff changeset
  2416
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2417
48194c26a46c Initial revision
claus
parents:
diff changeset
  2418
destroy
48194c26a46c Initial revision
claus
parents:
diff changeset
  2419
    "unrealize & destroy - make me invisible, destroy subviews then
48194c26a46c Initial revision
claus
parents:
diff changeset
  2420
     make me unknown to the device"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2421
48194c26a46c Initial revision
claus
parents:
diff changeset
  2422
    realized ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2423
        self unrealize.            
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2424
        "make it go away immediately
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2425
         - also, this hides the subview killing"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2426
"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2427
        device synchronizeOutput. 
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2428
"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2429
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2430
48194c26a46c Initial revision
claus
parents:
diff changeset
  2431
    model notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2432
        model removeDependent:self
48194c26a46c Initial revision
claus
parents:
diff changeset
  2433
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2434
    controller := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2435
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2436
    subViews notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2437
        "stupid: destroy removes itself from the subveiws list
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2438
         - therefore we have to loop over a copy here"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2439
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2440
        subViews copy do:[:aView |
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2441
            aView notNil ifTrue:[aView destroy]             
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2442
        ]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2443
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2444
    superView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2445
        superView removeSubView:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2446
        superView := nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  2447
    ].
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2448
    super destroy.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2449
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2450
    windowGroup notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2451
        windowGroup removeView:self
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2452
    ].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2453
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2454
48194c26a46c Initial revision
claus
parents:
diff changeset
  2455
unrealize
48194c26a46c Initial revision
claus
parents:
diff changeset
  2456
    "hide me"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2457
48194c26a46c Initial revision
claus
parents:
diff changeset
  2458
    realized ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2459
        drawableId notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2460
            device unmapWindow:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  2461
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2462
        realized := false.
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2463
        shown := false
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2464
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2465
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  2466
48194c26a46c Initial revision
claus
parents:
diff changeset
  2467
!View methodsFor:'drawing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2468
48194c26a46c Initial revision
claus
parents:
diff changeset
  2469
drawEdgesForX:x y:y width:w height:h level:l 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2470
                shadow:shadowColor light:lightColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  2471
                halfShadow:halfShadowColor halfLight:halfLightColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  2472
    "draw 3D edges into a rectangle"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2473
48194c26a46c Initial revision
claus
parents:
diff changeset
  2474
    |topLeftFg botRightFg topLeftHalfFg botRightHalfFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2475
     count "{ Class: SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2476
     r     "{ Class: SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2477
     b     "{ Class: SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2478
     xi    "{ Class: SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2479
     yi    "{ Class: SmallInteger }"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2480
     run |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2481
48194c26a46c Initial revision
claus
parents:
diff changeset
  2482
    (l < 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2483
        topLeftFg := shadowColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2484
        botRightFg := lightColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2485
        topLeftHalfFg := halfShadowColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2486
        botRightHalfFg := halfLightColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2487
        count := l negated
48194c26a46c Initial revision
claus
parents:
diff changeset
  2488
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2489
        topLeftFg := lightColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2490
        botRightFg := shadowColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2491
        topLeftHalfFg := halfLightColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2492
        botRightHalfFg := halfShadowColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2493
        count := l
48194c26a46c Initial revision
claus
parents:
diff changeset
  2494
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2495
    r := x + w - 1. "right"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2496
    b := y + h - 1. "bottom"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2497
48194c26a46c Initial revision
claus
parents:
diff changeset
  2498
    super lineWidth:0.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2499
48194c26a46c Initial revision
claus
parents:
diff changeset
  2500
    "top and left edges"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2501
    (softEdge and:[l > 0]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2502
        super paint:topLeftHalfFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2503
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2504
        super paint:topLeftFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2505
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2506
    0 to:(count - 1) do:[:i |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2507
        run := y + i.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2508
        super displayLineFromX:x y:run toX:r y:run. "top"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2509
        run := x + i.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2510
        super displayLineFromX:run y:y toX:run y:b  "left"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2511
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2512
    softEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2513
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2514
        super paint:topLeftFg.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2515
        super displayLineFromX:x y:y toX:r y:y. 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2516
        super displayLineFromX:x y:y toX:x y:b        
48194c26a46c Initial revision
claus
parents:
diff changeset
  2517
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2518
        (l > 2) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2519
            super paint:Black.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2520
            super displayLineFromX:x y:y toX:r y:y. 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2521
            super displayLineFromX:x y:y toX:x y:b. 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2522
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2523
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2524
48194c26a46c Initial revision
claus
parents:
diff changeset
  2525
    xi := x + 1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2526
    yi := y + 1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2527
48194c26a46c Initial revision
claus
parents:
diff changeset
  2528
    "bottom and right edges"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2529
    (softEdge) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2530
        super paint:botRightHalfFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2531
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2532
        super paint:botRightFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2533
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2534
    0 to:(count - 1) do:[:i |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2535
        run := b - i.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2536
        super displayLineFromX:xi-1 y:run toX:r y:run. "bottom"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2537
        run := r - i.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2538
        super displayLineFromX:run y:yi-1 toX:run y:b.  "right"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2539
        xi := xi + 1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2540
        yi := yi + 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  2541
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2542
    (softEdge and:[l > 1]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2543
        super paint:shadowColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2544
        super displayLineFromX:(x + 1-1) y:b toX:r y:b. 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2545
        super displayLineFromX:r y:(y + 1 - 1) toX:r y:b        
48194c26a46c Initial revision
claus
parents:
diff changeset
  2546
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2547
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2548
48194c26a46c Initial revision
claus
parents:
diff changeset
  2549
drawEdgesForX:x y:y width:w height:h level:l
48194c26a46c Initial revision
claus
parents:
diff changeset
  2550
    "draw 3D edges into a rectangle"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2551
48194c26a46c Initial revision
claus
parents:
diff changeset
  2552
    self drawEdgesForX:x y:y width:w height:h level:l 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2553
                shadow:shadowColor light:lightColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  2554
                halfShadow:halfShadowColor halfLight:halfLightColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  2555
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2556
48194c26a46c Initial revision
claus
parents:
diff changeset
  2557
drawLeftEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  2558
    "draw left 3D edge into window frame"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2559
48194c26a46c Initial revision
claus
parents:
diff changeset
  2560
    |leftFg leftHalfFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2561
     count "{ Class: SmallInteger }" |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2562
48194c26a46c Initial revision
claus
parents:
diff changeset
  2563
    (level < 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2564
        leftFg := shadowColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2565
        leftHalfFg := halfShadowColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2566
        count := level negated
48194c26a46c Initial revision
claus
parents:
diff changeset
  2567
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2568
        leftFg := lightColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2569
        leftHalfFg := halfLightColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2570
        count := level
48194c26a46c Initial revision
claus
parents:
diff changeset
  2571
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2572
48194c26a46c Initial revision
claus
parents:
diff changeset
  2573
    super lineWidth:0.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2574
    (softEdge and:[level > 0]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2575
        super paint:leftHalfFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2576
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2577
        super paint:leftFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2578
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2579
    0 to:(count - 1) do:[:i |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2580
        super displayLineFromX:i y:i toX:i y:(height - 1 - i)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2581
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2582
    (softEdge and:[level > 2]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2583
        super paint:Black.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2584
        super displayLineFromX:0 y:0 toX:0 y:height-1. 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2585
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2586
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2587
48194c26a46c Initial revision
claus
parents:
diff changeset
  2588
drawRightEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  2589
    "draw right 3D edge into window frame"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2590
48194c26a46c Initial revision
claus
parents:
diff changeset
  2591
    |rightFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2592
     count "{ Class: SmallInteger }" 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2593
     r|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2594
48194c26a46c Initial revision
claus
parents:
diff changeset
  2595
    (level < 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2596
        rightFg := lightColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2597
        count := level negated
48194c26a46c Initial revision
claus
parents:
diff changeset
  2598
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2599
        (softEdge and:[level > 1]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2600
            rightFg := halfShadowColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  2601
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2602
            rightFg := shadowColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  2603
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2604
        count := level
48194c26a46c Initial revision
claus
parents:
diff changeset
  2605
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2606
48194c26a46c Initial revision
claus
parents:
diff changeset
  2607
    super lineWidth:0.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2608
    super paint:rightFg.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2609
    0 to:(count - 1) do:[:i |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2610
        r := width - 1 - i.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2611
        super displayLineFromX:r y:i toX:r y:(height - 1 - i)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2612
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2613
    (softEdge and:[level > 1]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2614
        super paint:shadowColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2615
        super displayLineFromX:width-1 y:1 toX:width-1 y:height-1. 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2616
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2617
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2618
48194c26a46c Initial revision
claus
parents:
diff changeset
  2619
drawTopEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  2620
    "draw top 3D edge into window frame"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2621
48194c26a46c Initial revision
claus
parents:
diff changeset
  2622
    |topFg topHalfFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2623
     count "{ Class: SmallInteger }" |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2624
48194c26a46c Initial revision
claus
parents:
diff changeset
  2625
    (level < 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2626
        topFg := shadowColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2627
        topHalfFg := halfShadowColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2628
        count := level negated
48194c26a46c Initial revision
claus
parents:
diff changeset
  2629
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2630
        topFg := lightColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2631
        topHalfFg := halfLightColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2632
        count := level
48194c26a46c Initial revision
claus
parents:
diff changeset
  2633
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2634
48194c26a46c Initial revision
claus
parents:
diff changeset
  2635
    super lineWidth:0.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2636
    (softEdge and:[level > 0]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2637
        super paint:topHalfFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2638
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2639
        super paint:topFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2640
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2641
    0 to:(count - 1) do:[:i |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2642
        super displayLineFromX:i y:i toX:(width - 1 - i) y:i
48194c26a46c Initial revision
claus
parents:
diff changeset
  2643
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2644
    (softEdge and:[level > 2]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2645
        super paint:Black.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2646
        super displayLineFromX:0 y:0 toX:width-1 y:0. 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2647
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2648
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2649
48194c26a46c Initial revision
claus
parents:
diff changeset
  2650
drawBottomEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  2651
    "draw bottom 3D edge into window frame"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2652
48194c26a46c Initial revision
claus
parents:
diff changeset
  2653
    |botFg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2654
     count "{ Class: SmallInteger }" 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2655
     b|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2656
48194c26a46c Initial revision
claus
parents:
diff changeset
  2657
    (level < 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2658
        botFg := lightColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2659
        count := level negated
48194c26a46c Initial revision
claus
parents:
diff changeset
  2660
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2661
        (softEdge and:[level > 1]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2662
            botFg := halfShadowColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  2663
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2664
            botFg := shadowColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  2665
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2666
        count := level
48194c26a46c Initial revision
claus
parents:
diff changeset
  2667
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2668
48194c26a46c Initial revision
claus
parents:
diff changeset
  2669
    super lineWidth:0.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2670
    super paint:botFg.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2671
    0 to:(count - 1) do:[:i |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2672
        b := height - 1 - i.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2673
        super displayLineFromX:i y:b toX:(width "- 1" - i) y:b
48194c26a46c Initial revision
claus
parents:
diff changeset
  2674
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2675
    (softEdge and:[level > 1]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2676
        super paint:shadowColor.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2677
        super displayLineFromX:1 y:height-1 toX:width-1 y:height-1. 
48194c26a46c Initial revision
claus
parents:
diff changeset
  2678
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2679
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2680
48194c26a46c Initial revision
claus
parents:
diff changeset
  2681
redrawEdges
48194c26a46c Initial revision
claus
parents:
diff changeset
  2682
    "redraw my edges if 3D"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2683
48194c26a46c Initial revision
claus
parents:
diff changeset
  2684
    self is3D ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2685
        (level ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2686
            self clipRect:nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2687
            self drawEdgesForX:0 y:0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2688
                         width:width height:height
48194c26a46c Initial revision
claus
parents:
diff changeset
  2689
                         level:level.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2690
            self clipRect:innerClipRect
48194c26a46c Initial revision
claus
parents:
diff changeset
  2691
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2692
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2693
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2694
48194c26a46c Initial revision
claus
parents:
diff changeset
  2695
redraw
48194c26a46c Initial revision
claus
parents:
diff changeset
  2696
    "redraw myself
48194c26a46c Initial revision
claus
parents:
diff changeset
  2697
     if there is a model, this one shall redraw itself,
48194c26a46c Initial revision
claus
parents:
diff changeset
  2698
     otherwise we cannot do much here - has to be redefined in subclasses"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2699
48194c26a46c Initial revision
claus
parents:
diff changeset
  2700
    model notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2701
        model update:self
48194c26a46c Initial revision
claus
parents:
diff changeset
  2702
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2703
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2704
48194c26a46c Initial revision
claus
parents:
diff changeset
  2705
redrawX:x y:y width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  2706
    "have to redraw part -
48194c26a46c Initial revision
claus
parents:
diff changeset
  2707
     default is to redraw everything - subclasses should add intelligence"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2708
48194c26a46c Initial revision
claus
parents:
diff changeset
  2709
    |area|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2710
48194c26a46c Initial revision
claus
parents:
diff changeset
  2711
    area := Rectangle left:x top:y width:w height:h.      
48194c26a46c Initial revision
claus
parents:
diff changeset
  2712
    self clippedTo:area do:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2713
        controller notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2714
            "ST-80 updating"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2715
            self update:#rectangle with:area
48194c26a46c Initial revision
claus
parents:
diff changeset
  2716
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2717
            components notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2718
                components do:[:aComponent |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2719
                    (aComponent frame intersects:area) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2720
                        aComponent drawIn:self offset:0@0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2721
                    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2722
                ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2723
            ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2724
                self redraw
48194c26a46c Initial revision
claus
parents:
diff changeset
  2725
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2726
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2727
    ]                                                              
48194c26a46c Initial revision
claus
parents:
diff changeset
  2728
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  2729
48194c26a46c Initial revision
claus
parents:
diff changeset
  2730
!View methodsFor:'events'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2731
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2732
destroyed
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2733
    "view has been destroyed by someone else"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2734
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2735
    shown := false.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2736
    super destroyed
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2737
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2738
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2739
sizeChanged:how
48194c26a46c Initial revision
claus
parents:
diff changeset
  2740
    "tell subviews if I change size"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2741
48194c26a46c Initial revision
claus
parents:
diff changeset
  2742
    transformation := nil.  "transformation becomes void"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2743
    subViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2744
        (how == #smaller) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2745
            subViews do:[:view |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2746
                view superViewChangedSize
48194c26a46c Initial revision
claus
parents:
diff changeset
  2747
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2748
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2749
            "doing it reverse speeds up resizing - usually subviews
48194c26a46c Initial revision
claus
parents:
diff changeset
  2750
             are created from top-left to bottom-right; therefore
48194c26a46c Initial revision
claus
parents:
diff changeset
  2751
             bottom-right views will be moved/resized first, then top-left ones;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2752
             this avoids multiple redraws of subviews"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2753
48194c26a46c Initial revision
claus
parents:
diff changeset
  2754
            subViews reverseDo:[:view |
48194c26a46c Initial revision
claus
parents:
diff changeset
  2755
                view superViewChangedSize
48194c26a46c Initial revision
claus
parents:
diff changeset
  2756
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2757
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2758
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2759
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2760
48194c26a46c Initial revision
claus
parents:
diff changeset
  2761
superViewChangedSize
48194c26a46c Initial revision
claus
parents:
diff changeset
  2762
    "my superView has changed size; if I have relative
48194c26a46c Initial revision
claus
parents:
diff changeset
  2763
     origin/extent or blocks to evaluate, do it now .."
48194c26a46c Initial revision
claus
parents:
diff changeset
  2764
48194c26a46c Initial revision
claus
parents:
diff changeset
  2765
    |oldWidth oldHeight oldTop oldLeft newExt newOrg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2766
     winSuper newWidth newHeight newLeft newTop newCorner
48194c26a46c Initial revision
claus
parents:
diff changeset
  2767
     superWidth superHeight superWinWidth superWinHeight|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2768
48194c26a46c Initial revision
claus
parents:
diff changeset
  2769
    oldWidth := width.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2770
    oldHeight := height.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2771
    oldTop := top.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2772
    oldLeft := left.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2773
48194c26a46c Initial revision
claus
parents:
diff changeset
  2774
    viewport notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2775
        "if this view has a viewPort, resize a la st-80"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2776
        superView isNil ifTrue:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2777
        winSuper := superView window.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2778
        winSuper isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2779
            "take pixel size as window"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2780
            winSuper := 0@0 extent:(superView width@superView height)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2781
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2782
48194c26a46c Initial revision
claus
parents:
diff changeset
  2783
48194c26a46c Initial revision
claus
parents:
diff changeset
  2784
        superWidth := superView width.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2785
        superHeight := superView height.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2786
        superWinWidth := winSuper width.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2787
        superWinHeight := winSuper height.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2788
        newLeft := (viewport left - winSuper left) * superWidth // superWinWidth.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2789
        newTop := (viewport top - winSuper top) * superHeight // superWinHeight.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2790
        newWidth := superWidth * viewport width // superWinWidth.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2791
        newHeight := superHeight * viewport height // superWinHeight.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2792
        self pixelOrigin:(newLeft @ newTop).
48194c26a46c Initial revision
claus
parents:
diff changeset
  2793
        self pixelExtent:(newWidth @ newHeight).
48194c26a46c Initial revision
claus
parents:
diff changeset
  2794
        ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  2795
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2796
48194c26a46c Initial revision
claus
parents:
diff changeset
  2797
    (originRule notNil) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2798
        newOrg := originRule value
48194c26a46c Initial revision
claus
parents:
diff changeset
  2799
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2800
        (relativeOrigin notNil) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2801
            "self originFromRelativeOrigin      "
48194c26a46c Initial revision
claus
parents:
diff changeset
  2802
            newOrg := self originFromRelativeOrigin.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2803
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2804
            borderWidth ~~ 0 ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2805
                newOrg := newOrg - (borderWidth @ borderWidth)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2806
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2807
"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2808
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2809
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2810
48194c26a46c Initial revision
claus
parents:
diff changeset
  2811
    (cornerRule notNil) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2812
        newCorner := cornerRule value
48194c26a46c Initial revision
claus
parents:
diff changeset
  2813
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2814
        (relativeCorner notNil) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2815
            newCorner := self cornerFromRelativeCorner
48194c26a46c Initial revision
claus
parents:
diff changeset
  2816
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2817
            (extentRule notNil) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2818
                newExt := extentRule value
48194c26a46c Initial revision
claus
parents:
diff changeset
  2819
            ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2820
                (relativeExtent notNil) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2821
                    newExt := self extentFromRelativeExtent
48194c26a46c Initial revision
claus
parents:
diff changeset
  2822
                ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2823
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2824
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2825
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2826
48194c26a46c Initial revision
claus
parents:
diff changeset
  2827
    newOrg notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2828
        ((newOrg x == oldLeft) and:[newOrg y == oldTop]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2829
            newOrg := nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  2830
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2831
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2832
    newCorner notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2833
        (newCorner = self corner) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2834
            newCorner := nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  2835
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2836
            self corner isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2837
                newExt notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2838
                    ((newExt x == oldWidth) and:[newExt y == oldHeight]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2839
                        newExt := nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  2840
                    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2841
                ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2842
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2843
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2844
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2845
48194c26a46c Initial revision
claus
parents:
diff changeset
  2846
    newCorner isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2847
        newExt isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2848
            newOrg notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2849
                self pixelOrigin:newOrg
48194c26a46c Initial revision
claus
parents:
diff changeset
  2850
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2851
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2852
            newOrg isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2853
                self pixelExtent:newExt
48194c26a46c Initial revision
claus
parents:
diff changeset
  2854
            ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2855
                self pixelOrigin:newOrg extent:newExt
48194c26a46c Initial revision
claus
parents:
diff changeset
  2856
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2857
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2858
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2859
        newOrg isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2860
            self pixelCorner:newCorner
48194c26a46c Initial revision
claus
parents:
diff changeset
  2861
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2862
            self pixelOrigin:newOrg corner:newCorner
48194c26a46c Initial revision
claus
parents:
diff changeset
  2863
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2864
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2865
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2866
48194c26a46c Initial revision
claus
parents:
diff changeset
  2867
configureX:x y:y width:newWidth height:newHeight
48194c26a46c Initial revision
claus
parents:
diff changeset
  2868
    "my size has changed by window manager action"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2869
48194c26a46c Initial revision
claus
parents:
diff changeset
  2870
    |how anyEdge mustRedrawBottomEdge mustRedrawRightEdge|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2871
48194c26a46c Initial revision
claus
parents:
diff changeset
  2872
    left := x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2873
    top := y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2874
    ((width ~~ newWidth) or:[height ~~ newHeight]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2875
        realized ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2876
            width := newWidth.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2877
            height := newHeight.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2878
            extentChanged := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2879
            ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  2880
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2881
48194c26a46c Initial revision
claus
parents:
diff changeset
  2882
        ((newWidth <= width) and:[newHeight <= height]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2883
            how := #smaller
48194c26a46c Initial revision
claus
parents:
diff changeset
  2884
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2885
48194c26a46c Initial revision
claus
parents:
diff changeset
  2886
        self is3D ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2887
            mustRedrawBottomEdge := newHeight < height.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2888
            mustRedrawRightEdge := newWidth < width.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2889
            anyEdge := mustRedrawBottomEdge or:[mustRedrawRightEdge]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2890
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2891
            anyEdge := false
48194c26a46c Initial revision
claus
parents:
diff changeset
  2892
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2893
48194c26a46c Initial revision
claus
parents:
diff changeset
  2894
        width := newWidth.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2895
        height := newHeight.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2896
48194c26a46c Initial revision
claus
parents:
diff changeset
  2897
        "recompute inner-clip if needed"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2898
        self setInnerClip.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2899
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2900
        self sizeChanged:how.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2901
48194c26a46c Initial revision
claus
parents:
diff changeset
  2902
        anyEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2903
            self clipRect:nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2904
            mustRedrawBottomEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2905
                self drawBottomEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  2906
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2907
            mustRedrawRightEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2908
                self drawRightEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  2909
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2910
            self clipRect:innerClipRect
48194c26a46c Initial revision
claus
parents:
diff changeset
  2911
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2912
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2913
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2914
48194c26a46c Initial revision
claus
parents:
diff changeset
  2915
mapped
48194c26a46c Initial revision
claus
parents:
diff changeset
  2916
    "the view has been mapped (by some outside
48194c26a46c Initial revision
claus
parents:
diff changeset
  2917
     action - i.e. window manager de-iconified me)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2918
48194c26a46c Initial revision
claus
parents:
diff changeset
  2919
    realized := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2920
    shown := true
48194c26a46c Initial revision
claus
parents:
diff changeset
  2921
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2922
48194c26a46c Initial revision
claus
parents:
diff changeset
  2923
unmapped
48194c26a46c Initial revision
claus
parents:
diff changeset
  2924
    "the view has been unmapped (by some outside
48194c26a46c Initial revision
claus
parents:
diff changeset
  2925
     action - i.e. window manager iconified me)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2926
48194c26a46c Initial revision
claus
parents:
diff changeset
  2927
    shown := false
48194c26a46c Initial revision
claus
parents:
diff changeset
  2928
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2929
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2930
reparented
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2931
    "the view has changed its parent by some outside
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2932
     action - i.e. window manager has added a frame.
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2933
     nothing done here"
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2934
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2935
    ^ self
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2936
!
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  2937
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2938
exposeX:x y:y width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  2939
    "a low level redraw event from device
48194c26a46c Initial revision
claus
parents:
diff changeset
  2940
      - let subclass handle the redraw and take care of edges here"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2941
48194c26a46c Initial revision
claus
parents:
diff changeset
  2942
    |leftEdge topEdge rightEdge botEdge anyEdge nx ny nw nh|
48194c26a46c Initial revision
claus
parents:
diff changeset
  2943
48194c26a46c Initial revision
claus
parents:
diff changeset
  2944
    nw := w.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2945
    nh := h.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2946
    nx := x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2947
    ny := y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2948
48194c26a46c Initial revision
claus
parents:
diff changeset
  2949
    anyEdge := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2950
48194c26a46c Initial revision
claus
parents:
diff changeset
  2951
    "check if there is a need to draw an edge"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2952
48194c26a46c Initial revision
claus
parents:
diff changeset
  2953
    (margin ~~ 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2954
        leftEdge := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2955
        topEdge := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2956
        rightEdge := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2957
        botEdge := false.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2958
        (x < margin) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2959
            nx := margin.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2960
            nw := nw - (nx - x).
48194c26a46c Initial revision
claus
parents:
diff changeset
  2961
            leftEdge := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2962
            anyEdge := true
48194c26a46c Initial revision
claus
parents:
diff changeset
  2963
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2964
        ((x + w - 1) >= (width - margin)) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2965
            nw := (width - margin - nx).
48194c26a46c Initial revision
claus
parents:
diff changeset
  2966
            rightEdge := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2967
            anyEdge := true
48194c26a46c Initial revision
claus
parents:
diff changeset
  2968
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2969
        (y < margin) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2970
            ny := margin.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2971
            nh := nh - (ny - y).
48194c26a46c Initial revision
claus
parents:
diff changeset
  2972
            topEdge := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2973
            anyEdge := true
48194c26a46c Initial revision
claus
parents:
diff changeset
  2974
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2975
        ((y + h - 1) >= (height - margin)) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2976
            nh := (height - margin - ny).
48194c26a46c Initial revision
claus
parents:
diff changeset
  2977
            botEdge := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2978
            anyEdge := true
48194c26a46c Initial revision
claus
parents:
diff changeset
  2979
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  2980
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2981
48194c26a46c Initial revision
claus
parents:
diff changeset
  2982
    "redraw inside area"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2983
48194c26a46c Initial revision
claus
parents:
diff changeset
  2984
    self redrawX:nx y:ny width:nw height:nh.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2985
48194c26a46c Initial revision
claus
parents:
diff changeset
  2986
    "redraw edge(s)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2987
48194c26a46c Initial revision
claus
parents:
diff changeset
  2988
    anyEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2989
        self clipRect:nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2990
        (topEdge and:[leftEdge and:[botEdge and:[rightEdge]]]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2991
            self drawEdgesForX:0 y:0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2992
                         width:width height:height
48194c26a46c Initial revision
claus
parents:
diff changeset
  2993
                         level:level
48194c26a46c Initial revision
claus
parents:
diff changeset
  2994
        ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2995
            topEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2996
                self drawTopEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  2997
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  2998
            leftEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  2999
                self drawLeftEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  3000
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  3001
            botEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  3002
                self drawBottomEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  3003
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  3004
            rightEdge ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  3005
                self drawRightEdge
48194c26a46c Initial revision
claus
parents:
diff changeset
  3006
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  3007
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  3008
        self clipRect:innerClipRect
48194c26a46c Initial revision
claus
parents:
diff changeset
  3009
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  3010
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  3011
48194c26a46c Initial revision
claus
parents:
diff changeset
  3012
keyPress:key x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  3013
    "a key has been pressed.
48194c26a46c Initial revision
claus
parents:
diff changeset
  3014
     if there is a keyboardHandler, pass input to him"
48194c26a46c Initial revision
claus
parents:
diff changeset
  3015
48194c26a46c Initial revision
claus
parents:
diff changeset
  3016
    "allow forwarding events to the keyboardhandler"
48194c26a46c Initial revision
claus
parents:
diff changeset
  3017
    keyboardHandler notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  3018
        keyboardHandler keyPress:key x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  3019
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  3020
        super keyPress:key x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  3021
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  3022
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  3023
48194c26a46c Initial revision
claus
parents:
diff changeset
  3024
buttonPress:button x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  3025
    "button was pressed - if its middle button and there is a menu, show it."
48194c26a46c Initial revision
claus
parents:
diff changeset
  3026
48194c26a46c Initial revision
claus
parents:
diff changeset
  3027
    |menu menuSelector|
48194c26a46c Initial revision
claus
parents:
diff changeset
  3028
48194c26a46c Initial revision
claus
parents:
diff changeset
  3029
    (button == 2) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  3030
        "try ST-80 style menus first"
48194c26a46c Initial revision
claus
parents:
diff changeset
  3031
        model notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  3032
            menuSymbol notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  3033
                menu := model perform:menuSymbol.
48194c26a46c Initial revision
claus
parents:
diff changeset
  3034
                menu notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  3035
                    menuSelector := menu startUp.
48194c26a46c Initial revision
claus
parents:
diff changeset
  3036
                    menuSelector ~~ 0 ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  3037
                        model perform:menuSelector
48194c26a46c Initial revision
claus
parents:
diff changeset
  3038
                    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  3039
                ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  3040
                ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  3041
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  3042
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  3043
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  3044
    super buttonPress:button x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  3045
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  3046
12
9f0995fac1fa *** empty log message ***
claus
parents: 6
diff changeset
  3047
XXXwaitForExpose
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3048
    "after a scroll, we have to wait for expose/noexpose"
48194c26a46c Initial revision
claus
parents:
diff changeset
  3049
48194c26a46c Initial revision
claus
parents:
diff changeset
  3050
    device dispatchExposeEventsFor:drawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  3051
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  3052
48194c26a46c Initial revision
claus
parents:
diff changeset
  3053
terminate
48194c26a46c Initial revision
claus
parents:
diff changeset
  3054
    "window manager wants me to go away"
48194c26a46c Initial revision
claus
parents:
diff changeset
  3055
48194c26a46c Initial revision
claus
parents:
diff changeset
  3056
    ^ self destroy
48194c26a46c Initial revision
claus
parents:
diff changeset
  3057
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  3058
48194c26a46c Initial revision
claus
parents:
diff changeset
  3059
saveAndTerminate
48194c26a46c Initial revision
claus
parents:
diff changeset
  3060
    "window manager wants me to save and go away"
48194c26a46c Initial revision
claus
parents:
diff changeset
  3061
48194c26a46c Initial revision
claus
parents:
diff changeset
  3062
    ^ self destroy
48194c26a46c Initial revision
claus
parents:
diff changeset
  3063
! !