SubCanvas.st
author tm
Wed, 14 Jul 1999 12:45:23 +0200
changeset 1450 9994adae5c1c
parent 1414 faf0465c333b
child 1467 2d85bd1a8267
permissions -rw-r--r--
checkin from browser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
     1
"
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
     2
 COPYRIGHT (c) 1998 by eXept Software AG
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
     3
              All Rights Reserved
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
     4
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
     5
 This software is furnished under a license and may be used
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
     6
 only in accordance with the terms of that license and with the
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
     8
 be provided or otherwise made available to, or used by, any
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
     9
 other person.  No title to or ownership of the software is
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    10
 hereby transferred.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    11
"
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    12
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    13
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
ScrollableView subclass:#SubCanvas
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
    15
	instanceVariableNames:'builder spec client clientHolder specHolder clientView
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
    16
		clientViewIsScrolled'
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	classVariableNames:''
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	poolDictionaries:''
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	category:'Views-Basic'
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    22
!SubCanvas class methodsFor:'documentation'!
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    23
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    24
copyright
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    25
"
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    26
 COPYRIGHT (c) 1998 by eXept Software AG
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    27
              All Rights Reserved
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    28
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    29
 This software is furnished under a license and may be used
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    30
 only in accordance with the terms of that license and with the
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    31
 inclusion of the above copyright notice.   This software may not
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    32
 be provided or otherwise made available to, or used by, any
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    33
 other person.  No title to or ownership of the software is
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    34
 hereby transferred.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    35
"
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    36
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    37
!
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    38
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    39
documentation
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    40
"
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    41
    a view for a subApplication.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    42
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    43
    [author:]
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    44
        Claus Atzkern
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    45
"
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    46
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    47
! !
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
1414
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    49
!SubCanvas class methodsFor:'defaults'!
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    50
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    51
defaultHorizontalScrollable
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    52
    ^ false
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    53
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    54
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    55
!
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    56
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    57
defaultVerticalScrollable
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    58
    ^ false
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    59
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    60
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    61
! !
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    62
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!SubCanvas methodsFor:'accessing'!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    65
builder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    66
    "return the value of the instance variable 'builder' (automatically generated)"
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    68
    ^ builder!
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    70
client
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    71
    "return the value of the instance variable 'client' (automatically generated)"
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    73
    ^ client!
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
client:anApplicationModel
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    "release existing components and generate new components from
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
     the applications windowSpec."
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    ^ self client:anApplicationModel spec:#windowSpec
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    82
client:anApplication spec:aWindowSpecOrSelector
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    "release existing components and generate new components from
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
     the applications windowSpec."
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    86
    |aBuilder|
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    88
    (anApplication notNil and:[anApplication respondsTo:#builder]) ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    89
        aBuilder := anApplication builder
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    ] ifFalse:[
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    91
        aBuilder := UIBuilder new
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    ].
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    93
  ^ self client:anApplication spec:aWindowSpecOrSelector builder:aBuilder
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    96
client:anApplication spec:aWindowSpecOrSpecSymbol builder:aBuilder
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    "release existing components and generate new components from
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
     the given windowSpec, using the given builder."
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   100
    builder  := aBuilder.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   101
    spec     := aWindowSpecOrSpecSymbol.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   102
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   103
    "/ check for master application
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   104
    (anApplication notNil and:[anApplication masterApplication isNil]) ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   105
        client := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   106
        client := self application.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   107
        client ~~ anApplication ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   108
            anApplication masterApplication:client
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   109
        ]
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   110
    ].
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   111
    client := anApplication.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   112
    self rebuild.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   113
  ^ builder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   114
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   115
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   116
makeClientViewScrollable:aBoolean
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   117
    |vs|
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   118
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   119
    aBoolean ~~ clientViewIsScrolled ifTrue:[
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   120
        clientView := View new.
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   121
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   122
        aBoolean ifTrue:[
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   123
            self scrolledView:(vs := ViewScroller new).
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   124
            vs scrolledView:clientView.
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   125
        ] ifFalse:[
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   126
            self scrolledView:clientView.
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   127
        ].
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   128
        clientViewIsScrolled := aBoolean.
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   129
    ]
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   130
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   131
!
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   132
1450
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   133
setClient:anApplicationModel
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   134
    "set the client - do NOT rebuild"
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   135
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   136
    client := anApplicationModel 
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   137
!
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   138
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   139
spec
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   140
    "return the value of the instance variable 'spec' (automatically generated)"
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   141
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   142
    ^ spec!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   143
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   144
spec:something
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   145
    "set the value of the instance variable 'spec' (automatically generated)"
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   146
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   147
    spec := something.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   148
    self rebuild.
