WeakInterestConverter.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 22 Sep 2015 16:28:42 +0100
branchjv
changeset 18759 c1217211909c
parent 18011 deb0c3355881
permissions -rw-r--r--
Changed identification strings to contain jv-branch ...to make explicit that this distribution is not the official one used by eXept and therefore that eXept is not to be blamed in case of any problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5273
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
     1
"
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
     2
 COPYRIGHT (c) 1997 eXept Software AG
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
     3
              All Rights Reserved
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
     4
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
     5
 This software is furnished under a license and may be used
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
     6
 only in accordance with the terms of that license and with the
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
     8
 be provided or otherwise made available to, or used by, any
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
     9
 other person.  No title to or ownership of the software is
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    10
 hereby transferred.
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    11
"
9280
0daef192f1af interest stuff
Claus Gittinger <cg@exept.de>
parents: 5273
diff changeset
    12
"{ Package: 'stx:libbasic' }"
0daef192f1af interest stuff
Claus Gittinger <cg@exept.de>
parents: 5273
diff changeset
    13
0daef192f1af interest stuff
Claus Gittinger <cg@exept.de>
parents: 5273
diff changeset
    14
InterestConverter subclass:#WeakInterestConverter
0daef192f1af interest stuff
Claus Gittinger <cg@exept.de>
parents: 5273
diff changeset
    15
	instanceVariableNames:''
2656
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'Interface-Support-Models'
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!WeakInterestConverter class methodsFor:'documentation'!
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
5273
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    23
copyright
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    24
"
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    25
 COPYRIGHT (c) 1997 eXept Software AG
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    26
              All Rights Reserved
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    27
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    28
 This software is furnished under a license and may be used
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    29
 only in accordance with the terms of that license and with the
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    31
 be provided or otherwise made available to, or used by, any
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    32
 other person.  No title to or ownership of the software is
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    33
 hereby transferred.
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    34
"
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    35
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    36
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    37
!
7fc2109a0ed0 copyrights
Claus Gittinger <cg@exept.de>
parents: 2656
diff changeset
    38
2656
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
documentation
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    these are much like InterestConverters; however, the reference to
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    the destination is weak, which allows for them to be garbage collected.
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    [author:]
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
        Claus Gittinger
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
! !
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
!WeakInterestConverter class methodsFor:'instance creation'!
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
destination:anObject selector:aSelector
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    "create & return an interestConverter, which sends aSelector
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
     to anObject when a change notification arrives"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    ^ self basicNew destination:anObject selector:aSelector
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    "Created: 21.5.1997 / 14:08:49 / cg"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
!
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
destination:anObject selector:aSelector aspect:aspect
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    "create & return an interestConverter, which sends aSelector
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
     to anObject when a change notification for aspect arrives"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    ^ self basicNew destination:anObject selector:aSelector aspect:aspect
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    "Created: 21.5.1997 / 14:08:49 / cg"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
! !
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
!WeakInterestConverter methodsFor:'accessing'!
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
aspect
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    "return my aspect (if any)"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    ^ aspect
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    "Created: 21.5.1997 / 14:08:49 / cg"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
!
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
destination
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    "return my destination"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
9280
0daef192f1af interest stuff
Claus Gittinger <cg@exept.de>
parents: 5273
diff changeset
    82
    ^ destination at:1
2656
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
!
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
destination:dest selector:sel
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    "set destination and selector"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
9280
0daef192f1af interest stuff
Claus Gittinger <cg@exept.de>
parents: 5273
diff changeset
    88
    destination := WeakArray with:dest.
2656
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    selector := sel
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
    "Created: 21.5.1997 / 14:08:49 / cg"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
!
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
destination:dest selector:sel aspect:a
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    "set destination, selector and aspect"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
9280
0daef192f1af interest stuff
Claus Gittinger <cg@exept.de>
parents: 5273
diff changeset
    97
    destination := WeakArray with:dest.
2656
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    selector := sel.
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
    aspect := a
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    "Created: 21.5.1997 / 14:08:49 / cg"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
! !
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
!WeakInterestConverter methodsFor:'change & update'!
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
update:something with:aParameter from:someObject
9280
0daef192f1af interest stuff
Claus Gittinger <cg@exept.de>
parents: 5273
diff changeset
   107
    |realDestination|
2656
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    (aspect isNil or:[aspect == something]) ifTrue:[
9280
0daef192f1af interest stuff
Claus Gittinger <cg@exept.de>
parents: 5273
diff changeset
   110
        realDestination := destination at:1.
0daef192f1af interest stuff
Claus Gittinger <cg@exept.de>
parents: 5273
diff changeset
   111
        realDestination notNil ifTrue:[
0daef192f1af interest stuff
Claus Gittinger <cg@exept.de>
parents: 5273
diff changeset
   112
            realDestination perform:selector
2656
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
        ]
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    ]
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    "Modified: 8.3.1996 / 22:41:53 / cg"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    "Created: 21.5.1997 / 14:08:49 / cg"
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
! !
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
!WeakInterestConverter class methodsFor:'documentation'!
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
version
13745
85b8e275b9b1 version_CVS
Claus Gittinger <cg@exept.de>
parents: 9280
diff changeset
   123
    ^ '$Header: /cvs/stx/stx/libbasic/WeakInterestConverter.st,v 1.4 2011-09-29 11:19:04 cg Exp $'
2656
c71176e82d85 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
! !