SubCanvas.st
author Claus Gittinger <cg@exept.de>
Fri, 21 May 1999 18:26:11 +0200
changeset 1383 1c0ffdda1a92
parent 1216 c9f8253a9e7c
child 1412 b426fae6edcf
permissions -rw-r--r--
care for nil client.
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
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    15
	instanceVariableNames:'builder spec client clientHolder specHolder'
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'Views-Basic'
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    21
!SubCanvas class methodsFor:'documentation'!
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    22
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    23
copyright
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    24
"
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    25
 COPYRIGHT (c) 1998 by eXept Software AG
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    26
              All Rights Reserved
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    27
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    28
 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
    29
 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
    30
 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
    31
 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
    32
 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
    33
 hereby transferred.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    34
"
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
documentation
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    39
"
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    40
    a view for a subApplication.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    41
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    42
    [author:]
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    43
        Claus Atzkern
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    44
"
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
! !
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
!SubCanvas methodsFor:'accessing'!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    50
builder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    51
    "return the value of the instance variable 'builder' (automatically generated)"
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    53
    ^ builder!
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    55
client
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    56
    "return the value of the instance variable 'client' (automatically generated)"
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    58
    ^ client!
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
client:anApplicationModel
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    "release existing components and generate new components from
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
     the applications windowSpec."
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    ^ self client:anApplicationModel spec:#windowSpec
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    67
client:anApplication spec:aWindowSpecOrSelector
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    "release existing components and generate new components from
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
     the applications windowSpec."
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    71
    |aBuilder|
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
    (anApplication notNil and:[anApplication respondsTo:#builder]) ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    74
        aBuilder := anApplication builder
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    ] ifFalse:[
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    76
        aBuilder := UIBuilder new
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    ].
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    78
  ^ self client:anApplication spec:aWindowSpecOrSelector builder:aBuilder
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    81
client:anApplication spec:aWindowSpecOrSpecSymbol builder:aBuilder
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    "release existing components and generate new components from
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
     the given windowSpec, using the given builder."
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    85
    builder  := aBuilder.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    86
    spec     := aWindowSpecOrSpecSymbol.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    87
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    88
    "/ check for master application
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    89
    (anApplication notNil and:[anApplication masterApplication isNil]) ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    90
        client := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    91
        client := self application.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    92
        client ~~ anApplication ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    93
            anApplication masterApplication:client
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    94
        ]
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    95
    ].
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    96
    client := anApplication.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    97
    self rebuild.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    98
  ^ builder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    99
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   100
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   101
spec
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   102
    "return the value of the instance variable 'spec' (automatically generated)"
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   103
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   104
    ^ spec!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   105
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   106
spec:something
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   107
    "set the value of the instance variable 'spec' (automatically generated)"
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   108
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   109
    spec := something.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   110
    self rebuild.
819
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   111
!
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   112
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   113
widget
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   114
    "ST80 compatibility. 
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   115
     I am my own widget"
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   116
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   117
    ^ self
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   118
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   119
    "Created: / 10.3.1998 / 16:20:52 / stefan"
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   120
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   121
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   122
!SubCanvas methodsFor:'accessing channels'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   123
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   124
clientHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   125
    ^ clientHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   126
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   127
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   128
clientHolder:aValueHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   129
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   130
    clientHolder notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   131
        clientHolder removeDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   132
    ].
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   133
    (clientHolder := aValueHolder) notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   134
        clientHolder addDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   135
    ].
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   136
    self updateFromChannels
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   137
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   138
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   139
specHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   140
    ^ specHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   141
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   142
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   143
specHolder:aValueHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   144
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   145
    specHolder notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   146
        specHolder removeDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   147
    ].
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   148
    (specHolder := aValueHolder) notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   149
        specHolder addDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   150
    ].
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   151
    self updateFromChannels
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:'building'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   155
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   156
rebuild
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   157
    "rebuild
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   158
    "
