SubCanvas.st
author Claus Gittinger <cg@exept.de>
Fri, 15 Jun 2018 10:54:35 +0200
changeset 5816 7876c07931a7
parent 5767 83334680fcf7
child 5908 56d1ccc9de01
permissions -rw-r--r--
#DOCUMENTATION by cg class: ComboListView class comment/format in: #documentation
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
"
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    12
"{ Package: 'stx:libwidg2' }"
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
    13
4763
43faa1d15ca0 class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4611
diff changeset
    14
"{ NameSpace: Smalltalk }"
43faa1d15ca0 class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4611
diff changeset
    15
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
ScrollableView subclass:#SubCanvas
1912
dc3652682529 superView setting.
martin
parents: 1911
diff changeset
    17
	instanceVariableNames:'builder spec client clientHolder specHolder clientView
dc3652682529 superView setting.
martin
parents: 1911
diff changeset
    18
		clientViewIsScrolled lateBuild useApplicationSubView
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
    19
		keepClientView useOwnBuilder enforcedHorizontalMini
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
    20
		enforcedVerticalMini'
1912
dc3652682529 superView setting.
martin
parents: 1911
diff changeset
    21
	classVariableNames:''
dc3652682529 superView setting.
martin
parents: 1911
diff changeset
    22
	poolDictionaries:''
dc3652682529 superView setting.
martin
parents: 1911
diff changeset
    23
	category:'Views-Basic'
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    26
!SubCanvas class methodsFor:'documentation'!
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
copyright
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    29
"
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    30
 COPYRIGHT (c) 1998 by eXept Software AG
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    31
              All Rights Reserved
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    32
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    33
 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
    34
 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
    35
 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
    36
 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
    37
 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
    38
 hereby transferred.
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
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
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    43
documentation
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
    a view for a subApplication.
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    46
1895
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
    47
    Made to be VW compatible as much as possible (try opening a RefactoringBrowser ...).
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
    48
    However, the default setup is not very useful to embed arbitrary applications
1895
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
    49
    which are meant to be separate stand-alone applications.
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
    50
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
    51
    Use the settings:
1895
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
    52
        keepClientView          (default: true)
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
    53
        useApplicationSubView   (default: false)
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
    54
        useOwnBuilder           (default: false)
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
    55
970
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    56
    [author:]
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    57
        Claus Atzkern
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    58
"
8cbadf2b9825 also send #postBuildWith: to the app.
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
    59
! !
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
1414
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    61
!SubCanvas class methodsFor:'defaults'!
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    62
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    63
defaultHorizontalScrollable
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    64
    ^ false
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    65
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    66
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    67
!
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    68
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    69
defaultVerticalScrollable
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    70
    ^ false
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    71
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    72
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    73
! !
faf0465c333b defaults for hasHVScrollbar now defined in a class method.
tm
parents: 1412
diff changeset
    74
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
!SubCanvas methodsFor:'accessing'!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    77
builder
1893
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
    78
    ^ builder
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
    79
!
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
2857
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
    81
builder:aBuilder
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
    82
    builder := aBuilder 
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
    83
!
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
    84
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    85
client
1893
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
    86
    ^ client
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
    87
!
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
    89
client:anApplication spec:aWindowSpecOrSpecSymbol builder:aBuilder
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    "release existing components and generate new components from
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
     the given windowSpec, using the given builder."
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
2427
43e68ab02e63 oops - undo last change (postOpen when client changes)
Claus Gittinger <cg@exept.de>
parents: 2426
diff changeset
    93
    |myApp|
1471
09a5803325e4 when destroying or changing the client, release as subApp
Claus Gittinger <cg@exept.de>
parents: 1467
diff changeset
    94
1686
bafa16adbf14 must release client first,
ca
parents: 1664
diff changeset
    95
    (client notNil and:[client ~~ anApplication]) ifTrue:[
bafa16adbf14 must release client first,
ca
parents: 1664
diff changeset
    96
        client releaseAsSubCanvas.
bafa16adbf14 must release client first,
ca
parents: 1664
diff changeset
    97
        client := nil.
bafa16adbf14 must release client first,
ca
parents: 1664
diff changeset
    98
    ].
bafa16adbf14 must release client first,
ca
parents: 1664
diff changeset
    99
1546
452132649648 Moved #client: and #client:spec: to SimpleView.
Stefan Vogel <sv@exept.de>
parents: 1471
diff changeset
   100
    (builder := aBuilder) isNil ifTrue:[
3846
d786c6dba0a4 changed: #client:spec:builder: check on unspecified application
ca
parents: 3560
diff changeset
   101
        anApplication notNil ifTrue:[
d786c6dba0a4 changed: #client:spec:builder: check on unspecified application
ca
parents: 3560
diff changeset
   102
            builder := anApplication perform:#builder ifNotUnderstood:[ nil ]
d786c6dba0a4 changed: #client:spec:builder: check on unspecified application
ca
parents: 3560
diff changeset
   103
        ].
d786c6dba0a4 changed: #client:spec:builder: check on unspecified application
ca
parents: 3560
diff changeset
   104
        builder isNil ifTrue:[ builder := UIBuilder new ].
1546
452132649648 Moved #client: and #client:spec: to SimpleView.
Stefan Vogel <sv@exept.de>
parents: 1471
diff changeset
   105
    ].
