|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.ObjectAbstractBean
com.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
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 com.jgoodies.binding.beans.Model |
---|
createPropertyChangeSupport, firePropertyChange |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface com.jgoodies.binding.beans.Observable |
---|
addPropertyChangeListener, removePropertyChangeListener |
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 negativepublic 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 |