Package org.jdesktop.beansbinding
Class PropertyHelper<S,V>
- java.lang.Object
-
- org.jdesktop.beansbinding.Property<S,V>
-
- org.jdesktop.beansbinding.PropertyHelper<S,V>
-
- Type Parameters:
S- the type of source object that thisPropertyoperates onV- the type of value that thisPropertyrepresents
- Direct Known Subclasses:
BeanProperty,ELProperty
public abstract class PropertyHelper<S,V> extends Property<S,V>
An abstract subclass ofPropertythat helps with the management ofPropertyStateListenersby implementing the methods for adding, removing, and getting listeners.PropertyHelpercan be constructed to manage listeners for multiple source objects, or to ignore the source object argument when dealing with listeners and associate them directly with thePropertyHelperinstance itself. This makesPropertyHelperuseful as a base for both property types described in the documentation forProperty.PropertyHelperalso provides, by way of the protected methodslisteningStarted(S)andlisteningStopped(S)a hook for subclasses to know when it's time to start tracking changes to a particular source object.- Author:
- Shannon Hickey
-
-
Constructor Summary
Constructors Constructor Description PropertyHelper()Create aPropertyHelperthat manages listeners for multiple source objects.PropertyHelper(boolean ignoresSource)Create aPropertyHelper, specifying whether it manages listeners for multiple source objects, or ignores the source object argument when dealing with listeners
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddPropertyStateListener(S source, PropertyStateListener listener)Adds aPropertyStateListenerto be notified when the state of thePropertychanges with respect to the given source.protected voidfirePropertyStateChange(PropertyStateEvent pse)Notify listeners that the state of this property has changed, as characterized by the givenPropertyStateEvent.PropertyStateListener[]getPropertyStateListeners(S source)Returns an arry containing the listeners registered for the given source.abstract VgetValue(S source)Returns the value of thisPropertyfor the given source.abstract Class<? extends V>getWriteType(S source)Returns the type of object that is suitable for setting as the value of thisPropertyby calls tosetValue.booleanisListening(S source)Returns whether or not there are anyPropertyStateListenersinstalled for the given source object.abstract booleanisReadable(S source)Returns whether or not thePropertyis readable for the given source.abstract booleanisWriteable(S source)Returns whether or not thePropertyis writeable for the given source.protected voidlisteningStarted(S source)Called when thisPropertyHelperchanges from having no listeners installed for the given source object to having listeners installed for the given source object.protected voidlisteningStopped(S source)Called when thisPropertyHelperchanges from having listeners installed for the given source object to having no listeners installed for the given source object.voidremovePropertyStateListener(S source, PropertyStateListener listener)Removes aPropertyStateListenerfor the given source.abstract voidsetValue(S source, V value)Sets the value of thisPropertyfor the given source.
-
-
-
Constructor Detail
-
PropertyHelper
public PropertyHelper()
Create aPropertyHelperthat manages listeners for multiple source objects.
-
PropertyHelper
public PropertyHelper(boolean ignoresSource)
Create aPropertyHelper, specifying whether it manages listeners for multiple source objects, or ignores the source object argument when dealing with listeners- Parameters:
ignoresSource- whether or not the source argument is ignored when dealing with listeners
-
-
Method Detail
-
getWriteType
public abstract Class<? extends V> getWriteType(S source)
Returns the type of object that is suitable for setting as the value of thisPropertyby calls tosetValue.- Specified by:
getWriteTypein classProperty<S,V>- Parameters:
source- the source object on which to operate- Returns:
- the type of object suitable for setting as the value
- Throws:
UnsupportedOperationException- if thePropertyis not writeable for the given source- See Also:
Property.setValue(S, V),Property.isWriteable(S)
-
getValue
public abstract V getValue(S source)
Returns the value of thisPropertyfor the given source.- Specified by:
getValuein classProperty<S,V>- Parameters:
source- the source object on which to operate- Returns:
- the value of this
Propertyfor the given source - Throws:
UnsupportedOperationException- if thePropertyis not readable for the given source- See Also:
Property.isReadable(S)
-
setValue
public abstract void setValue(S source, V value)
Sets the value of thisPropertyfor the given source.- Specified by:
setValuein classProperty<S,V>- Parameters:
source- the source object on which to operatevalue- the new value for theProperty- Throws:
UnsupportedOperationException- if thePropertyis not writeable for the given source- See Also:
Property.isWriteable(S),Property.getWriteType(S)
-
isReadable
public abstract boolean isReadable(S source)
Returns whether or not thePropertyis readable for the given source.- Specified by:
isReadablein classProperty<S,V>- Parameters:
source- the source object on which to operate- Returns:
- whether or not the
Propertyis readable for the given source. - Throws:
UnsupportedOperationException- See Also:
Property.isWriteable(S)
-
isWriteable
public abstract boolean isWriteable(S source)
Returns whether or not thePropertyis writeable for the given source.- Specified by:
isWriteablein classProperty<S,V>- Parameters:
source- the source object on which to operate- Returns:
- whether or not the
Propertyis writeable for the given source. - Throws:
UnsupportedOperationException- See Also:
Property.isReadable(S)
-
listeningStarted
protected void listeningStarted(S source)
Called when thisPropertyHelperchanges from having no listeners installed for the given source object to having listeners installed for the given source object. This is the ideal time for subclasses to install any listeners needed to track change on the source object.- See Also:
listeningStopped(S)
-
listeningStopped
protected void listeningStopped(S source)
Called when thisPropertyHelperchanges from having listeners installed for the given source object to having no listeners installed for the given source object. This is the ideal time for subclasses to remove any listeners that they've installed to track changes on the source object.- See Also:
listeningStopped(S)
-
addPropertyStateListener
public final void addPropertyStateListener(S source, PropertyStateListener listener)
Adds aPropertyStateListenerto be notified when the state of thePropertychanges with respect to the given source. Does nothing if the listener isnull. If a listener is added more than once, notifications are sent to that listener once for every time that it has been added. The ordering of listener notification is unspecified.- Specified by:
addPropertyStateListenerin classProperty<S,V>- Parameters:
source- the source object on which to operatelistener- the listener to be notified
-
removePropertyStateListener
public final void removePropertyStateListener(S source, PropertyStateListener listener)
Removes aPropertyStateListenerfor the given source. Does nothing if the listener isnullor is not one of those registered for this source object. If the listener being removed was registered more than once, only one occurrence of the listener is removed from the list of listeners. The ordering of listener notification is unspecified.- Specified by:
removePropertyStateListenerin classProperty<S,V>- Parameters:
source- the source object on which to operatelistener- the listener to be removed- See Also:
Property.addPropertyStateListener(S, org.jdesktop.beansbinding.PropertyStateListener)
-
getPropertyStateListeners
public final PropertyStateListener[] getPropertyStateListeners(S source)
Returns an arry containing the listeners registered for the given source. Order is undefined. Returns an empty array if there are no listeners.- Specified by:
getPropertyStateListenersin classProperty<S,V>- Parameters:
source- the source object on which to operate- Returns:
- the set of listeners registered for the given source
- See Also:
Property.addPropertyStateListener(S, org.jdesktop.beansbinding.PropertyStateListener)
-
firePropertyStateChange
protected final void firePropertyStateChange(PropertyStateEvent pse)
Notify listeners that the state of this property has changed, as characterized by the givenPropertyStateEvent. If thisPropertyHelperis managing listeners for multiple sources, only the listeners associated with the object returned by thePropertyStateEvent's getSourceObject()method are notified.- Parameters:
pse- thePropertyStateEventcharacterizing the state change
-
isListening
public final boolean isListening(S source)
Returns whether or not there are anyPropertyStateListenersinstalled for the given source object.- Parameters:
source- the source object of interest- Returns:
- whether or not there are any
PropertyStateListenersinstalled for the given source object
-
-