1383
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   159
    |subSpec savedView builderClass|
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    scrolledView notNil ifTrue:[
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
        scrolledView destroySubViews
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    ].
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    spec notNil ifTrue:[
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   166
        (subSpec := spec) isSymbol ifTrue:[
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   167
            client isNil ifTrue:[
1216
c9f8253a9e7c give a warning with nil client
Claus Gittinger <cg@exept.de>
parents: 973
diff changeset
   168
                'SubCanvas [warning]: no client - cannot build spec' infoPrintCR.
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   169
                ^ self
553
3535a0682ac7 spec channel changed: if client is nil, try
ca
parents: 503
diff changeset
   170
            ].
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   171
            (subSpec := client class interfaceSpecFor:spec) isNil ifTrue:[
1216
c9f8253a9e7c give a warning with nil client
Claus Gittinger <cg@exept.de>
parents: 973
diff changeset
   172
                "/ Transcript showCR:'SubCanvas: nil spec'.
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   173
                ^ self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   174
            ]
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   175
        ].
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   176
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   177
        builder isNil ifTrue:[
1383
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   178
            client isNil ifTrue:[
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   179
                builderClass := UIBuilder
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   180
            ] ifFalse:[
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   181
                builderClass := client builderClass
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   182
            ].
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   183
            builder := builderClass new.
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   184
        ].
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   185
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   186
        "/ old:
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   187
"/         builder buildFromSpec:subSpec in:scrolledView.
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   188
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   189
        "/ new (let app know (somehow) that this is a build
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   190
        "/ for a subcanvas (i.e. it can redefine the buildSubCanvase-method
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   191
        "/:
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   192
        savedView := builder window.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   193
        builder window:scrolledView.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   194
        client buildSubCanvas:subSpec withBuilder:builder.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   195
        builder window:savedView.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   196
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   197
        self realized ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   198
            scrolledView realizeAllSubViews
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   199
        ]
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   200
    ]
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
   201
973
9114f57c9977 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 970
diff changeset
   202
    "Modified: / 20.6.1998 / 14:29:00 / cg"
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   203
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   204
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   205
releaseAllComponents
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   206
    scrolledView destroySubViews.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   207
    builder := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   208
    spec    := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   209
    client  := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   210
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   211
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   212
!SubCanvas methodsFor:'change & update'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   213
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   214
update:something with:aParameter from:changedObject
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   215
    "one of my models changed its value
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   216
    "
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   217
    (changedObject == clientHolder or:[changedObject == specHolder]) ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   218
        self updateFromChannels
7cf5f021983d add method:
ca
parents: 554
diff changeset
   219
    ] ifFalse:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   220
        super update:something with:aParameter from:changedObject.
7cf5f021983d add method:
ca
parents: 554
diff changeset
   221
    ]
7cf5f021983d add method:
ca
parents: 554
diff changeset
   222
7cf5f021983d add method:
ca
parents: 554
diff changeset
   223
!
7cf5f021983d add method:
ca
parents: 554
diff changeset
   224
7cf5f021983d add method:
ca
parents: 554
diff changeset
   225
updateFromChannels
7cf5f021983d add method:
ca
parents: 554
diff changeset
   226
    "update canvas from channel
7cf5f021983d add method:
ca
parents: 554
diff changeset
   227
    "
7cf5f021983d add method:
ca
parents: 554
diff changeset
   228
    |client spec|
7cf5f021983d add method:
ca
parents: 554
diff changeset
   229
7cf5f021983d add method:
ca
parents: 554
diff changeset
   230
    clientHolder isNil ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   231
        client := self application
7cf5f021983d add method:
ca
parents: 554
diff changeset
   232
    ] ifFalse:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   233
        client := clientHolder value
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   234
    ].
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   235
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   236
    specHolder isNil ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   237
        spec := #windowSpec
7cf5f021983d add method:
ca
parents: 554
diff changeset
   238
    ] ifFalse:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   239
        spec := specHolder value
7cf5f021983d add method:
ca
parents: 554
diff changeset
   240
    ].
7cf5f021983d add method:
ca
parents: 554
diff changeset
   241
    (client notNil and:[spec notNil]) ifTrue:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   242
        self client:client spec:spec
7cf5f021983d add method:
ca
parents: 554
diff changeset
   243
    ] ifFalse:[
7cf5f021983d add method:
ca
parents: 554
diff changeset
   244
        self client:nil
7cf5f021983d add method:
ca
parents: 554
diff changeset
   245
    ]
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   246
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
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   250
!SubCanvas methodsFor:'initialization'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   251
609
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   252
destroy
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   253
    clientHolder notNil ifTrue:[
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   254
        clientHolder removeDependent:self.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   255
        clientHolder := nil.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   256
    ].
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   257
    specHolder notNil ifTrue:[
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   258
        specHolder removeDependent:self.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   259
        specHolder := nil.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   260
    ].
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   261
    super destroy.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   262
!
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   263
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   264
initialize
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   265
    super initialize.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   266
    self scrolledView:View new.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   267
    spec := #windowSpec.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   268
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   269
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   270
!SubCanvas methodsFor:'queries'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   271
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   272
application
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   273
    "return the application, under which this view was opened,
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   274
    "
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   275
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   276
    client notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   277
        ^ client
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
    ].
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   279
    ^ super application
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   280
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
! !
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
!SubCanvas class methodsFor:'documentation'!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
version
1383
1c0ffdda1a92 care for nil client.
Claus Gittinger <cg@exept.de>
parents: 1216
diff changeset
   286
    ^ '$Header: /cvs/stx/stx/libwidg2/SubCanvas.st,v 1.11 1999-05-21 16:26:11 cg Exp $'
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
! !