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 $'
! !