452132649648 Moved #client: and #client:spec: to SimpleView.
Stefan Vogel <sv@exept.de>
parents: 1471
diff changeset
   106
452132649648 Moved #client: and #client:spec: to SimpleView.
Stefan Vogel <sv@exept.de>
parents: 1471
diff changeset
   107
    spec := aWindowSpecOrSpecSymbol.
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   108
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   109
    "/ check for master application
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   110
    (anApplication notNil and:[anApplication masterApplication isNil]) ifTrue:[
1471
09a5803325e4 when destroying or changing the client, release as subApp
Claus Gittinger <cg@exept.de>
parents: 1467
diff changeset
   111
        myApp := self application.
09a5803325e4 when destroying or changing the client, release as subApp
Claus Gittinger <cg@exept.de>
parents: 1467
diff changeset
   112
        myApp ~~ anApplication ifTrue:[
09a5803325e4 when destroying or changing the client, release as subApp
Claus Gittinger <cg@exept.de>
parents: 1467
diff changeset
   113
            anApplication masterApplication:myApp
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   114
        ]
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   115
    ].
1471
09a5803325e4 when destroying or changing the client, release as subApp
Claus Gittinger <cg@exept.de>
parents: 1467
diff changeset
   116
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   117
    client := anApplication.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   118
    self rebuild.
1471
09a5803325e4 when destroying or changing the client, release as subApp
Claus Gittinger <cg@exept.de>
parents: 1467
diff changeset
   119
    ^ builder
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   120
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   121
3340
1276fa7e42f1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   122
clientView
1276fa7e42f1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   123
    ^ clientView
1276fa7e42f1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   124
!
1276fa7e42f1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   125
3499
c946d359208e mouseWheel handling fixed
Claus Gittinger <cg@exept.de>
parents: 3485
diff changeset
   126
clientViewIsScrolled
c946d359208e mouseWheel handling fixed
Claus Gittinger <cg@exept.de>
parents: 3485
diff changeset
   127
    ^ clientViewIsScrolled
c946d359208e mouseWheel handling fixed
Claus Gittinger <cg@exept.de>
parents: 3485
diff changeset
   128
!
c946d359208e mouseWheel handling fixed
Claus Gittinger <cg@exept.de>
parents: 3485
diff changeset
   129
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   130
horizontalMini:aBoolean
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   131
    super horizontalMini:aBoolean.
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   132
    enforcedHorizontalMini := aBoolean.
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   133
!
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   134
3499
c946d359208e mouseWheel handling fixed
Claus Gittinger <cg@exept.de>
parents: 3485
diff changeset
   135
isScrollWrapper
c946d359208e mouseWheel handling fixed
Claus Gittinger <cg@exept.de>
parents: 3485
diff changeset
   136
    ^ clientViewIsScrolled
c946d359208e mouseWheel handling fixed
Claus Gittinger <cg@exept.de>
parents: 3485
diff changeset
   137
!
c946d359208e mouseWheel handling fixed
Claus Gittinger <cg@exept.de>
parents: 3485
diff changeset
   138
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   139
makeClientViewScrollable:shouldBeScrollable
3514
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   140
    |scroller|
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   141
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   142
    shouldBeScrollable ~~ clientViewIsScrolled ifTrue:[
1662
b5ab432da3b9 subApp-channel support;
Claus Gittinger <cg@exept.de>
parents: 1584
diff changeset
   143
        clientView isNil ifTrue:[
1895
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   144
            useApplicationSubView ifTrue:[
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   145
                clientView := ApplicationSubView new.
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   146
            ] ifFalse:[
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   147
                clientView := View new.
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   148
            ]
1662
b5ab432da3b9 subApp-channel support;
Claus Gittinger <cg@exept.de>
parents: 1584
diff changeset
   149
        ].
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   150
        shouldBeScrollable ifTrue:[
3514
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   151
            scroller := ViewScroller new.
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   152
            scroller viewBackground:self viewBackground.
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   153
            self scrolledView:scroller.
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   154
            scroller scrolledView:clientView.
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   155
        ] ifFalse:[
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   156
            self scrolledView:clientView.
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   157
        ].
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   158
        clientViewIsScrolled := shouldBeScrollable.
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   159
    ]
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   160
1662
b5ab432da3b9 subApp-channel support;
Claus Gittinger <cg@exept.de>
parents: 1584
diff changeset
   161
    "Modified: / 30.1.2000 / 21:36:29 / cg"
