package org.infosec.ismp.applet.manager.model;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
/**
* This class provides base level functionality for all models, including a
* support for a property change mechanism (using the PropertyChangeSupport class),
* as well as a convenience method that other objects can use to reset model state.
*/
public abstract class AbstractModel
{
/**
* Convenience class that allow others to observe changes to the model properties
*/
protected PropertyChangeSupport propertyChangeSupport;
/**
* Default constructor. Instantiates the PropertyChangeSupport class.
*/
public AbstractModel() {
propertyChangeSupport = new PropertyChangeSupport(this);
}
/**
* Adds a property change listener to the observer list.
* @param l The property change listener
*/
public void addPropertyChangeListener(PropertyChangeListener l) {
propertyChangeSupport.addPropertyChangeListener(l);
}
/**
* Removes a property change listener from the observer list.
* @param l The property change listener
*/
public void removePropertyChangeListener(PropertyChangeListener l) {
propertyChangeSupport.removePropertyChangeListener(l);
}
/**
* Fires an event to all registered listeners informing them that a property in
* this model has changed.
* @param propertyName The name of the property
* @param oldValue The previous value of the property before the change
* @param newValue The new property value after the change
*/
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
}
}