Class AutoBinding<SS,SV,TS,TV>
- java.lang.Object
-
- org.jdesktop.beansbinding.Binding<SS,SV,TS,TV>
-
- org.jdesktop.beansbinding.AutoBinding<SS,SV,TS,TV>
-
- Type Parameters:
SS
- the type of source objectSV
- the type of value that the source property representsTS
- the type of target objectTV
- the type of value that the target property represents
- Direct Known Subclasses:
JComboBoxBinding
,JListBinding
,JTableBinding
public class AutoBinding<SS,SV,TS,TV> extends Binding<SS,SV,TS,TV>
An implementation ofBinding
that automatically syncs the source and target by refreshing and saving according to one of three update strategies. The update strategy is specified for anAutoBinding
on creation, and is one of:AutoBinding.UpdateStrategy.READ_ONCE
AutoBinding.UpdateStrategy.READ
AutoBinding.UpdateStrategy.READ_WRITE
The behavior of
AutoBinding
for each of the update strategies is defined as follows:READ_ONCE
Summary:
Tries to sync the target from the source only once, at bind time.Details:
At bind time, tries to sync the target from the source, by callingrefreshAndNotify
. No further automatic syncing is done.READ
Summary:
Tries to keep the target in sync with the source.Details:
At bind time, tries to sync the target from the source, by callingrefreshAndNotify
. Then automatically tries to sync the target from the source by callingrefreshAndNotify
when either the source changes value, or the target changes from unwriteable to writeable.READ_WRITE
Summary:
Tries to keep both the source and target in sync with each other.Details:
At bind time, first tries to sync the target from the source, by callingrefresh
. If the call succeeds, notifies the binding listeners of a successful sync. If the call returns failure, then tries to instead sync the source from the target by callingsave
. If this second call succeeds, notifies the binding listeners of a succesful sync. If it returns failure, notifies the binding listeners of a failed sync, indicating the reason for the original refresh failure.Automatically responds to changes in the state of the source as follows: If the change represents a value change, use the try-refresh-then-save procedure mentioned above. Otherwise, if the change represents the source becoming writeable, tries to update the source from the target by calling
saveAndNotify
.Automatically responds to changes in the state of the target as follows: If the change represents the target simply becoming writeable, try to sync the target from the source by calling
refreshAndNotify
. If the change represents the target becoming writeable and the value changing together, use the try-refresh-then-save procedure mentioned above. Finally if the change represents the target's value changing alone, first try to sync the source from the target by callingsave
. If that succeeds, notify the listeners of a successful sync. If it returns failure due to conversion or validation, notify the listeners of a sync failure, providing the conversion or validation failure. If it fails for any other reason, then instead try to sync the target from the source by callingrefresh
. If this succeeds, notify the listeners of successful sync. Otherwise notify them of failure with the reasons for the original save failure.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AutoBinding.UpdateStrategy
An enumeration representing the possible update strategies of anAutoBinding
.-
Nested classes/interfaces inherited from class org.jdesktop.beansbinding.Binding
Binding.SyncFailure, Binding.SyncFailureType, Binding.ValueResult<V>
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AutoBinding(AutoBinding.UpdateStrategy strategy, SS sourceObject, Property<SS,SV> sourceProperty, TS targetObject, Property<TS,TV> targetProperty, java.lang.String name)
Create an instance ofAutoBinding
between two properties of two objects, with the given update strategy.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
bindImpl()
Called byBinding.bind()
to allow subclasses to initiate binding.AutoBinding.UpdateStrategy
getUpdateStrategy()
Returns theAutoBinding's
update strategy.protected java.lang.String
paramString()
Returns a string representing the internal state of theBinding
.protected void
sourceChangedImpl(PropertyStateEvent pse)
Called to indicate that the source property has fired aPropertyStateEvent
to indicate that its state has changed for the source object.protected void
targetChangedImpl(PropertyStateEvent pse)
Called to indicate that the target property has fired aPropertyStateEvent
to indicate that its state has changed for the target object.protected void
unbindImpl()
Called byBinding.unbind()
to allow subclasses to uninitiate binding.-
Methods inherited from class org.jdesktop.beansbinding.Binding
addBindingListener, addPropertyChangeListener, addPropertyChangeListener, bind, bindUnmanaged, firePropertyChange, getBindingListeners, getConverter, getName, getPropertyChangeListeners, getPropertyChangeListeners, getSourceNullValue, getSourceObject, getSourceProperty, getSourceUnreadableValue, getSourceValueForTarget, getTargetNullValue, getTargetObject, getTargetProperty, getTargetValueForSource, getValidator, isBound, isManaged, isSourceUnreadableValueSet, notifySynced, notifySyncFailed, refresh, refreshAndNotify, refreshAndNotifyUnmanaged, refreshUnmanaged, removeBindingListener, removePropertyChangeListener, removePropertyChangeListener, save, saveAndNotify, saveAndNotifyUnmanaged, saveUnmanaged, setConverter, setManaged, setSourceNullValue, setSourceObject, setSourceObjectUnmanaged, setSourceProperty, setSourceUnreadableValue, setTargetNullValue, setTargetObject, setTargetObjectUnmanaged, setTargetProperty, setValidator, throwIfBound, throwIfManaged, throwIfUnbound, toString, unbind, unbindUnmanaged, unsetSourceUnreadableValue
-
-
-
-
Constructor Detail
-
AutoBinding
protected AutoBinding(AutoBinding.UpdateStrategy strategy, SS sourceObject, Property<SS,SV> sourceProperty, TS targetObject, Property<TS,TV> targetProperty, java.lang.String name)
Create an instance ofAutoBinding
between two properties of two objects, with the given update strategy.- Parameters:
strategy
- the update strategysourceObject
- the source objectsourceProperty
- a property on the source objecttargetObject
- the target objecttargetProperty
- a property on the target objectname
- a name for theBinding
- Throws:
java.lang.IllegalArgumentException
- if the source property or target property isnull
-
-
Method Detail
-
getUpdateStrategy
public final AutoBinding.UpdateStrategy getUpdateStrategy()
Returns theAutoBinding's
update strategy.- Returns:
- the update strategy
-
bindImpl
protected void bindImpl()
Description copied from class:Binding
Called byBinding.bind()
to allow subclasses to initiate binding. Subclasses typically need not installPropertyStateListeners
on the source property and target property as they will be notified by calls toBinding.sourceChangedImpl(org.jdesktop.beansbinding.PropertyStateEvent)
andBinding.targetChangedImpl(org.jdesktop.beansbinding.PropertyStateEvent)
when the source and target properties change respectively.
-
unbindImpl
protected void unbindImpl()
Description copied from class:Binding
Called byBinding.unbind()
to allow subclasses to uninitiate binding.- Specified by:
unbindImpl
in classBinding<SS,SV,TS,TV>
- See Also:
Binding.bindImpl()
-
paramString
protected java.lang.String paramString()
Returns a string representing the internal state of theBinding
. This method is intended to be used for debugging purposes only, and the content and format of the returned string may vary between implementations. The returned string may be empty but may not benull
.
-
sourceChangedImpl
protected void sourceChangedImpl(PropertyStateEvent pse)
Description copied from class:Binding
Called to indicate that the source property has fired aPropertyStateEvent
to indicate that its state has changed for the source object. Called after theBinding
has notified any property change listeners andBindingListeners
that the source value has been edited (only if thePropertyStateEvent
represents a value change). This method is useful for subclasses to detect source changes and perform syncing as appropriate.
-
targetChangedImpl
protected void targetChangedImpl(PropertyStateEvent pse)
Description copied from class:Binding
Called to indicate that the target property has fired aPropertyStateEvent
to indicate that its state has changed for the target object. Called after theBinding
has notified any property change listeners andBindingListeners
that the target value has been edited (only if thePropertyStateEvent
represents a value change). This method is useful for subclasses to detect target changes and perform syncing as appropriate.
-
-