Methods Summary |
---|
public synchronized void | addPropertyChangeListener(java.beans.PropertyChangeListener listener)Add a PropertyChangeListener to the listener list.
The listener is registered for all properties.
The same listener object may be added more than once, and will be called
as many times as it is added.
If listener is null, no exception is thrown and no action
is taken.
if (listener == null) {
return;
}
if (listener instanceof PropertyChangeListenerProxy) {
PropertyChangeListenerProxy proxy =
(PropertyChangeListenerProxy)listener;
// Call two argument add method.
addPropertyChangeListener(proxy.getPropertyName(),
(PropertyChangeListener)proxy.getListener());
} else {
if (listeners == null) {
listeners = new EventListenerAggregate(PropertyChangeListener.class);
}
listeners.add(listener);
}
|
public synchronized void | addPropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)Add a PropertyChangeListener for a specific property. The listener
will be invoked only when a call on firePropertyChange names that
specific property.
The same listener object may be added more than once. For each
property, the listener will be invoked the number of times it was added
for that property.
If propertyName or listener is null, no
exception is thrown and no action is taken.
if (listener == null || propertyName == null) {
return;
}
if (children == null) {
children = new java.util.Hashtable();
}
PropertyChangeSupport child = (PropertyChangeSupport)children.get(propertyName);
if (child == null) {
child = new PropertyChangeSupport(source);
children.put(propertyName, child);
}
child.addPropertyChangeListener(listener);
|
public void | fireIndexedPropertyChange(java.lang.String propertyName, int index, java.lang.Object oldValue, java.lang.Object newValue)Report a bound indexed property update to any registered
listeners.
No event is fired if old and new values are equal
and non-null.
This is merely a convenience wrapper around the more general
firePropertyChange method that takes {@code PropertyChangeEvent} value.
firePropertyChange(new IndexedPropertyChangeEvent
(source, propertyName, oldValue, newValue, index));
|
public void | fireIndexedPropertyChange(java.lang.String propertyName, int index, int oldValue, int newValue)Report an int bound indexed property update to any registered
listeners.
No event is fired if old and new values are equal.
This is merely a convenience wrapper around the more general
fireIndexedPropertyChange method which takes Object values.
if (oldValue == newValue) {
return;
}
fireIndexedPropertyChange(propertyName, index,
new Integer(oldValue),
new Integer(newValue));
|
public void | fireIndexedPropertyChange(java.lang.String propertyName, int index, boolean oldValue, boolean newValue)Report a boolean bound indexed property update to any
registered listeners.
No event is fired if old and new values are equal.
This is merely a convenience wrapper around the more general
fireIndexedPropertyChange method which takes Object values.
if (oldValue == newValue) {
return;
}
fireIndexedPropertyChange(propertyName, index, Boolean.valueOf(oldValue),
Boolean.valueOf(newValue));
|
public void | firePropertyChange(java.lang.String propertyName, boolean oldValue, boolean newValue)Report a boolean bound property update to any registered listeners.
No event is fired if old and new are equal.
This is merely a convenience wrapper around the more general
firePropertyChange method that takes Object values.
if (oldValue == newValue) {
return;
}
firePropertyChange(propertyName, Boolean.valueOf(oldValue), Boolean.valueOf(newValue));
|
public void | firePropertyChange(java.beans.PropertyChangeEvent evt)Fire an existing PropertyChangeEvent to any registered listeners.
No event is fired if the given event's old and new values are
equal and non-null.
Object oldValue = evt.getOldValue();
Object newValue = evt.getNewValue();
String propertyName = evt.getPropertyName();
if (oldValue != null && newValue != null && oldValue.equals(newValue)) {
return;
}
if (listeners != null) {
Object[] list = listeners.getListenersInternal();
for (int i = 0; i < list.length; i++) {
PropertyChangeListener target = (PropertyChangeListener)list[i];
target.propertyChange(evt);
}
}
if (children != null && propertyName != null) {
PropertyChangeSupport child = null;
child = (PropertyChangeSupport)children.get(propertyName);
if (child != null) {
child.firePropertyChange(evt);
}
}
|
public void | firePropertyChange(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue)Report a bound property update to any registered listeners.
No event is fired if old and new are equal and non-null.
This is merely a convenience wrapper around the more general
firePropertyChange method that takes {@code
PropertyChangeEvent} value.
if (oldValue != null && newValue != null && oldValue.equals(newValue)) {
return;
}
firePropertyChange(new PropertyChangeEvent(source, propertyName,
oldValue, newValue));
|
public void | firePropertyChange(java.lang.String propertyName, int oldValue, int newValue)Report an int bound property update to any registered listeners.
No event is fired if old and new are equal.
This is merely a convenience wrapper around the more general
firePropertyChange method that takes Object values.
if (oldValue == newValue) {
return;
}
firePropertyChange(propertyName, new Integer(oldValue), new Integer(newValue));
|
public synchronized java.beans.PropertyChangeListener[] | getPropertyChangeListeners()Returns an array of all the listeners that were added to the
PropertyChangeSupport object with addPropertyChangeListener().
If some listeners have been added with a named property, then
the returned array will be a mixture of PropertyChangeListeners
and PropertyChangeListenerProxy s. If the calling
method is interested in distinguishing the listeners then it must
test each element to see if it's a
PropertyChangeListenerProxy , perform the cast, and examine
the parameter.
PropertyChangeListener[] listeners = bean.getPropertyChangeListeners();
for (int i = 0; i < listeners.length; i++) {
if (listeners[i] instanceof PropertyChangeListenerProxy) {
PropertyChangeListenerProxy proxy =
(PropertyChangeListenerProxy)listeners[i];
if (proxy.getPropertyName().equals("foo")) {
// proxy is a PropertyChangeListener which was associated
// with the property named "foo"
}
}
}
List returnList = new ArrayList();
// Add all the PropertyChangeListeners
if (listeners != null) {
returnList.addAll(Arrays.asList(listeners.getListenersInternal()));
}
// Add all the PropertyChangeListenerProxys
if (children != null) {
Iterator iterator = children.keySet().iterator();
while (iterator.hasNext()) {
String key = (String)iterator.next();
PropertyChangeSupport child =
(PropertyChangeSupport)children.get(key);
PropertyChangeListener[] childListeners =
child.getPropertyChangeListeners();
for (int index = childListeners.length - 1; index >= 0;
index--) {
returnList.add(new PropertyChangeListenerProxy(
key, childListeners[index]));
}
}
}
return (PropertyChangeListener[])(returnList.toArray(
new PropertyChangeListener[0]));
|
public synchronized java.beans.PropertyChangeListener[] | getPropertyChangeListeners(java.lang.String propertyName)Returns an array of all the listeners which have been associated
with the named property.
ArrayList returnList = new ArrayList();
if (children != null && propertyName != null) {
PropertyChangeSupport support =
(PropertyChangeSupport)children.get(propertyName);
if (support != null) {
returnList.addAll(
Arrays.asList(support.getPropertyChangeListeners()));
}
}
return (PropertyChangeListener[])(returnList.toArray(
new PropertyChangeListener[0]));
|
public synchronized boolean | hasListeners(java.lang.String propertyName)Check if there are any listeners for a specific property, including
those registered on all properties. If propertyName
is null, only check for listeners registered on all properties.
if (listeners != null && !listeners.isEmpty()) {
// there is a generic listener
return true;
}
if (children != null && propertyName != null) {
PropertyChangeSupport child = (PropertyChangeSupport)children.get(propertyName);
if (child != null && child.listeners != null) {
return !child.listeners.isEmpty();
}
}
return false;
|
private void | readObject(java.io.ObjectInputStream s)
s.defaultReadObject();
Object listenerOrNull;
while (null != (listenerOrNull = s.readObject())) {
addPropertyChangeListener((PropertyChangeListener)listenerOrNull);
}
|
public synchronized void | removePropertyChangeListener(java.beans.PropertyChangeListener listener)Remove a PropertyChangeListener from the listener list.
This removes a PropertyChangeListener that was registered
for all properties.
If listener was added more than once to the same event
source, it will be notified one less time after being removed.
If listener is null, or was never added, no exception is
thrown and no action is taken.
if (listener == null) {
return;
}
if (listener instanceof PropertyChangeListenerProxy) {
PropertyChangeListenerProxy proxy =
(PropertyChangeListenerProxy)listener;
// Call two argument remove method.
removePropertyChangeListener(proxy.getPropertyName(),
(PropertyChangeListener)proxy.getListener());
} else {
if (listeners == null) {
return;
}
listeners.remove(listener);
}
|
public synchronized void | removePropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)Remove a PropertyChangeListener for a specific property.
If listener was added more than once to the same event
source for the specified property, it will be notified one less time
after being removed.
If propertyName is null, no exception is thrown and no
action is taken.
If listener is null, or was never added for the specified
property, no exception is thrown and no action is taken.
if (listener == null || propertyName == null) {
return;
}
if (children == null) {
return;
}
PropertyChangeSupport child = (PropertyChangeSupport)children.get(propertyName);
if (child == null) {
return;
}
child.removePropertyChangeListener(listener);
|
private void | writeObject(java.io.ObjectOutputStream s)
s.defaultWriteObject();
if (listeners != null) {
Object[] list = listeners.getListenersCopy();
for (int i = 0; i < list.length; i++) {
PropertyChangeListener l = (PropertyChangeListener)list[i];
if (l instanceof Serializable) {
s.writeObject(l);
}
}
}
s.writeObject(null);
|