1 /*
2 * @(#)$Id: DefaultPropertyChangeNotifier.java 689 2009-07-22 00:10:27Z bsigner $
3 *
4 * Author : Ueli Kurmann, igesture@uelikurmann.ch
5 *
6 *
7 * Purpose : Default implementation of the PropertyChangeNotifier
8 * interface.
9 *
10 * -----------------------------------------------------------------------
11 *
12 * Revision Information:
13 *
14 * Date Who Reason
15 *
16 * 25.03.2008 ukurmann Initial Release
17 * 25.09.2008 bsigner Cleanup
18 *
19 * -----------------------------------------------------------------------
20 *
21 * Copyright 1999-2009 ETH Zurich. All Rights Reserved.
22 *
23 * This software is the proprietary information of ETH Zurich.
24 * Use is subject to license terms.
25 *
26 */
27
28
29 package org.ximtec.igesture.core;
30
31 import java.beans.PropertyChangeListener;
32 import java.beans.PropertyChangeSupport;
33
34
35 /**
36 * Default implementation of the PropertyChangeNotifier interface.
37 *
38 * @version 1.0 25.03.2008
39 * @author Ueli Kurmann
40 * @author Beat Signer, signer@inf.ethz.ch
41 */
42 public abstract class DefaultPropertyChangeNotifier implements
43 PropertyChangeNotifier {
44
45 protected transient PropertyChangeSupport propertyChangeSupport;
46
47
48 /**
49 * Constructs a new default property change notifier.
50 */
51 public DefaultPropertyChangeNotifier() {
52 this.propertyChangeSupport = new PropertyChangeSupport(this);
53 }
54
55
56 /**
57 * This method is used to deserialise transient fields.
58 * @return the deserialised object.
59 */
60 private Object readResolve() {
61 this.propertyChangeSupport = new PropertyChangeSupport(this);
62 return this;
63 } // readResolve
64
65
66 /**
67 * {@inheritDoc}
68 */
69 @Override
70 public void addPropertyChangeListener(PropertyChangeListener listener) {
71 for (PropertyChangeListener registredListener : propertyChangeSupport
72 .getPropertyChangeListeners()) {
73
74 if (registredListener == listener) {
75 return;
76 }
77
78 }
79
80 propertyChangeSupport.addPropertyChangeListener(listener);
81 } // addPropertyChangeListener
82
83
84 /**
85 * {@inheritDoc}
86 */
87 @Override
88 public void addPropertyChangeListener(String propertyName,
89 PropertyChangeListener listener) {
90 propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
91 } // addPropertyChangeListener
92
93
94 /**
95 * {@inheritDoc}
96 */
97 @Override
98 public void removePropertyChangeListener(PropertyChangeListener listener) {
99 propertyChangeSupport.removePropertyChangeListener(listener);
100 } // removePropertyChangeListener
101
102
103 /**
104 * {@inheritDoc}
105 */
106 @Override
107 public void removePropertyChangeListener(String propertyName,
108 PropertyChangeListener listener) {
109 propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
110 } // removePropertyChangeListener
111
112 }