View Javadoc

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 }