1412
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   162
!
b426fae6edcf fix ViewScroller in scrolledView
tm
parents: 1383
diff changeset
   163
1450
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   164
setClient:anApplicationModel
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   165
    "set the client - do NOT rebuild"
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   166
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   167
    client := anApplicationModel 
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   168
!
9994adae5c1c checkin from browser
tm
parents: 1414
diff changeset
   169
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   170
spec
1893
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   171
    ^ spec
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   172
!
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   173
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   174
spec:something
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   175
    spec := something.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   176
    self rebuild.
819
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   177
!
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   178
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   179
verticalMini:aBoolean
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   180
    super verticalMini:aBoolean.
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   181
    enforcedVerticalMini := aBoolean.
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   182
!
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   183
819
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   184
widget
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   185
    "ST80 compatibility. 
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   186
     I am my own widget"
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   187
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   188
    ^ self
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   189
8450cb2ba595 Widget of SubCanvas is self
Stefan Vogel <sv@exept.de>
parents: 609
diff changeset
   190
    "Created: / 10.3.1998 / 16:20:52 / stefan"
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   191
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   192
2404
2b7591c982ac category change
Claus Gittinger <cg@exept.de>
parents: 2395
diff changeset
   193
!SubCanvas methodsFor:'accessing-canvasView handling'!
1895
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   194
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   195
keepClientView:aBoolean
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   196
    keepClientView := aBoolean
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   197
!
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   198
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   199
useApplicationSubView:aBoolean
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   200
    useApplicationSubView := aBoolean
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   201
!
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   202
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   203
useOwnBuilder:aBoolean
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   204
    useOwnBuilder := aBoolean
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   205
! !
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   206
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   207
!SubCanvas methodsFor:'accessing-channels'!
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   208
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   209
clientHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   210
    ^ clientHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   211
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   212
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   213
clientHolder:aValueHolder
2857
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   214
    |oldClient|
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   215
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   216
    clientHolder notNil ifTrue:[
2857
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   217
        oldClient := clientHolder value.
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   218
        clientHolder removeDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   219
    ].
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   220
    (clientHolder := aValueHolder) notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   221
        clientHolder addDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   222
    ].
2857
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   223
    oldClient ~~ clientHolder value ifTrue:[
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   224
        self updateFromChannels
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   225
    ]
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   226
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   227
1893
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   228
clientView:aView
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   229
    clientView notNil ifTrue:[
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   230
        clientView destroy
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   231
    ].
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   232
    clientView := aView
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   233
!
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   234
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   235
specHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   236
    ^ specHolder
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   237
!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   238
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   239
specHolder:aValueHolder
1905
20ff18462cc6 care for keepClientView setting
tm
parents: 1895
diff changeset
   240
    |oldSpec|
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   241
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   242
    specHolder notNil ifTrue:[
1905
20ff18462cc6 care for keepClientView setting
tm
parents: 1895
diff changeset
   243
        oldSpec := specHolder value.
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   244
        specHolder removeDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   245
    ].
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   246
    (specHolder := aValueHolder) notNil ifTrue:[
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   247
        specHolder addDependent:self
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   248
    ].
1905
20ff18462cc6 care for keepClientView setting
tm
parents: 1895
diff changeset
   249
    oldSpec ~~ specHolder value ifTrue:[
20ff18462cc6 care for keepClientView setting
tm
parents: 1895
diff changeset
   250
        self updateFromChannels
20ff18462cc6 care for keepClientView setting
tm
parents: 1895
diff changeset
   251
    ]
2857
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   252
!
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   253
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   254
specHolder:newSpecHolder clientHolder:newClientHolder
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   255
    |oldSpec oldClient|
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   256
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   257
    clientHolder notNil ifTrue:[
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   258
        oldClient := clientHolder value.
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   259
        clientHolder removeDependent:self
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   260
    ].
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   261
    specHolder notNil ifTrue:[
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   262
        oldSpec := specHolder value.
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   263
        specHolder removeDependent:self
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   264
    ].
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   265
    (specHolder := newSpecHolder) notNil ifTrue:[
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   266
        specHolder addDependent:self
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   267
    ].
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   268
    (clientHolder := newClientHolder) notNil ifTrue:[
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   269
        clientHolder addDependent:self
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   270
    ].
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   271
    ((oldSpec ~~ specHolder value) or:[oldClient ~~ clientHolder value]) ifTrue:[
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   272
        self updateFromChannels
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   273
    ]
503
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
!SubCanvas methodsFor:'building'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   277
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   278
container:aView
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   279
    super container:aView.
1846
e90341acd040 comment
Claus Gittinger <cg@exept.de>
parents: 1818
diff changeset
   280
e90341acd040 comment
Claus Gittinger <cg@exept.de>
parents: 1818
diff changeset
   281
    "/ my builder can only build the components, when I have a container
