|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.jgoodies.binding.beans.Model
com.jgoodies.binding.value.AbstractValueModel
com.jgoodies.binding.value.DelayedReadValueModel
public final class DelayedReadValueModel
A ValueModel that deferres updates and read-access for a specified delay. Useful to coalesce frequent changes. For example if a heavy computation shall be performed only for a "stable" selection after a series of quick selection changes.
Wraps a given subject ValueModel and observes subject value changes and forwards them to listeners of this model after a delay. If the subject value changes, a Swing Timer is used to delay the change notification. A previously started timer - if any - will be stopped before. Reading this model's value returns: a) the subject value if there's no pending update, or b) this model's old value that will be updated after the delay. If a value is set to this model, it immediately updates the subject value.
TODO: Describe how and when listeners get notified about the delayed change.
TODO: Write about the recommended delay time - above the double-click time and somewhere below a second, e.g. 100ms to 200ms.
TODO: Write about a slightly different commit handling. The current implementation defers the commit until the value is stable for the specified delay; it's a DelayUntilStableForXXXmsValueModel. Another feature is to delay for a specified time but ensure that some commits and change notifications happen. The latter is a CoalescingWriteValueModel.
TODO: Summarize the differences between the DelayedReadValueModel, the DelayedWriteValueModel, and the DelayedPropertyChangeHandler.
Timer,
Serialized Form| Field Summary |
|---|
| Fields inherited from class com.jgoodies.binding.value.AbstractValueModel |
|---|
PROPERTYNAME_VALUE |
| Constructor Summary | |
|---|---|
DelayedReadValueModel(ValueModel subject,
int delay)
Constructs a DelayedReadValueModel for the given subject ValueModel and the specified Timer delay in milliseconds with coalescing disabled. |
|
DelayedReadValueModel(ValueModel subject,
int delay,
boolean coalesce)
Constructs a DelayedReadValueModel for the given subject ValueModel and the specified Timer delay in milliseconds using the given coalesce mode. |
|
| Method Summary | |
|---|---|
int |
getDelay()
Returns the delay, in milliseconds, that is used to defer value change notifications. |
java.lang.Object |
getValue()
Returns the subject's value or in case of a pending commit, the pending new value. |
boolean |
isCoalesce()
Returns if this model coalesces all pending changes or not. |
boolean |
isPending()
Checks and answers whether this model has one or more pending changes. |
void |
setCoalesce(boolean b)
Sets if this model shall coalesce all pending changes or not. |
void |
setDelay(int delay)
Sets the delay, in milliseconds, that is used to defer value change notifications. |
void |
setValue(java.lang.Object newValue)
Sets the given new value immediately as the subject's new value. |
void |
stop()
Stops a running timer. |
| Methods inherited from class com.jgoodies.binding.value.AbstractValueModel |
|---|
addValueChangeListener, booleanValue, doubleValue, fireValueChange, fireValueChange, fireValueChange, fireValueChange, fireValueChange, fireValueChange, fireValueChange, floatValue, getString, intValue, longValue, paramString, removeValueChangeListener, setValue, setValue, setValue, setValue, setValue, toString, valueString |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public DelayedReadValueModel(ValueModel subject,
int delay)
subject - the underlying (or wrapped) ValueModeldelay - the milliseconds to wait before a change
shall be committed
java.lang.IllegalArgumentException - if the delay is negative
public DelayedReadValueModel(ValueModel subject,
int delay,
boolean coalesce)
subject - the underlying (or wrapped) ValueModeldelay - the milliseconds to wait before a change
shall be committedcoalesce - true to coalesce all pending changes,
false to fire changes with the delay when an update
has been received
java.lang.IllegalArgumentException - if the delay is negativesetCoalesce(boolean)| Method Detail |
|---|
public java.lang.Object getValue()
public void setValue(java.lang.Object newValue)
newValue - the value to setpublic int getDelay()
setDelay(int)public void setDelay(int delay)
delay - the delay, in milliseconds, that is used to defer
value change notificationsgetDelay()public boolean isCoalesce()
true if all pending changes will be coalesced,
false if pending changes are fired with a delay
when an update has been received.setCoalesce(boolean)public void setCoalesce(boolean b)
false, a change event will be fired
with this model's delay when an update has been received.
The default value is false.
Note that this value is not the #coalesce value of this model's internal Swing timer.
b - true to coalesce,
false to fire separate changespublic void stop()
ValueUpdateListener.
public boolean isPending()
true if there are pending changes, false if not.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||