/*
* Copyright 2001-2013 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
*/
package com.uwyn.rife.tools;
import com.uwyn.rife.tools.exceptions.SourceBeanRequiredException;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.logging.Logger;
public abstract class AbstractPropertyChangeSupport implements Cloneable
{
private PropertyChangeSupport propertyChangeSupport = null;
protected AbstractPropertyChangeSupport()
{
}
protected void setSource(Object sourceBean)
{
propertyChangeSupport = new PropertyChangeSupport(sourceBean);
}
private void ensureSourceBean()
{
if (null == propertyChangeSupport)
{
throw new SourceBeanRequiredException(getClass());
}
}
/**
* @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
*/
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
{
ensureSourceBean();
propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
}
/**
* @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
*/
public void addPropertyChangeListener(PropertyChangeListener listener)
{
ensureSourceBean();
propertyChangeSupport.addPropertyChangeListener(listener);
}
/**
* @see PropertyChangeSupport#firePropertyChange(String, boolean, boolean)
*/
public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
{
ensureSourceBean();
propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
}
/**
* @see PropertyChangeSupport#firePropertyChange(String, int, int)
*/
public void firePropertyChange(String propertyName, int oldValue, int newValue)
{
ensureSourceBean();
propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
}
/**
* @see PropertyChangeSupport#firePropertyChange(PropertyChangeEvent)
*/
public void firePropertyChange(PropertyChangeEvent evt)
{
ensureSourceBean();
propertyChangeSupport.firePropertyChange(evt);
}
/**
* @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
*/
public void firePropertyChange(String propertyName, Object oldValue, Object newValue)
{
ensureSourceBean();
propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
}
/**
* @see PropertyChangeSupport#getPropertyChangeListeners(String)
*/
public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
{
ensureSourceBean();
return propertyChangeSupport.getPropertyChangeListeners(propertyName);
}
/**
* @see PropertyChangeSupport#getPropertyChangeListeners()
*/
public PropertyChangeListener[] getPropertyChangeListeners()
{
ensureSourceBean();
return propertyChangeSupport.getPropertyChangeListeners();
}
/**
* @see PropertyChangeSupport#hasListeners(String)
*/
public boolean hasListeners(String propertyName)
{
ensureSourceBean();
return propertyChangeSupport.hasListeners(propertyName);
}
/**
* @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
*/
public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
{
ensureSourceBean();
propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
}
/**
* @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
*/
public void removePropertyChangeListener(PropertyChangeListener listener)
{
ensureSourceBean();
propertyChangeSupport.removePropertyChangeListener(listener);
}
public AbstractPropertyChangeSupport clone()
{
AbstractPropertyChangeSupport new_object = null;
try
{
new_object = (AbstractPropertyChangeSupport)super.clone();
}
catch (CloneNotSupportedException e)
{
///CLOVER:OFF
// should never happen
Logger.getLogger("com.uwyn.rife.tools").severe(ExceptionUtils.getExceptionStackTrace(e));
///CLOVER:ON
}
new_object.propertyChangeSupport = new PropertyChangeSupport(new_object);
return new_object;
}
}