/*
* Beanfabrics Framework Copyright (C) by Michael Karneim, beanfabrics.org
* Use is subject to license terms. See license.txt.
*/
package org.beanfabrics;
import java.beans.PropertyChangeListener;
import org.beanfabrics.event.BnPropertyChangeSupport;
/**
* The {@link Bean} is the basic interface for classes that can be observed by
* {@link PropertyChangeListener} objects.
*
* @author Michael Karneim
*/
public interface Bean {
/**
* Adds the given <code>PropertyChangeListener</code> to this bean. The
* listener is registered for all bound properties of this class.
*
* @param listener the listener to add
*/
public void addPropertyChangeListener(PropertyChangeListener listener);
/**
* Removes the given <code>PropertyChangeListener</code> from this bean.
* This method should be used to remove PropertyChangeListeners that were
* previously registered for all bound properties of this class.
*
* @param listener the listener to remove
*/
public void removePropertyChangeListener(PropertyChangeListener listener);
/**
* Adds the given <code>PropertyChangeListener</code> to this bean for the
* specified property.
*
* @param propertyName the property name of the property to observe
* @param listener the listener to add
*/
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener);
/**
* Removes the given <code>PropertyChangeListener</code> from this bean for
* the specified property. This method should be used to remove a listener
* that was previously registered for a specific bound property.
*
* @param propertyName the property name of the observed property
* @param listener the listener to remove
*/
public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener);
// TODO (mk) do we need that?
public BnPropertyChangeSupport getPropertyChangeSupport();
}