Describes models with a generic access to a single value that allow
to observe value changes. The value can be accessed using the
#getValue() /#setValue(Object) methods.
Observers can register instances of PropertyChangeListener
to be notified if the value changes.
If the value is read-only or write-only, an implementor may choose
to reject an operation using an UnsupportedOperationException
or may do nothing or perform an appropriate action, or may return an
appropriate value.
The listeners registered with this ValueModel using #addValueChangeListener
will be invoked only with PropertyChangeEvents that have the name set to
"value".
In other words, the listeners won't get notified when a PropertyChangeEvent
is fired that has a null object as the name to indicate an arbitrary set
of the event source's properties have changed. This is the case
if you use the PropertyChangeSupport, either directly or indirectly,
to fire property changes with the property name "value" specified.
This constraint ensures that all ValueModel implementors behave
like the AbstractValueModel subclasses.
In the rare case, where you want to notify a PropertyChangeListener
even with PropertyChangeEvents that have no property name set,
you can register the listener with #addPropertyChangeListener,
not #addValueChangeListener.
AbstractValueModel minimizes the effort required to implement this interface.
It uses the PropertyChangeSupport to fire PropertyChangeEvents, and it adds
PropertyChangeListeners for the specific property name "value". This ensures
that the constraint mentioned above is met.
Implementors are encouraged to provide non-null values for the
PropertyChangeEvent's old and new values. However, both may be null.
author: Karsten Lentzsch version: $Revision: 1.4 $ See Also: AbstractValueModel See Also: ValueHolder See Also: com.jgoodies.binding.beans.PropertyAdapter |