public abstract class ComputedValue extends AbstractObservableValue
IObservable objects. Any change to one of the observable dependencies
causes the value to be recomputed.
This class is thread safe. All state accessing methods must be invoked from
the current realm. Methods for adding and removing
listeners may be invoked from any thread.
Example: compute the sum of all elements in an IObservableList <
Integer >.
final IObservableList addends = WritableValue.withValueType(Integer.TYPE);
addends.add(new Integer(0));
addends.add(new Integer(1));
addends.add(new Integer(2));
IObservableValue sum = new ComputedValue() {
protected Object calculate() {
int sum = 0;
for (Iterator it = addends.iterator(); it.hasNext();) {
Integer addend = (Integer) it.next();
sum += addend.intValue();
}
return sum;
}
};
System.out.println(sum.getValue()); // => 3
addends.add(new Integer(10));
System.out.println(sum.getValue()); // => 13
| Constructor and Description |
|---|
ComputedValue() |
ComputedValue(Object valueType) |
ComputedValue(Realm realm) |
ComputedValue(Realm realm,
Object valueType) |
| Modifier and Type | Method and Description |
|---|---|
void |
addChangeListener(IChangeListener listener)
Adds the given change listener to the list of change listeners.
|
protected void |
addListener(Object listenerType,
IObservablesListener listener) |
void |
addValueChangeListener(IValueChangeListener listener) |
protected abstract Object |
calculate()
Subclasses must override this method to provide the object's value.
|
protected Object |
clone() |
void |
dispose()
Disposes of this observable object, removing all listeners registered
with this object, and all listeners this object might have registered on
other objects.
|
protected Object |
doGetValue() |
protected void |
fireEvent(ObservableEvent event) |
protected void |
firstListenerAdded() |
Realm |
getRealm() |
Object |
getValueType()
The value type of this observable value, or
null if this
observable value is untyped. |
protected boolean |
hasListeners() |
boolean |
isStale()
Returns whether the state of this observable is stale and is expected to
change soon.
|
protected void |
lastListenerRemoved() |
protected void |
makeDirty() |
protected void |
removeListener(Object listenerType,
IObservablesListener listener) |
doSetValue, fireChange, fireValueChange, getValue, removeValueChangeListener, setValueaddDisposeListener, addStaleListener, checkRealm, fireStale, isDisposed, removeChangeListener, removeDisposeListener, removeStaleListenerequals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitaddDisposeListener, addStaleListener, getRealm, isDisposed, removeChangeListener, removeDisposeListener, removeStaleListenerpublic ComputedValue()
public ComputedValue(Object valueType)
valueType - can be nullpublic ComputedValue(Realm realm)
realm - protected final Object doGetValue()
doGetValue in class AbstractObservableValueprotected abstract Object calculate()
IObservable, and
implementers must use one of the interface methods tagged TrackedGetter
for ComputedValue to recognize it as a dependency.protected final void makeDirty()
public boolean isStale()
IObservableisStale in interface IObservableisStale in class AbstractObservableValuepublic Object getValueType()
IObservableValuenull if this
observable value is untyped.nullprotected boolean hasListeners()
public void addChangeListener(IChangeListener listener)
IObservableaddChangeListener in interface IObservableaddChangeListener in class AbstractObservablepublic void addValueChangeListener(IValueChangeListener listener)
addValueChangeListener in interface IObservableValueaddValueChangeListener in class AbstractObservableValuepublic void dispose()
IObservabledispose in interface IObservabledispose in class AbstractObservableprotected void addListener(Object listenerType, IObservablesListener listener)
listenerType - listener - protected void removeListener(Object listenerType, IObservablesListener listener)
listenerType - listener - protected void fireEvent(ObservableEvent event)
protected void firstListenerAdded()
protected void lastListenerRemoved()
public Realm getRealm()
protected Object clone() throws CloneNotSupportedException
clone in class ObjectCloneNotSupportedException
Copyright (c) 2000, 2014 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.