819
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   149
!
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   150
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   151
widget
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   152
    "ST80 compatibility. 
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   153
     I am my own widget"
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   154
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   155
    ^ self
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   156
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   157
    "Created: / 10.3.1998 / 16:20:52 / stefan"
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   158
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   159
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   160
!SubCanvas methodsFor:'accessing channels'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   161
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   162
clientHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   163
    ^ clientHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   164
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   165
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   166
clientHolder:aValueHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   167
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   168
    clientHolder notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   169
        clientHolder removeDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   170
    ].
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   171
    (clientHolder := aValueHolder) notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   172
        clientHolder addDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   173
    ].
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   174
    self updateFromChannels
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   175
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   176
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   177
specHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   178
    ^ specHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   179
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   180
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   181
specHolder:aValueHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   182
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   183
    specHolder notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   184
        specHolder removeDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   185
    ].
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   186
    (specHolder := aValueHolder) notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   187
        specHolder addDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   188
    ].
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   189
    self updateFromChannels
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   190
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   191
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   192
!SubCanvas methodsFor:'building'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   193
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   194
rebuild
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   195
    "rebuild
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   196
    "
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   197
    |v subSpec savedView builderClass|
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   199
    clientView notNil ifTrue:[
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   200
        clientView destroySubViews
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
    ].
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    spec notNil ifTrue:[
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   204
        (subSpec := spec) isSymbol ifTrue:[
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   205
            client isNil ifTrue:[
1216
c9f8253a9e7c give a warning with nil client
Claus Gittinger <cg@exept.de>
parents: 973
diff changeset
   206
                'SubCanvas [warning]: no client - cannot build spec' infoPrintCR.
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   207
                ^ self
553
3535a0682ac7 spec channel changed: if client is nil, try
ca
parents: 503
diff changeset
   208
            ].
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   209
            (subSpec := client class interfaceSpecFor:spec) isNil ifTrue:[
1216
c9f8253a9e7c give a warning with nil client
Claus Gittinger <cg@exept.de>
parents: 973
diff changeset
   210
                "/ Transcript showCR:'SubCanvas: nil spec'.
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   211
                ^ self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   212
            ]
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   213
        ].
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   214
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   215
        builder isNil ifTrue:[
1383
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   216
            client isNil ifTrue:[
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   217
                builderClass := UIBuilder
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   218
            ] ifFalse:[
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   219
                builderClass := client builderClass
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   220
            ].
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   221
            builder := builderClass new.
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   222
        ].
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   223
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   224
        "/ old:
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   225
"/         builder buildFromSpec:subSpec in:clientView.
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   226
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   227
        "/ new (let app know (somehow) that this is a build
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   228
        "/ for a subcanvas (i.e. it can redefine the buildSubCanvase-method
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   229
        "/:
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   230
        savedView := builder window.
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   231
        builder window:clientView.
1450
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   232
        [
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   233
            client buildSubCanvas:subSpec withBuilder:builder.
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   234
        ] valueNowOrOnUnwindDo:[
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   235
            builder window:savedView.
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   236
        ].
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   237
        clientViewIsScrolled ifTrue:[
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   238
            clientView
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   239
                extent:(builder spec window layout rectangleRelativeTo:self bounds preferred:nil) extent.
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   240
        ].
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   241
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   242
        self realized ifTrue:[
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   243
            clientView realizeAllSubViews
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   244
        ]
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   245
    ]
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   246
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   247
    "Modified: / 20.6.1998 / 14:29:00 / cg"
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   248
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   249
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   250
releaseAllComponents
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   251
    clientView destroySubViews.
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   252
    builder := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   253
    spec    := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   254
    client  := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   255
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   256
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   257
!SubCanvas methodsFor:'change & update'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   258
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   259
update:something with:aParameter from:changedObject
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   260
    "one of my models changed its value
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   261
    "
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   262
    (changedObject == clientHolder or:[changedObject == specHolder]) ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   263
        self updateFromChannels