e90341acd040 comment
Claus Gittinger <cg@exept.de>
parents: 1818
diff changeset
   282
    "/ lateBuild is set, if the spec was set some time ago, when I had no container
e90341acd040 comment
Claus Gittinger <cg@exept.de>
parents: 1818
diff changeset
   283
    "/ Now, we know where to build the GUI ...
e90341acd040 comment
Claus Gittinger <cg@exept.de>
parents: 1818
diff changeset
   284
    "/ ... and must hurry up to create the widgets.
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   285
    lateBuild == true ifTrue:[
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   286
        lateBuild := false.
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   287
        self rebuild
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   288
    ].
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   289
!
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   290
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   291
rebuild
2912
ac740f182061 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2857
diff changeset
   292
    "rebuild my GUI from the spec."
ac740f182061 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2857
diff changeset
   293
5767
83334680fcf7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5766
diff changeset
   294
    |subSpec subWindowSpec savedView savedBuilder builderClass hasHScroller hasVScroller sameAppAsTopApp|
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   295
1856
8ecbdc69f11e comment
Claus Gittinger <cg@exept.de>
parents: 1846
diff changeset
   296
    "/ if the superView is not yet created,
8ecbdc69f11e comment
Claus Gittinger <cg@exept.de>
parents: 1846
diff changeset
   297
    "/ we MUST delay building... (sigh)
