:: Guide :: Value Models ::
ValueModel Interface
The ValueModel interface describes a read-write value that is observable.
You can read its value using #getValue(), you can write
its value using #setValue(Object). And you can register
a PropertyChangeListener that will be notified if the
value changes.
Predefined ValueModel Implementations
ValueHolder is the minimal ValueModel implementation.
It holds a single value that one can get and set from outside.
And it keeps a list of PropertyChangeListeners.
The most frequently used ValueModel implementation is the
PropertyAdapter and its variations. It converts
a single (bound) Bean property into a ValueModel.
Actually most PropertyAdapters are returned by
PresentationModel#getModel, #getBufferedModel,
and the BeanAdapter class.
The BufferedValueModel provides a means to buffer values,
so changes are deferred until OK or Apply is pressed.
For details see the Buffering task.
The ConverterFactory vends ValueModel implemenations
that convert types, for example Date to String.
Custom ValueModel Implementations
To minimize the effort required to implement the ValueModel interface,
you can extend the AbstractValueModel. Custom converters
will likely extend the AbstractConverter. See also
the Type Conversion task.
Combining ValueModels
Since ValueModel desribes a uniform interface to get and set values,
they can be easily combined. They can be wrapped, connected,
composed, etc. For example, the BufferedValueModel
wraps any ValueModel to buffer the value until a trigger indicates
that the value shall be committed or flushed.
|