package com.revolsys.beans;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import com.revolsys.util.Property;
public interface PropertyChangeSupportProxy {
default void addPropertyChangeListener(final PropertyChangeListener listener) {
final PropertyChangeSupport propertyChangeSupport = getPropertyChangeSupport();
propertyChangeSupport.addPropertyChangeListener(listener);
}
default void addPropertyChangeListener(final String propertyName,
final PropertyChangeListener listener) {
final PropertyChangeSupport propertyChangeSupport = getPropertyChangeSupport();
propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
}
default void firePropertyChange(final Object source, final String propertyName,
final Object oldValue, final Object newValue) {
final PropertyChangeEvent event = new PropertyChangeEvent(source, propertyName, oldValue,
newValue);
firePropertyChange(event);
}
default void firePropertyChange(final PropertyChangeEvent event) {
final PropertyChangeSupport propertyChangeSupport = getPropertyChangeSupport();
if (propertyChangeSupport != null) {
propertyChangeSupport.firePropertyChange(event);
}
}
default void firePropertyChange(final String propertyName, final int index, final Object oldValue,
final Object newValue) {
final PropertyChangeSupport propertyChangeSupport = getPropertyChangeSupport();
if (propertyChangeSupport != null) {
propertyChangeSupport.fireIndexedPropertyChange(propertyName, index, oldValue, newValue);
}
}
default void firePropertyChange(final String propertyName, final Object oldValue,
final Object newValue) {
final PropertyChangeSupport propertyChangeSupport = getPropertyChangeSupport();
if (propertyChangeSupport != null) {
propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
}
}
PropertyChangeSupport getPropertyChangeSupport();
default void removePropertyChangeListener(final PropertyChangeListener listener) {
Property.removeListener(this, listener);
}
default void removePropertyChangeListener(final String propertyName,
final PropertyChangeListener listener) {
Property.removeListener(this, propertyName, listener);
}
}