1905
20ff18462cc6 care for keepClientView setting
tm
parents: 1895
diff changeset
   298
    superView isNil ifTrue:[          
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   299
        lateBuild := true.
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   300
        ^ self
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   301
    ].
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   302
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   303
    clientView notNil ifTrue:[
1893
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   304
        clientView destroySubViews.
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   305
    ].
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   306
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   307
    spec notNil ifTrue:[
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   308
        subSpec := spec.
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   309
        subSpec isSymbol ifTrue:[
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   310
            client isNil ifTrue:[
2394
c3984ea38fb5 only output warning 'no client...' if clientHolder is nil.
Claus Gittinger <cg@exept.de>
parents: 2156
diff changeset
   311
                clientHolder isNil ifTrue:[
2395
db8f819ae751 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
   312
                    ('SubCanvas [warning]: no client - cannot build spec: ' , spec) infoPrintCR.
2394
c3984ea38fb5 only output warning 'no client...' if clientHolder is nil.
Claus Gittinger <cg@exept.de>
parents: 2156
diff changeset
   313
                ].
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   314
                ^ self
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   315
            ].
3392
0d0461a20004 interfaceSpecFor: must go via the instance
Claus Gittinger <cg@exept.de>
parents: 3354
diff changeset
   316
            (subSpec := client interfaceSpecFor:spec) isNil ifTrue:[
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   317
                "/ Transcript showCR:'SubCanvas: nil spec'.
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   318
                ^ self
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   319
            ]
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   320
        ].
1662
b5ab432da3b9 subApp-channel support;
Claus Gittinger <cg@exept.de>
parents: 1584
diff changeset
   321
        subSpec isArray ifTrue:[
3340
1276fa7e42f1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   322
            subSpec := subSpec decodeAsLiteralArray.
3560
da82e25a9b0f changed #rebuild
Claus Gittinger <cg@exept.de>
parents: 3514
diff changeset
   323
            subSpec isArray ifTrue:[self halt:'oops - decode failed'].
1662
b5ab432da3b9 subApp-channel support;
Claus Gittinger <cg@exept.de>
parents: 1584
diff changeset
   324
        ].
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   325
        builder isNil ifTrue:[
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   326
            client isNil ifTrue:[
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   327
                builderClass := UIBuilder
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   328
            ] ifFalse:[
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   329
                builderClass := client builderClass
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   330
            ].
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   331
            builder := builderClass new.
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   332
        ].
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   333
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   334
        "/ old:
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   335
        "/  builder buildFromSpec:subSpec in:clientView.
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   336
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   337
        "/ new (let app know (somehow) that this is a build
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   338
        "/ for a subcanvas (i.e. it can redefine the buildSubCanvas-method):
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   339
1895
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   340
        keepClientView ifFalse:[
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   341
            (clientView notNil and:[clientView application ~~ client]) ifTrue:[
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   342
                clientView destroy.
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   343
                clientView := nil.
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   344
            ].
1893
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   345
        ].
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   346
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   347
        clientView isNil ifTrue:[
1927
4cb8e4ecc425 previous behavior
Claus Gittinger <cg@exept.de>
parents: 1925
diff changeset
   348
            "/ create a new view
1925
6026af8498a5 if keepClientView is set, care for a view being already
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   349
1927
4cb8e4ecc425 previous behavior
Claus Gittinger <cg@exept.de>
parents: 1925
diff changeset
   350
            useApplicationSubView ifTrue:[
4cb8e4ecc425 previous behavior
Claus Gittinger <cg@exept.de>
parents: 1925
diff changeset
   351
                clientView := ApplicationSubView new.
4cb8e4ecc425 previous behavior
Claus Gittinger <cg@exept.de>
parents: 1925
diff changeset
   352
            ] ifFalse:[
4cb8e4ecc425 previous behavior
Claus Gittinger <cg@exept.de>
parents: 1925
diff changeset
   353
                clientView := View new.
3514
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   354
            ].
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   355
            clientView viewBackground:self viewBackground.
1893
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   356
        ].
3271
4a1efb576208 update application after rebuild new application
ca
parents: 2916
diff changeset
   357
        useApplicationSubView ifTrue:[
4a1efb576208 update application after rebuild new application
ca
parents: 2916
diff changeset
   358
            clientView application:client.
4a1efb576208 update application after rebuild new application
ca
parents: 2916
diff changeset
   359
        ].
1893
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   360
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   361
        savedView := builder window.
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   362
        builder window:clientView.
1895
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   363
        useOwnBuilder ifTrue:[
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   364
            savedBuilder := client builder.
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   365
            client builder:builder.
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   366
        ].
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   367
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   368
        [   
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   369
            |savedSuperView|
1912
dc3652682529 superView setting.
martin
parents: 1911
diff changeset
   370
dc3652682529 superView setting.
martin
parents: 1911
diff changeset
   371
            "/ kludge: need superView to be set correctly, in order for
dc3652682529 superView setting.
martin
parents: 1911
diff changeset
   372
            "/ postBuildAsSubCanvas to be invoked (instead of postBuild)
dc3652682529 superView setting.
martin
parents: 1911
diff changeset
   373
            "/ however, must unset the superView for code below ...
dc3652682529 superView setting.
martin
parents: 1911
diff changeset
   374
            savedSuperView := clientView superView.
1914
943f0551bf62 use #setContainer: (to avoid warning message)
penk
parents: 1913
diff changeset
   375
            savedSuperView isNil ifTrue:[clientView setContainer:self].
1912
dc3652682529 superView setting.
martin
parents: 1911
diff changeset
   376
            client buildSubCanvas:subSpec withBuilder:builder.
3485
d3eaa466fc23 care for viewBackground (coming from embedded spec)
Claus Gittinger <cg@exept.de>
parents: 3392
diff changeset
   377
d3eaa466fc23 care for viewBackground (coming from embedded spec)
Claus Gittinger <cg@exept.de>
parents: 3392
diff changeset
   378
            subSpec class == FullSpec ifTrue:[
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   379
                subWindowSpec := subSpec window.
3485
d3eaa466fc23 care for viewBackground (coming from embedded spec)
Claus Gittinger <cg@exept.de>
parents: 3392
diff changeset
   380
                "/ mhmh - should we take the attributes from the windowSpec or from my spec ????
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   381
                subWindowSpec setBackgroundColorAttributesIn:clientView with:builder.
3485
d3eaa466fc23 care for viewBackground (coming from embedded spec)
Claus Gittinger <cg@exept.de>
parents: 3392
diff changeset
   382
            ].
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   383
            savedSuperView isNil ifTrue:[
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   384
                clientView setContainer:nil. 
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   385
                self removeSubView:clientView.
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   386
            ].
1905
20ff18462cc6 care for keepClientView setting
tm
parents: 1895
diff changeset
   387
20ff18462cc6 care for keepClientView setting
tm
parents: 1895
diff changeset
   388
            keepClientView ifFalse:[    
3514
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   389
                self assert:(scrolledView isNil or:[(clientView isComponentOf:scrolledView) not]).
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   390
                self scrolledView:clientView.
1907
e8efd065dc2b oops - clientView again
Claus Gittinger <cg@exept.de>
parents: 1906
diff changeset
   391
            ] ifTrue:[
1908
e86e34794e84 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1907
diff changeset
   392
                (clientView isComponentOf:self) ifFalse:[
1907
e8efd065dc2b oops - clientView again
Claus Gittinger <cg@exept.de>
parents: 1906
diff changeset
   393
                    self scrolledView:clientView.
e8efd065dc2b oops - clientView again
Claus Gittinger <cg@exept.de>
parents: 1906
diff changeset
   394
                ]
1905
20ff18462cc6 care for keepClientView setting
tm
parents: 1895
diff changeset
   395
            ]
2083
d7b305aea776 #valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents: 1927
diff changeset
   396
        ] ensure:[
1662
b5ab432da3b9 subApp-channel support;
Claus Gittinger <cg@exept.de>
parents: 1584
diff changeset
   397
            savedView notNil ifTrue:[
b5ab432da3b9 subApp-channel support;
Claus Gittinger <cg@exept.de>
parents: 1584
diff changeset
   398
                builder window:savedView.
1893
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   399
            ].
1895
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   400
            useOwnBuilder ifTrue:[
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   401
                savedBuilder notNil ifTrue:[
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   402
                    client builder:savedBuilder.
a1b2502c91d7 went back halfway to the old behavior,
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   403
                ]
1662
b5ab432da3b9 subApp-channel support;
Claus Gittinger <cg@exept.de>
parents: 1584
diff changeset
   404
            ]
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   405
        ].
1893
6456c11a1307 View -> ApplicationSubView
tm
parents: 1856
diff changeset
   406
1664
a8b97314f813 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1662
diff changeset
   407
        clientViewIsScrolled ifTrue:[
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   408
            (subWindowSpec notNil and:[subWindowSpec layout notNil]) ifTrue:[
3340
1276fa7e42f1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   409
                "/ mhmh - what should we base the size computation on ?
5315
06a51abce443 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4763
diff changeset
   410
                "/ (I don't see any reason to look at the windows spec at all;
3340
1276fa7e42f1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   411
                "/  isn't the user of the spec the only one to control the size).
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   412
                clientView extent:(subWindowSpec bounds extent)
3340
1276fa7e42f1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   413
            ] ifFalse:[
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   414
                "/ clientView extent:(subWindowSpec bounds extent)
3340
1276fa7e42f1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3271
diff changeset
   415
            ].
3352
4ccd30154ced oops - forgot the comment:
Claus Gittinger <cg@exept.de>
parents: 3351
diff changeset
   416
            self sizeChanged:nil.   "/ to force recomputation of the scrollbar
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   417
        ] ifFalse:[
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   418
            "/ clientView extent:(clientView preferredExtent)
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   419
        ].
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   420
        hasVScroller := hasHScroller := false.
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   421
        subWindowSpec notNil ifTrue:[
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   422
            hasVScroller := hasHorizontalScrollBar and:[subWindowSpec hasVerticalScrollBar].
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   423
            hasHScroller := hasVerticalScrollBar and:[subWindowSpec hasHorizontalScrollBar].
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   424
        ].
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   425
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   426
        hasVScroller ifFalse:[
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   427
            "/ clientView gets my size
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   428
            clientView height:1.0.
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   429
        ] ifTrue:[
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   430
            "/ clientView takes what it wants, but is scrolled by the viewScroller
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   431
            clientView height:(clientView preferredExtent y).
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   432
            super verticalMini:(enforcedVerticalMini or:[subWindowSpec miniScrollerVertical]).
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   433
        ].
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   434
        hasHScroller ifFalse:[
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   435
            "/ clientView gets my size
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   436
            clientView width:1.0.
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   437
        ] ifTrue:[
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   438
            "/ clientView takes what it wants, but is scrolled by the viewScroller
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   439
            clientView width:(clientView preferredExtent x).
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   440
            super horizontalMini:(enforcedHorizontalMini or:[subWindowSpec miniScrollerHorizontal]).
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   441
        ].
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   442
        clientViewIsScrolled ifTrue:[
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   443
            scrolledView resizeScrolledViewVertical:hasVScroller not.
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   444
            scrolledView resizeScrolledViewHorizontal:hasHScroller not.
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   445
        ] ifFalse:[
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   446
            "/ self halt.
1664
a8b97314f813 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1662
diff changeset
   447
        ].
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   448
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   449
        self realized ifTrue:[
4763
43faa1d15ca0 class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4611
diff changeset
   450
            "/ cg: I think we should call
5766
dd7d8ff38b2b #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5315
diff changeset
   451
            "/      clientView recursiveRealizeAllSubViews.
4763
43faa1d15ca0 class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4611
diff changeset
   452
            "/ instead of: 
5766
dd7d8ff38b2b #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5315
diff changeset
   453
            "/ but check this heavily bevore changing!!    
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   454
            clientView realizeAllSubViews.
4763
43faa1d15ca0 class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4611
diff changeset
   455
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   456
            clientViewIsScrolled ifTrue:[
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   457
                scrolledView repositionScrolledView.
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   458
                scrolledView resizeScrolledView
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   459
            ].
5766
dd7d8ff38b2b #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5315
diff changeset
   460
            "/ mhm - it is opened freshly
dd7d8ff38b2b #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5315
diff changeset
   461
            "/ if not called here, we'd loose this message 
dd7d8ff38b2b #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5315
diff changeset
   462
            "/ (my appSubView sends this when it gets realized)   
5767
83334680fcf7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5766
diff changeset
   463
            sameAppAsTopApp := client == builder window topView application.
83334680fcf7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5766
diff changeset
   464
            sameAppAsTopApp ifTrue:[
83334680fcf7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5766
diff changeset
   465
                client postOpenAsSubcanvasWith:builder
83334680fcf7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5766
diff changeset
   466
            ] ifFalse:[
83334680fcf7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5766
diff changeset
   467
                client postOpenWith:builder
83334680fcf7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5766
diff changeset
   468
            ].    
1662
b5ab432da3b9 subApp-channel support;
Claus Gittinger <cg@exept.de>
parents: 1584
diff changeset
   469
        ].
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   470
    ]
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   471
5766
dd7d8ff38b2b #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5315
diff changeset
   472
    "Modified: / 30-01-2000 / 21:36:40 / cg"
