SubCanvas.st
author tm
Thu, 17 Jun 1999 10:51:17 +0200
changeset 1414 faf0465c333b
parent 1412 b426fae6edcf
child 1450 9994adae5c1c
permissions -rw-r--r--
defaults for hasHVScrollbar now defined in a class method.
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
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   133
spec
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   134
    "return the value of the instance variable 'spec' (automatically generated)"
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   135
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   136
    ^ spec!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   137
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   138
spec:something
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   139
    "set the value of the instance variable 'spec' (automatically generated)"
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   140
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   141
    spec := something.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   142
    self rebuild.
819
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   143
!
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   144
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   145
widget
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   146
    "ST80 compatibility. 
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   147
     I am my own widget"
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   148
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   149
    ^ self
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
    "Created: / 10.3.1998 / 16:20:52 / stefan"
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   152
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   153
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   154
!SubCanvas methodsFor:'accessing channels'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   155
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   156
clientHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   157
    ^ clientHolder
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
clientHolder:aValueHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   161
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   162
    clientHolder notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   163
        clientHolder removeDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   164
    ].
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   165
    (clientHolder := aValueHolder) notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   166
        clientHolder addDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   167
    ].
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   168
    self updateFromChannels
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   169
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   170
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   171
specHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   172
    ^ specHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   173
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   174
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   175
specHolder:aValueHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   176
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   177
    specHolder notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   178
        specHolder removeDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   179
    ].
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   180
    (specHolder := aValueHolder) notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   181
        specHolder addDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   182
    ].
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   183
    self updateFromChannels
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   184
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   185
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   186
!SubCanvas methodsFor:'building'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   187
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   188
rebuild
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   189
    "rebuild
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   190
    "
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   191
    |v subSpec savedView builderClass|
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   193
    clientView notNil ifTrue:[
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   194
        clientView destroySubViews
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    ].
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    spec notNil ifTrue:[
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   198
        (subSpec := spec) isSymbol ifTrue:[
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   199
            client isNil ifTrue:[
1216
c9f8253a9e7c give a warning with nil client
Claus Gittinger <cg@exept.de>
parents: 973
diff changeset
   200
                'SubCanvas [warning]: no client - cannot build spec' infoPrintCR.
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   201
                ^ self
553
3535a0682ac7 spec channel changed: if client is nil, try
ca
parents: 503
diff changeset
   202
            ].
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   203
            (subSpec := client class interfaceSpecFor:spec) isNil ifTrue:[
1216
c9f8253a9e7c give a warning with nil client
Claus Gittinger <cg@exept.de>
parents: 973
diff changeset
   204
                "/ Transcript showCR:'SubCanvas: nil spec'.
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   205
                ^ self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   206
            ]
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   207
        ].
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   208
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   209
        builder isNil ifTrue:[
1383
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   210
            client isNil ifTrue:[
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   211
                builderClass := UIBuilder
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   212
            ] ifFalse:[
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   213
                builderClass := client builderClass
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   214
            ].
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   215
            builder := builderClass new.
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   216
        ].
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   217
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   218
        "/ old:
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   219
"/         builder buildFromSpec:subSpec in:clientView.
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   220
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   221
        "/ new (let app know (somehow) that this is a build
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   222
        "/ for a subcanvas (i.e. it can redefine the buildSubCanvase-method
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
        savedView := builder window.
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   225
        builder window:clientView.
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   226
        client buildSubCanvas:subSpec withBuilder:builder.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   227
        builder window:savedView.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   228
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   229
        clientViewIsScrolled ifTrue:[
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   230
            clientView
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   231
                extent:(builder spec window layout rectangleRelativeTo:self bounds preferred:nil) extent.
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   232
        ].
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   233
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   234
        self realized ifTrue:[
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   235
            clientView realizeAllSubViews
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   236
        ]
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   237
    ]
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   238
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   239
    "Modified: / 20.6.1998 / 14:29:00 / cg"
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   240
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   241
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   242
releaseAllComponents
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   243
    clientView destroySubViews.
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   244
    builder := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   245
    spec    := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   246
    client  := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   247
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   248
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   249
!SubCanvas methodsFor:'change & update'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   250
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   251
update:something with:aParameter from:changedObject
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   252
    "one of my models changed its value
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   253
    "
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   254
    (changedObject == clientHolder or:[changedObject == specHolder]) ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   255
        self updateFromChannels
7cf5f021983d add method:
ca
parents: 554
diff changeset
   256
    ] ifFalse:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   257
        super update:something with:aParameter from:changedObject.
7cf5f021983d add method:
ca
parents: 554
diff changeset
   258
    ]
7cf5f021983d add method:
ca
parents: 554
diff changeset
   259
7cf5f021983d add method:
ca
parents: 554
diff changeset
   260
!
7cf5f021983d add method:
ca
parents: 554
diff changeset
   261
7cf5f021983d add method:
ca
parents: 554
diff changeset
   262
updateFromChannels
7cf5f021983d add method:
ca
parents: 554
diff changeset
   263
    "update canvas from channel
7cf5f021983d add method:
ca
parents: 554
diff changeset
   264
    "
7cf5f021983d add method:
ca
parents: 554
diff changeset
   265
    |client spec|
7cf5f021983d add method:
ca
parents: 554
diff changeset
   266
7cf5f021983d add method:
ca
parents: 554
diff changeset
   267
    clientHolder isNil ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   268
        client := self application
7cf5f021983d add method:
ca
parents: 554
diff changeset
   269
    ] ifFalse:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   270
        client := clientHolder value
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   271
    ].
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   272
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   273
    specHolder isNil ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   274
        spec := #windowSpec
7cf5f021983d add method:
ca
parents: 554
diff changeset
   275
    ] ifFalse:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   276
        spec := specHolder value
7cf5f021983d add method:
ca
parents: 554
diff changeset
   277
    ].
7cf5f021983d add method:
ca
parents: 554
diff changeset
   278
    (client notNil and:[spec notNil]) ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   279
        self client:client spec:spec
7cf5f021983d add method:
ca
parents: 554
diff changeset
   280
    ] ifFalse:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   281
        self client:nil
7cf5f021983d add method:
ca
parents: 554
diff changeset
   282
    ]
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   283
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   284
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   285
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   286
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   287
!SubCanvas methodsFor:'initialization'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   288
609
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   289
destroy
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   290
    clientHolder notNil ifTrue:[
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   291
        clientHolder removeDependent:self.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   292
        clientHolder := nil.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   293
    ].
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   294
    specHolder notNil ifTrue:[
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   295
        specHolder removeDependent:self.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   296
        specHolder := nil.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   297
    ].
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   298
    super destroy.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   299
!
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   300
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   301
initialize
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   302
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   303
    super initialize.
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   304
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   305
    self scrolledView:(clientView := View new).
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   306
    clientViewIsScrolled := false.
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   307
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   308
    spec := #windowSpec.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   309
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   310
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   311
!SubCanvas methodsFor:'queries'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   312
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   313
application
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   314
    "return the application, under which this view was opened,
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   315
    "
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   316
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   317
    client notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   318
        ^ client
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
    ].
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   320
    ^ super application
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   321
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
! !
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
!SubCanvas class methodsFor:'documentation'!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
version
1414
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
   327
    ^ '$Header: /cvs/stx/stx/libwidg2/SubCanvas.st,v 1.13 1999-06-17 08:51:17 tm Exp $'
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
! !