7cf5f021983d add method:
ca
parents: 554
diff changeset
   264
    ] ifFalse:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   265
        super update:something with:aParameter from:changedObject.
7cf5f021983d add method:
ca
parents: 554
diff changeset
   266
    ]
7cf5f021983d add method:
ca
parents: 554
diff changeset
   267
7cf5f021983d add method:
ca
parents: 554
diff changeset
   268
!
7cf5f021983d add method:
ca
parents: 554
diff changeset
   269
7cf5f021983d add method:
ca
parents: 554
diff changeset
   270
updateFromChannels
7cf5f021983d add method:
ca
parents: 554
diff changeset
   271
    "update canvas from channel
7cf5f021983d add method:
ca
parents: 554
diff changeset
   272
    "
7cf5f021983d add method:
ca
parents: 554
diff changeset
   273
    |client spec|
7cf5f021983d add method:
ca
parents: 554
diff changeset
   274
7cf5f021983d add method:
ca
parents: 554
diff changeset
   275
    clientHolder isNil ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   276
        client := self application
7cf5f021983d add method:
ca
parents: 554
diff changeset
   277
    ] ifFalse:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   278
        client := clientHolder value
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   279
    ].
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   280
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   281
    specHolder isNil ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   282
        spec := #windowSpec
7cf5f021983d add method:
ca
parents: 554
diff changeset
   283
    ] ifFalse:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   284
        spec := specHolder value
7cf5f021983d add method:
ca
parents: 554
diff changeset
   285
    ].
7cf5f021983d add method:
ca
parents: 554
diff changeset
   286
    (client notNil and:[spec notNil]) ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   287
        self client:client spec:spec
7cf5f021983d add method:
ca
parents: 554
diff changeset
   288
    ] ifFalse:[
1450
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   289
        spec notNil ifTrue:[
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   290
            self halt:'spec but no app'.
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   291
        ].
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   292
        self client:nil
7cf5f021983d add method:
ca
parents: 554
diff changeset
   293
    ]
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   294
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   295
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   296
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   297
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   298
!SubCanvas methodsFor:'initialization'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   299
609
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   300
destroy
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   301
    clientHolder notNil ifTrue:[
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   302
        clientHolder removeDependent:self.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   303
        clientHolder := nil.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   304
    ].
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   305
    specHolder notNil ifTrue:[
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   306
        specHolder removeDependent:self.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   307
        specHolder := nil.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   308
    ].
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   309
    super destroy.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   310
!
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   311
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   312
initialize
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   313
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   314
    super initialize.
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   315
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   316
    self scrolledView:(clientView := View new).
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   317
    clientViewIsScrolled := false.
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   318
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   319
    spec := #windowSpec.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   320
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   321
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   322
!SubCanvas methodsFor:'queries'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   323
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   324
application
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   325
    "return the application, under which this view was opened,
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   326
    "
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   327
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   328
    client notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   329
        ^ client
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
    ].
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   331
    ^ super application
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   332
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
! !
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
!SubCanvas class methodsFor:'documentation'!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
version
1450
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   338
    ^ '$Header: /cvs/stx/stx/libwidg2/SubCanvas.st,v 1.14 1999-07-14 10:45:23 tm Exp $'
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
! !