5767
83334680fcf7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 5766
diff changeset
   473
    "Modified: / 22-05-2018 / 18:50:47 / Claus Gittinger"
1584
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   474
!
f020416e00ae LetterPrinter now works, after changing #rebuild.
Stefan Vogel <sv@exept.de>
parents: 1577
diff changeset
   475
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   476
releaseAllComponents
2916
27dd039c1cc7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2912
diff changeset
   477
    clientView notNil ifTrue:[
27dd039c1cc7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2912
diff changeset
   478
        clientView destroySubViews.
27dd039c1cc7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2912
diff changeset
   479
    ].
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   480
    builder := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   481
    spec    := nil.
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   482
    client  := nil.
1662
b5ab432da3b9 subApp-channel support;
Claus Gittinger <cg@exept.de>
parents: 1584
diff changeset
   483
b5ab432da3b9 subApp-channel support;
Claus Gittinger <cg@exept.de>
parents: 1584
diff changeset
   484
    "Modified: / 31.1.2000 / 16:56:14 / cg"
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   485
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   486
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   487
!SubCanvas methodsFor:'change & update'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   488
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   489
update:something with:aParameter from:changedObject
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   490
    (changedObject == clientHolder or:[changedObject == specHolder]) ifTrue:[
2478
654d6ffde1f8 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2427
diff changeset
   491
        self updateFromChannels.
654d6ffde1f8 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2427
diff changeset
   492
        ^ self
654d6ffde1f8 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2427
diff changeset
   493
    ].
