EDU.oswego.cs.dl.util.concurrent
public class PropertyChangeMulticaster extends Object implements Serializable
Sample usage.
class Thing { protected Color myColor = Color.red; // an example property protected PropertyChangeMulticaster listeners = new PropertyChangeMulticaster(this); // registration methods, including: void addListener(PropertyChangeListener l) { // Use the `ifAbsent' version to avoid duplicate notifications listeners.addPropertyChangeListenerIfAbsent(l); } public synchronized Color getColor() { // accessor return myColor; } // internal synchronized state change method; returns old value protected synchronized Color assignColor(Color newColor) { Color oldColor = myColor; myColor = newColor; return oldColor; } public void setColor(Color newColor) { // atomically change state Color oldColor = assignColor(newColor); // broadcast change notification without holding synch lock listeners.firePropertyChange("color", oldColor, newColor); } }
Field Summary | |
---|---|
protected HashMap | children
HashMap for managing listeners for specific properties.
|
protected PropertyChangeListener[] | listeners
The array of listeners. |
protected Object | source
The object to be provided as the "source" for any generated events. |
Constructor Summary | |
---|---|
PropertyChangeMulticaster(Object sourceBean)
Constructs a PropertyChangeMulticaster object.
|
Method Summary | |
---|---|
void | addPropertyChangeListener(PropertyChangeListener listener)
Add a VetoableChangeListener to the listener list.
|
void | addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
Add a PropertyChangeListener for a specific property. |
void | addPropertyChangeListenerIfAbsent(PropertyChangeListener listener)
Add a PropertyChangeListener to the listener list if it is
not already present.
|
void | addPropertyChangeListenerIfAbsent(String propertyName, PropertyChangeListener listener)
Add a PropertyChangeListener for a specific property, if it is not
already registered. |
void | firePropertyChange(String propertyName, Object oldValue, Object newValue)
Report a bound property update to any registered listeners.
|
void | firePropertyChange(String propertyName, int oldValue, int newValue)
Report an int bound property update to any registered listeners.
|
void | firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
Report a boolean bound property update to any registered listeners.
|
void | firePropertyChange(PropertyChangeEvent evt)
Fire an existing PropertyChangeEvent to any registered listeners.
|
protected PropertyChangeMulticaster | getChild(String propertyName)
Return the child associated with property, or null if no such
|
boolean | hasListeners(String propertyName)
Check if there are any listeners for a specific property.
|
protected void | multicast(PropertyChangeEvent evt)
Helper method to relay evt to all listeners.
|
void | removePropertyChangeListener(PropertyChangeListener listener)
Remove a PropertyChangeListener from the listener list.
|
void | removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
Remove a PropertyChangeListener for a specific property.
|
Serial:
Serial:
PropertyChangeMulticaster
object.
Parameters: sourceBean The bean to be given as the source for any events.
Throws: NullPointerException if sourceBean is null
Parameters: listener The PropertyChangeListener to be added
Throws: NullPointerException If listener is null
Parameters: propertyName The name of the property to listen on. listener The PropertyChangeListener to be added
Throws: NullPointerException If listener is null
Parameters: listener The PropertyChangeListener to be added
Throws: NullPointerException If listener is null
Parameters: propertyName The name of the property to listen on. listener The PropertyChangeListener to be added
Throws: NullPointerException If listener is null
Parameters: propertyName The programmatic name of the property that was changed. oldValue The old value of the property. newValue The new value of the property.
This is merely a convenience wrapper around the more general firePropertyChange method that takes Object values.
Parameters: propertyName The programmatic name of the property that was changed. oldValue The old value of the property. newValue The new value of the property.
This is merely a convenience wrapper around the more general firePropertyChange method that takes Object values.
Parameters: propertyName The programmatic name of the property that was changed. oldValue The old value of the property. newValue The new value of the property.
Parameters: evt The PropertyChangeEvent object.
Parameters: propertyName the property name.
Returns: true if there are one or more listeners for the given property
Parameters: listener The PropertyChangeListener to be removed
Parameters: propertyName The name of the property that was listened on. listener The PropertyChangeListener to be removed