package common.beans;
import java.beans.PropertyChangeListener;
/**
* Common interface for beans with simple property
* change listener support.
*
* @author Benedikt Meurer
* @version $Id$
*
* @see common.beans.AbstractBean
* @see java.beans.PropertyChangeListener
* @see java.beans.PropertyChangeSupport
*/
public interface Bean {
/**
* Adds a {@link PropertyChangeListener} to the listener list. The listener
* is registered for all bound properties of the derived class.
*
* If <code>listener</code> is <code>null</code>, no exception is thrown
* and no action is performed.
*
* @param listener the {@link PropertyChangeListener} to be added.
*
* @see #getPropertyChangeListeners()
* @see #removePropertyChangeListener(PropertyChangeListener)
*/
public void addPropertyChangeListener(PropertyChangeListener listener);
/**
* Removes a {@link PropertyChangeListener} from the listener list. This method
* should be used to remove PropertyChangeListeners that were registered for all
* bound properties of this class.
*
* If <code>listener</code> is <code>null</code>, no exception is thrown and
* no action is performed.
*
* @param listener the {@link PropertyChangeListener} to be removed.
*
* @see #addPropertyChangeListener(PropertyChangeListener)
* @see #getPropertyChangeListeners()
*/
public void removePropertyChangeListener(PropertyChangeListener listener);
/**
* Returns an array of all the property change listeners registered
* on this object.
*
* @return all of this object's {@link PropertyChangeListener}s or an
* empty array if no property change listeners are currently
* registered.
*
* @see #addPropertyChangeListener(PropertyChangeListener)
* @see #removePropertyChangeListener(PropertyChangeListener)
*/
public PropertyChangeListener[] getPropertyChangeListeners();
/**
* Adds a {@link PropertyChangeListener} to the listener list for a specific
* property. The specified property may be user-defined, or one of the properties
* provided by the object.
*
* If <code>listener</code> is <code>null</code>, no exception is thrown and
* no action is performed.
*
* @param propertyName one of the property names of the object.
* @param listener the {@link PropertyChangeListener} to be added.
*
* @see #removePropertyChangeListener(String, PropertyChangeListener)
* @see #getPropertyChangeListeners(String)
*/
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener);
/**
* Removes a {@link PropertyChangeListener} from the listener list for a specific
* property. This method should be used to remove {@link PropertyChangeListener}s
* that were registered for a specific bound property.
*
* If <code>listener</code> is <code>null</code>, no exception is thrown and no
* action is performed.
*
* @param propertyName a valid property name.
* @param listener the {@link PropertyChangeListener} to be removed.
*
* @see #addPropertyChangeListener(String, PropertyChangeListener)
* @see #getPropertyChangeListeners(String)
*/
public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener);
/**
* Returns an array of all the listeners which have been associated
* with the named property.
*
* @param propertyName a valid property name.
*
* @return all of the {@link PropertyChangeListeners} associated with
* the named property or an empty array if no listeners have
* been added
*/
public PropertyChangeListener[] getPropertyChangeListeners(String propertyName);
}