654d6ffde1f8 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2427
diff changeset
   494
    super update:something with:aParameter from:changedObject.
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   495
!
7cf5f021983d add method:
ca
parents: 554
diff changeset
   496
7cf5f021983d add method:
ca
parents: 554
diff changeset
   497
updateFromChannels
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   498
    "some of our channels (clientHolder, specHolder) changed"
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   499
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   500
    |newClient newSpec uiBuilder|
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   501
7cf5f021983d add method:
ca
parents: 554
diff changeset
   502
    clientHolder isNil ifTrue:[
2857
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   503
        newClient := self application.
4611
8c77f5d5a201 class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4579
diff changeset
   504
        "/ new code added Jun,7 2014 (used to always create new builder)
8c77f5d5a201 class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4579
diff changeset
   505
useOwnBuilder ifFalse:[
8c77f5d5a201 class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4579
diff changeset
   506
    uiBuilder := newClient builder.
8c77f5d5a201 class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4579
diff changeset
   507
] ifTrue:[
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   508
        uiBuilder := UIBuilder new.
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   509
        uiBuilder isSubBuilder:true.
4611
8c77f5d5a201 class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4579
diff changeset
   510
].
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   511
    ] ifFalse:[
2857
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   512
        newClient := clientHolder value
554
c32ed45bfc6e bug fixes for spec derived from channel
ca
parents: 553
diff changeset
   513
    ].
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   514
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   515
    specHolder isNil ifTrue:[
2857
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   516
        newSpec := #windowSpec
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   517
    ] ifFalse:[
2857
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   518
        newSpec := specHolder value
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   519
    ].
2857
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   520
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   521
    (newClient notNil and:[newSpec notNil]) ifTrue:[
557
7cf5f021983d add method:
ca
parents: 554
diff changeset
   522
    ] ifFalse:[
1467
2d85bd1a8267 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   523
"/        spec notNil ifTrue:[
2d85bd1a8267 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   524
"/            self halt:'spec but no app'.
2d85bd1a8267 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   525
"/        ].
2857
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   526
        newClient := nil.
8bfa2eebfd2e avoid double-update if clientHolder and specHolder are both set
Claus Gittinger <cg@exept.de>
parents: 2735
diff changeset
   527
        newSpec := #windowSpec.  "/ is that true ?
1894
f0469313b9f8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1893
diff changeset
   528
    ].
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   529
    self client:newClient spec:newSpec builder:uiBuilder
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   530
1467
2d85bd1a8267 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
   531
    "Modified: / 5.8.1999 / 13:35:26 / cg"
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   532
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   533
3514
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   534
!SubCanvas methodsFor:'delegation'!
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   535
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   536
viewBackground:aColor
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   537
    "convenient method: forward this to the scrolledView"
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   538
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   539
    super viewBackground:aColor.
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   540
    (scrolledView notNil and:[scrolledView ~= clientView]) ifTrue:[
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   541
        scrolledView viewBackground:aColor
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   542
    ].
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   543
! !
f90f271410dd When using a viewscroller, propagate viewBackground to the viewscroller
Stefan Vogel <sv@exept.de>
parents: 3499
diff changeset
   544
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   545
!SubCanvas methodsFor:'initialization'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   546
2156
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   547
initialize
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   548
    super initialize.
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   549
    clientViewIsScrolled := false.
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   550
    enforcedVerticalMini := enforcedHorizontalMini := false.
