--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/WeakInterestConverter.st Wed May 21 14:17:57 1997 +0200
@@ -0,0 +1,97 @@
+Object subclass:#WeakInterestConverter
+ instanceVariableNames:'destinationHolder selector aspect'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Support-Models'
+!
+
+!WeakInterestConverter class methodsFor:'documentation'!
+
+documentation
+"
+ these are much like InterestConverters; however, the reference to
+ the destination is weak, which allows for them to be garbage collected.
+
+ [author:]
+ Claus Gittinger
+"
+! !
+
+!WeakInterestConverter class methodsFor:'instance creation'!
+
+destination:anObject selector:aSelector
+ "create & return an interestConverter, which sends aSelector
+ to anObject when a change notification arrives"
+
+ ^ self basicNew destination:anObject selector:aSelector
+
+ "Created: 21.5.1997 / 14:08:49 / cg"
+!
+
+destination:anObject selector:aSelector aspect:aspect
+ "create & return an interestConverter, which sends aSelector
+ to anObject when a change notification for aspect arrives"
+
+ ^ self basicNew destination:anObject selector:aSelector aspect:aspect
+
+ "Created: 21.5.1997 / 14:08:49 / cg"
+! !
+
+!WeakInterestConverter methodsFor:'accessing'!
+
+aspect
+ "return my aspect (if any)"
+
+ ^ aspect
+
+ "Created: 21.5.1997 / 14:08:49 / cg"
+!
+
+destination
+ "return my destination"
+
+ ^ destinationHolder at:1
+
+ "Created: 21.5.1997 / 14:08:49 / cg"
+!
+
+destination:dest selector:sel
+ "set destination and selector"
+
+ destinationHolder := WeakArray with:dest.
+ selector := sel
+
+ "Created: 21.5.1997 / 14:08:49 / cg"
+!
+
+destination:dest selector:sel aspect:a
+ "set destination, selector and aspect"
+
+ destinationHolder := WeakArray with:dest.
+ selector := sel.
+ aspect := a
+
+ "Created: 21.5.1997 / 14:08:49 / cg"
+! !
+
+!WeakInterestConverter methodsFor:'change & update'!
+
+update:something with:aParameter from:someObject
+ |destination|
+
+ (aspect isNil or:[aspect == something]) ifTrue:[
+ destination := destinationHolder at:1.
+ destination notNil ifTrue:[
+ destination perform:selector
+ ]
+ ]
+
+ "Modified: 8.3.1996 / 22:41:53 / cg"
+ "Created: 21.5.1997 / 14:08:49 / cg"
+! !
+
+!WeakInterestConverter class methodsFor:'documentation'!
+
+version
+ ^ '$Header: /cvs/stx/stx/libbasic/WeakInterestConverter.st,v 1.1 1997-05-21 12:17:57 cg Exp $'
+! !