Package jmri.beans
Class VetoableChangeSupport
java.lang.Object
jmri.beans.PropertyChangeSupport
jmri.beans.VetoableChangeSupport
- All Implemented Interfaces:
PropertyChangeFirer
,PropertyChangeProvider
,VetoableChangeFirer
,VetoableChangeProvider
- Direct Known Subclasses:
AbstractManager
,AbstractProxyManager
,EntryExitPairs
@ThreadSafe public class VetoableChangeSupport extends PropertyChangeSupport implements VetoableChangeProvider, VetoableChangeFirer
Implementation of
PropertyChangeSupport
and
VetoableChangeSupport
that can be extended by classes that
would normally need to implement the methods of PropertyChangeSupport and
VetoableChangeSupport independently.
This class is designed to support retrofitting an existing class with the
PropertyChangeProvider, PropertyChangeFirer, VetoableChangeProvider, and
VetoableChangeFirer interfaces without introducing the complexity of the
other implementations of PropertyChangeProvider in this package. When
designing new classes, it would be preferable to subclass
ArbitraryBean
, Bean
, or ConstrainedBean
depending on
the design requirements of the new class.
This class is thread safe.
-
Field Summary
Fields Modifier and Type Field Description protected VetoableChangeSupport
vetoableChangeSupport
Provide aVetoableChangeSupport
helper. -
Constructor Summary
Constructors Constructor Description VetoableChangeSupport()
-
Method Summary
Modifier and Type Method Description void
addVetoableChangeListener(VetoableChangeListener listener)
Add aVetoableChangeListener
to the listener list.void
addVetoableChangeListener(String propertyName, VetoableChangeListener listener)
Add aVetoableChangeListener
for a specific property.void
fireVetoableChange(PropertyChangeEvent event)
Fire a property change.void
fireVetoableChange(String propertyName, boolean oldValue, boolean newValue)
Fire a property change.void
fireVetoableChange(String propertyName, int oldValue, int newValue)
Fire a property change.void
fireVetoableChange(String propertyName, Object oldValue, Object newValue)
Fire a property change.VetoableChangeListener[]
getVetoableChangeListeners()
Get allVetoableChangeListener
s currently attached to this object.VetoableChangeListener[]
getVetoableChangeListeners(String propertyName)
Get allVetoableChangeListener
s currently listening to changes to the specified property.void
removeVetoableChangeListener(VetoableChangeListener listener)
Remove the specified listener from this object.void
removeVetoableChangeListener(String propertyName, VetoableChangeListener listener)
Remove the specified listener of the specified property from this object.Methods inherited from class jmri.beans.PropertyChangeSupport
addPropertyChangeListener, addPropertyChangeListener, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
-
Field Details
-
vetoableChangeSupport
Provide aVetoableChangeSupport
helper.
-
-
Constructor Details
-
Method Details
-
addVetoableChangeListener
Add aVetoableChangeListener
to the listener list.- Specified by:
addVetoableChangeListener
in interfaceVetoableChangeProvider
- Parameters:
listener
- The VetoableChangeListener to be added
-
addVetoableChangeListener
public void addVetoableChangeListener(@CheckForNull String propertyName, @CheckForNull VetoableChangeListener listener)Add aVetoableChangeListener
for a specific property.- Specified by:
addVetoableChangeListener
in interfaceVetoableChangeProvider
- Parameters:
propertyName
- The name of the property to listen on.listener
- The VetoableChangeListener to be added
-
getVetoableChangeListeners
Get allVetoableChangeListener
s currently attached to this object.- Specified by:
getVetoableChangeListeners
in interfaceVetoableChangeProvider
- Returns:
- An array of VetoableChangeListeners.
-
getVetoableChangeListeners
Get allVetoableChangeListener
s currently listening to changes to the specified property.- Specified by:
getVetoableChangeListeners
in interfaceVetoableChangeProvider
- Parameters:
propertyName
- The name of the property of interest- Returns:
- An array of VetoableChangeListeners.
-
removeVetoableChangeListener
Remove the specified listener from this object.- Specified by:
removeVetoableChangeListener
in interfaceVetoableChangeProvider
- Parameters:
listener
- TheVetoableChangeListener
to remove.
-
removeVetoableChangeListener
public void removeVetoableChangeListener(@CheckForNull String propertyName, @CheckForNull VetoableChangeListener listener)Remove the specified listener of the specified property from this object.- Specified by:
removeVetoableChangeListener
in interfaceVetoableChangeProvider
- Parameters:
propertyName
- The name of the property to stop listening to.listener
- TheVetoableChangeListener
to remove.
-
fireVetoableChange
public void fireVetoableChange(String propertyName, boolean oldValue, boolean newValue) throws PropertyVetoExceptionFire a property change. Despite being public due to limitations in Java 8, this method should only be called by the subclasses of implementing classes, as this will become a protected class when JMRI requires Java 11 or newer.- Specified by:
fireVetoableChange
in interfaceVetoableChangeFirer
- Parameters:
propertyName
- the programmatic name of the property that was changedoldValue
- the old value of the propertynewValue
- the new value of the property- Throws:
PropertyVetoException
- if one of listeners vetoes the property update
-
fireVetoableChange
Fire a property change. Despite being public due to limitations in Java 8, this method should only be called by the subclasses of implementing classes, as this will become a protected class when JMRI requires Java 11 or newer.- Specified by:
fireVetoableChange
in interfaceVetoableChangeFirer
- Parameters:
event
- the PropertyChangeEvent to be fired- Throws:
PropertyVetoException
- if one of listeners vetoes the property update
-
fireVetoableChange
public void fireVetoableChange(String propertyName, int oldValue, int newValue) throws PropertyVetoExceptionFire a property change. Despite being public due to limitations in Java 8, this method should only be called by the subclasses of implementing classes, as this will become a protected class when JMRI requires Java 11 or newer.- Specified by:
fireVetoableChange
in interfaceVetoableChangeFirer
- Parameters:
propertyName
- the programmatic name of the property that was changedoldValue
- the old value of the propertynewValue
- the new value of the property- Throws:
PropertyVetoException
- if one of listeners vetoes the property update
-
fireVetoableChange
public void fireVetoableChange(String propertyName, Object oldValue, Object newValue) throws PropertyVetoExceptionFire a property change. Despite being public due to limitations in Java 8, this method should only be called by the subclasses of implementing classes, as this will become a protected class when JMRI requires Java 11 or newer.- Specified by:
fireVetoableChange
in interfaceVetoableChangeFirer
- Parameters:
propertyName
- the programmatic name of the property that was changedoldValue
- the old value of the propertynewValue
- the new value of the property- Throws:
PropertyVetoException
- if one of listeners vetoes the property update
-