author | Claus Gittinger <cg@exept.de> |
Thu, 24 Oct 2002 21:16:06 +0200 | |
changeset 1646 | da8d044c7c0d |
parent 1558 | 1ae43779327f |
child 1771 | 2b19a370b1b2 |
permissions | -rw-r--r-- |
0 | 1 |
" |
6 | 2 |
COPYRIGHT (c) 1992 by Claus Gittinger |
35 | 3 |
All Rights Reserved |
0 | 4 |
|
5 |
This software is furnished under a license and may be used |
|
6 |
only in accordance with the terms of that license and with the |
|
7 |
inclusion of the above copyright notice. This software may not |
|
8 |
be provided or otherwise made available to, or used by, any |
|
9 |
other person. No title to or ownership of the software is |
|
10 |
hereby transferred. |
|
11 |
" |
|
12 |
||
1558
1ae43779327f
#valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents:
1366
diff
changeset
|
13 |
"{ Package: 'stx:libview2' }" |
1ae43779327f
#valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents:
1366
diff
changeset
|
14 |
|
0 | 15 |
Object subclass:#Model |
163
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
16 |
instanceVariableNames:'dependents' |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
17 |
classVariableNames:'' |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
18 |
poolDictionaries:'' |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
19 |
category:'Interface-Support-Models' |
0 | 20 |
! |
21 |
||
353
e9071756b6a7
oops - removeDependent: removed the dependent, even if
Claus Gittinger <cg@exept.de>
parents:
337
diff
changeset
|
22 |
!Model class methodsFor:'documentation'! |
21 | 23 |
|
24 |
copyright |
|
25 |
" |
|
26 |
COPYRIGHT (c) 1992 by Claus Gittinger |
|
35 | 27 |
All Rights Reserved |
0 | 28 |
|
21 | 29 |
This software is furnished under a license and may be used |
30 |
only in accordance with the terms of that license and with the |
|
31 |
inclusion of the above copyright notice. This software may not |
|
32 |
be provided or otherwise made available to, or used by, any |
|
33 |
other person. No title to or ownership of the software is |
|
34 |
hereby transferred. |
|
35 |
" |
|
36 |
! |
|
0 | 37 |
|
21 | 38 |
documentation |
39 |
" |
|
238 | 40 |
Models are things which represent information models, i.e. something |
41 |
which holds the data for user interface components and on which these operate. |
|
42 |
Basically, instances keep track of which components depend on them and |
|
43 |
inform the dependents of any changes. |
|
44 |
||
45 |
The Model class itself is abstract and not too useful, see subclasses, |
|
46 |
especially, ValueHolder and SelectionInList. |
|
47 |
||
48 |
Notice: |
|
49 |
Actually the Model class is not really needed; since the dependency |
|
50 |
mechanism is inherited by Object, you can take any object as a model. |
|
51 |
However, instances of Model (and subclasses) keep the dependents locally |
|
52 |
in an instance variable; thus speeding up access a bit. |
|
35 | 53 |
|
223 | 54 |
[Instance variables:] |
238 | 55 |
dependents <Collection> those objects which depend on me. |
56 |
To save some storage, a single dependent |
|
57 |
is kept directly here. |
|
58 |
Otherwise, if there are multiple dependents, |
|
59 |
a collection of dependents is held here. |
|
223 | 60 |
|
61 |
[author:] |
|
62 |
Claus Gittinger |
|
238 | 63 |
|
64 |
[see also:] |
|
65 |
ValueHolder SelectionInList |
|
66 |
( introduction to view programming :html: programming/viewintro.html#MVC ) |
|
21 | 67 |
" |
125 | 68 |
! ! |
69 |
||
1244 | 70 |
!Model methodsFor:'converting'! |
71 |
||
72 |
skippedInLiteralEncoding |
|
73 |
"return a Collection with it's elements are slots for skipping |
|
74 |
" |
|
75 |
^ OrderedCollection with:#dependents |
|
76 |
! ! |
|
77 |
||
125 | 78 |
!Model methodsFor:'copying'! |
79 |
||
80 |
postCopy |
|
81 |
"release dependents after copying" |
|
82 |
||
83 |
self dependents:nil |
|
1236
bdd6c63288bd
deepCopy fix (do not copy dependents)
Claus Gittinger <cg@exept.de>
parents:
795
diff
changeset
|
84 |
! |
bdd6c63288bd
deepCopy fix (do not copy dependents)
Claus Gittinger <cg@exept.de>
parents:
795
diff
changeset
|
85 |
|
bdd6c63288bd
deepCopy fix (do not copy dependents)
Claus Gittinger <cg@exept.de>
parents:
795
diff
changeset
|
86 |
skipInstvarIndexInDeepCopy:index |
bdd6c63288bd
deepCopy fix (do not copy dependents)
Claus Gittinger <cg@exept.de>
parents:
795
diff
changeset
|
87 |
"a helper for deepCopy; only indices for which this method returns |
bdd6c63288bd
deepCopy fix (do not copy dependents)
Claus Gittinger <cg@exept.de>
parents:
795
diff
changeset
|
88 |
false are copied in a deep copy." |
bdd6c63288bd
deepCopy fix (do not copy dependents)
Claus Gittinger <cg@exept.de>
parents:
795
diff
changeset
|
89 |
|
bdd6c63288bd
deepCopy fix (do not copy dependents)
Claus Gittinger <cg@exept.de>
parents:
795
diff
changeset
|
90 |
index == 1 ifTrue:[ |
bdd6c63288bd
deepCopy fix (do not copy dependents)
Claus Gittinger <cg@exept.de>
parents:
795
diff
changeset
|
91 |
^ true "/ skip dependents |
bdd6c63288bd
deepCopy fix (do not copy dependents)
Claus Gittinger <cg@exept.de>
parents:
795
diff
changeset
|
92 |
]. |
bdd6c63288bd
deepCopy fix (do not copy dependents)
Claus Gittinger <cg@exept.de>
parents:
795
diff
changeset
|
93 |
^ false |
21 | 94 |
! ! |
0 | 95 |
|
83 | 96 |
!Model methodsFor:'dependents access'! |
0 | 97 |
|
83 | 98 |
addDependent:anObject |
99 |
"make the argument, anObject be a dependent of the receiver" |
|
100 |
||
318
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
101 |
|wasBlocked| |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
102 |
|
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
103 |
wasBlocked := OperatingSystem blockInterrupts. |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
104 |
[ |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
105 |
|deps| |
83 | 106 |
|
163
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
107 |
deps := dependents. |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
108 |
"/ |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
109 |
"/ store the very first dependent directly in |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
110 |
"/ the dependents instVar |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
111 |
"/ |
163
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
112 |
(deps isNil and:[anObject isCollection not]) ifTrue:[ |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
113 |
dependents := anObject |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
114 |
] ifFalse:[ |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
115 |
"/ |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
116 |
"/ store more dependents in the dependents collection |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
117 |
"/ |
163
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
118 |
deps isCollection ifTrue:[ |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
119 |
deps add:anObject |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
120 |
] ifFalse:[ |
353
e9071756b6a7
oops - removeDependent: removed the dependent, even if
Claus Gittinger <cg@exept.de>
parents:
337
diff
changeset
|
121 |
deps == anObject ifFalse:[ |
1366 | 122 |
deps isNil ifTrue:[ |
123 |
dependents := (IdentitySet with:anObject) |
|
124 |
] ifFalse:[ |
|
125 |
dependents := (IdentitySet with:deps with:anObject) |
|
126 |
] |
|
353
e9071756b6a7
oops - removeDependent: removed the dependent, even if
Claus Gittinger <cg@exept.de>
parents:
337
diff
changeset
|
127 |
] |
163
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
128 |
] |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
129 |
] |
1558
1ae43779327f
#valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents:
1366
diff
changeset
|
130 |
] ensure:[ |
318
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
131 |
wasBlocked ifFalse:[ |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
132 |
OperatingSystem unblockInterrupts |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
133 |
] |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
134 |
] |
163
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
135 |
|
353
e9071756b6a7
oops - removeDependent: removed the dependent, even if
Claus Gittinger <cg@exept.de>
parents:
337
diff
changeset
|
136 |
"Modified: 8.1.1997 / 23:40:30 / cg" |
83 | 137 |
! |
138 |
||
125 | 139 |
dependents |
771 | 140 |
"return a Collection of dependents" |
125 | 141 |
|
720
b0e0977e1759
dependents now always returns a collection
Claus Gittinger <cg@exept.de>
parents:
353
diff
changeset
|
142 |
dependents isNil ifTrue:[^ #()]. |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
143 |
dependents isCollection ifTrue:[ |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
144 |
^ dependents |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
145 |
]. |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
146 |
^ IdentitySet with:dependents |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
147 |
|
771 | 148 |
"Modified: / 26.1.1998 / 11:18:24 / cg" |
125 | 149 |
! |
150 |
||
151 |
dependents:aCollection |
|
152 |
"set the collection of dependents" |
|
153 |
||
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
154 |
|dep| |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
155 |
|
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
156 |
aCollection size == 1 ifTrue:[ |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
157 |
dep := aCollection first. |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
158 |
dep isCollection ifFalse:[ |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
159 |
dependents := aCollection first. |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
160 |
^ self |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
161 |
] |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
162 |
]. |
125 | 163 |
dependents := aCollection |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
164 |
|
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
165 |
"Modified: 19.4.1996 / 12:23:05 / cg" |
125 | 166 |
! |
167 |
||
83 | 168 |
dependentsDo:aBlock |
169 |
"evaluate aBlock for all of my dependents" |
|
170 |
||
171 |
|deps| |
|
172 |
||
173 |
deps := dependents. |
|
174 |
deps notNil ifTrue:[ |
|
153
0a44627e1712
oops - did not like Id'Dicts as dependents ...
Claus Gittinger <cg@exept.de>
parents:
129
diff
changeset
|
175 |
deps isCollection ifTrue:[ |
83 | 176 |
deps do:aBlock |
177 |
] ifFalse:[ |
|
178 |
aBlock value:deps |
|
179 |
] |
|
180 |
] |
|
181 |
! |
|
182 |
||
125 | 183 |
release |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
184 |
"remove all dependencies from the receiver" |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
185 |
|
125 | 186 |
dependents := nil |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
187 |
|
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
188 |
"Modified: 19.4.1996 / 10:31:35 / cg" |
125 | 189 |
! |
190 |
||
83 | 191 |
removeDependent:anObject |
192 |
"make the argument, anObject be independent of the receiver" |
|
193 |
||
318
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
194 |
|wasBlocked| |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
195 |
|
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
196 |
"/ must do this save from interrupts, since the dependents collection |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
197 |
"/ is possibly accessed from multiple threads. |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
198 |
"/ Used to use #valueUninterruptably here; inlined that code for slightly |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
199 |
"/ faster execution. |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
200 |
|
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
201 |
wasBlocked := OperatingSystem blockInterrupts. |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
202 |
[ |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
203 |
|deps sz dep| |
83 | 204 |
|
163
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
205 |
deps := dependents. |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
206 |
deps notNil ifTrue:[ |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
207 |
deps isCollection ifTrue:[ |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
208 |
deps remove:anObject ifAbsent:[]. |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
209 |
(sz := deps size) == 0 ifTrue:[ |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
210 |
dependents := nil |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
211 |
] ifFalse:[ |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
212 |
sz == 1 ifTrue:[ |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
213 |
(dep := deps first) isCollection ifFalse:[ |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
214 |
dependents := dep |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
215 |
] |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
216 |
] |
163
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
217 |
] |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
218 |
] ifFalse:[ |
353
e9071756b6a7
oops - removeDependent: removed the dependent, even if
Claus Gittinger <cg@exept.de>
parents:
337
diff
changeset
|
219 |
deps == anObject ifTrue:[ |
e9071756b6a7
oops - removeDependent: removed the dependent, even if
Claus Gittinger <cg@exept.de>
parents:
337
diff
changeset
|
220 |
dependents := nil |
e9071756b6a7
oops - removeDependent: removed the dependent, even if
Claus Gittinger <cg@exept.de>
parents:
337
diff
changeset
|
221 |
] |
163
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
222 |
] |
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
223 |
] |
1558
1ae43779327f
#valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents:
1366
diff
changeset
|
224 |
] ensure:[ |
318
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
225 |
wasBlocked ifFalse:[ |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
226 |
OperatingSystem unblockInterrupts |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
227 |
] |
097d70e8163f
use inline interrupt blocking in dependents acces methods.
Claus Gittinger <cg@exept.de>
parents:
238
diff
changeset
|
228 |
] |
163
80f4fe3bcc71
care for interrupts while adding/removing dependents
Claus Gittinger <cg@exept.de>
parents:
153
diff
changeset
|
229 |
|
353
e9071756b6a7
oops - removeDependent: removed the dependent, even if
Claus Gittinger <cg@exept.de>
parents:
337
diff
changeset
|
230 |
"Modified: 8.1.1997 / 23:41:39 / cg" |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
231 |
! ! |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
232 |
|
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
233 |
!Model methodsFor:'dependents access (non weak)'! |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
234 |
|
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
235 |
addNonWeakDependent:anObject |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
236 |
"make the argument, anObject be a dependent of the receiver. |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
237 |
Since all dependencies are nonWeak in Model, this is simply |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
238 |
forwarded to addDependent:" |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
239 |
|
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
240 |
^ self addDependent:anObject |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
241 |
|
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
242 |
"Created: 19.4.1996 / 10:28:53 / cg" |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
243 |
! |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
244 |
|
337
e6642ba7cca9
Rename misspelled "interrest" to "interest".
Stefan Vogel <sv@exept.de>
parents:
318
diff
changeset
|
245 |
interests |
795
f79766570dd7
#nonWeakDependents always returns a collection
Claus Gittinger <cg@exept.de>
parents:
771
diff
changeset
|
246 |
"return a Collection of interests - empty if there is none. |
337
e6642ba7cca9
Rename misspelled "interrest" to "interest".
Stefan Vogel <sv@exept.de>
parents:
318
diff
changeset
|
247 |
Here, we use the normal dependents collection for interests." |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
248 |
|
189 | 249 |
^ self dependents |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
250 |
|
795
f79766570dd7
#nonWeakDependents always returns a collection
Claus Gittinger <cg@exept.de>
parents:
771
diff
changeset
|
251 |
"Created: / 19.4.1996 / 12:28:23 / cg" |
f79766570dd7
#nonWeakDependents always returns a collection
Claus Gittinger <cg@exept.de>
parents:
771
diff
changeset
|
252 |
"Modified: / 14.10.1996 / 22:19:58 / stefan" |
f79766570dd7
#nonWeakDependents always returns a collection
Claus Gittinger <cg@exept.de>
parents:
771
diff
changeset
|
253 |
"Modified: / 30.1.1998 / 14:07:43 / cg" |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
254 |
! |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
255 |
|
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
256 |
nonWeakDependents |
795
f79766570dd7
#nonWeakDependents always returns a collection
Claus Gittinger <cg@exept.de>
parents:
771
diff
changeset
|
257 |
"return a Collection of dependents - empty if there is none. |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
258 |
Since all dependencies are nonWeak in Model, this is a dummy." |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
259 |
|
190 | 260 |
^ self dependents |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
261 |
|
795
f79766570dd7
#nonWeakDependents always returns a collection
Claus Gittinger <cg@exept.de>
parents:
771
diff
changeset
|
262 |
"Created: / 19.4.1996 / 10:29:43 / cg" |
f79766570dd7
#nonWeakDependents always returns a collection
Claus Gittinger <cg@exept.de>
parents:
771
diff
changeset
|
263 |
"Modified: / 30.1.1998 / 14:06:17 / cg" |
188
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
264 |
! |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
265 |
|
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
266 |
removeNonWeakDependent:anObject |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
267 |
"make the argument, anObject be independent of the receiver. |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
268 |
Since all dependencies are nonWeak in Model, this is simply |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
269 |
forwarded to removeDependent:" |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
270 |
|
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
271 |
^ self removeDependent:anObject |
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
272 |
|
38e92ed0e1b9
interrest changes in model (nonWeak stuff)
Claus Gittinger <cg@exept.de>
parents:
163
diff
changeset
|
273 |
"Created: 19.4.1996 / 12:19:40 / cg" |
0 | 274 |
! ! |
275 |
||
353
e9071756b6a7
oops - removeDependent: removed the dependent, even if
Claus Gittinger <cg@exept.de>
parents:
337
diff
changeset
|
276 |
!Model class methodsFor:'documentation'! |
129 | 277 |
|
278 |
version |
|
1558
1ae43779327f
#valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents:
1366
diff
changeset
|
279 |
^ '$Header: /cvs/stx/stx/libview2/Model.st,v 1.34 2002-02-26 13:02:43 cg Exp $' |
129 | 280 |
! ! |