WeakInterestConverter.st
author Claus Gittinger <cg@exept.de>
Fri, 18 Feb 2000 15:42:13 +0100
changeset 5273 7fc2109a0ed0
parent 2656 c71176e82d85
child 9280 0daef192f1af
permissions -rw-r--r--
copyrights

"
 COPYRIGHT (c) 1997 eXept Software AG
              All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"



Object subclass:#WeakInterestConverter
	instanceVariableNames:'destinationHolder selector aspect'
	classVariableNames:''
	poolDictionaries:''
	category:'Interface-Support-Models'
!

!WeakInterestConverter class methodsFor:'documentation'!

copyright
"
 COPYRIGHT (c) 1997 eXept Software AG
              All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"


!

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.2 2000-02-18 14:42:13 cg Exp $'
! !