2156
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   551
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   552
    "/ these defaults make subCanvas compatible with VW;
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   553
    "/ however, they make our life difficult sometimes.
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   554
    keepClientView := true.
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   555
    useApplicationSubView := true "false".
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   556
    useOwnBuilder := false.
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   557
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   558
    spec := #windowSpec.
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   559
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   560
    "Modified: / 31.1.2000 / 16:56:31 / cg"
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   561
!
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   562
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   563
release
1471
09a5803325e4 when destroying or changing the client, release as subApp
Claus Gittinger <cg@exept.de>
parents: 1467
diff changeset
   564
    client notNil ifTrue:[
1702
ff202e263b9d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1686
diff changeset
   565
        client == self application ifTrue:[
ff202e263b9d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1686
diff changeset
   566
            client releaseAsSubCanvas.
ff202e263b9d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1686
diff changeset
   567
        ] ifFalse:[
ff202e263b9d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1686
diff changeset
   568
            client release
ff202e263b9d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1686
diff changeset
   569
        ].
1471
09a5803325e4 when destroying or changing the client, release as subApp
Claus Gittinger <cg@exept.de>
parents: 1467
diff changeset
   570
    ].
09a5803325e4 when destroying or changing the client, release as subApp
Claus Gittinger <cg@exept.de>
parents: 1467
diff changeset
   571
609
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   572
    clientHolder notNil ifTrue:[
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   573
        clientHolder removeDependent:self.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   574
        clientHolder := nil.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   575
    ].
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   576
    specHolder notNil ifTrue:[
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   577
        specHolder removeDependent:self.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   578
        specHolder := nil.
ad75d5f13ca1 implement destroy:
ca
parents: 557
diff changeset
   579
    ].
2156
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2121
diff changeset
   580
    super release.
1702
ff202e263b9d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1686
diff changeset
   581
ff202e263b9d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1686
diff changeset
   582
    "Modified: / 13.2.2000 / 23:31:12 / cg"
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   583
! !
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   584
1720
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   585
!SubCanvas methodsFor:'layout'!
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   586
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   587
usedScrolledViewHMarginWhenHasV:hasV andHasH:hasH
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   588
    "return the horizontal margin around (outer margin).
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   589
     Redefined to avoid margin when no scrollers are present"
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   590
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   591
    ^ (hasV or:[hasH]) ifTrue:[scrolledViewHMargin] ifFalse:[0]
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   592
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   593
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   594
!
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   595
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   596
usedScrolledViewVMarginWhenHasV:hasV andHasH:hasH
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   597
    "return the horizontal margin around (outer margin).
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   598
     Redefined to avoid margin when no scrollers are present"
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   599
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   600
    ^ (hasV or:[hasH]) ifTrue:[scrolledViewVMargin] ifFalse:[0]
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   601
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   602
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   603
! !
d855968ce342 redefine margin computations (avoid margin if subcanvas does not scroll).
Claus Gittinger <cg@exept.de>
parents: 1702
diff changeset
   604
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   605
!SubCanvas methodsFor:'queries'!
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   606
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   607
application
3354
1f993ecf2265 Clean up documentation & variable names
Stefan Vogel <sv@exept.de>
parents: 3352
diff changeset
   608
    "return the application, under which this view was opened"
503
0a3ef2d34d9d add application holder
ca
parents: 455
diff changeset
   609
4062
db9056656c2d changed: #application
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   610
    ^ client notNil ifTrue:[ client ] ifFalse:[ super application ]
db9056656c2d changed: #application
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   611
db9056656c2d changed: #application
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   612
    "Modified: / 18-07-2011 / 09:55:11 / cg"
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   613
! !
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   614
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   615
!SubCanvas class methodsFor:'documentation'!
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   616
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   617
version
5315
06a51abce443 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4763
diff changeset
   618
    ^ '$Header$'
3846
d786c6dba0a4 changed: #client:spec:builder: check on unspecified application
ca
parents: 3560
diff changeset
   619
!
d786c6dba0a4 changed: #client:spec:builder: check on unspecified application
ca
parents: 3560
diff changeset
   620
d786c6dba0a4 changed: #client:spec:builder: check on unspecified application
ca
parents: 3560
diff changeset
   621
version_CVS
5315
06a51abce443 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4763
diff changeset
   622
    ^ '$Header$'
455
860d66c9f047 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   623
! !
4579
273356d6578d class: SubCanvas
Claus Gittinger <cg@exept.de>
parents: 4062
diff changeset
   624