org.eclipse.core.databinding.observable.value
Class ComputedValue
java.lang.Object
org.eclipse.core.databinding.observable.AbstractObservable
org.eclipse.core.databinding.observable.value.AbstractObservableValue
org.eclipse.core.databinding.observable.value.ComputedValue
-
All Implemented Interfaces:
-
IObservable,
IObservableValue
-
Direct Known Subclasses:
-
AggregateValidationStatus
-
public abstract class ComputedValue
- extends
AbstractObservableValue
A Lazily calculated value that automatically computes and registers listeners
on its dependencies as long as all of its dependencies are
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
-
Since:
- 1.0
ComputedValue
public ComputedValue()
ComputedValue
public ComputedValue(
Object valueType)
-
Parameters:
-
valueType
- can be null
ComputedValue
public ComputedValue(
Realm realm)
-
Parameters:
-
realm
-
ComputedValue
public ComputedValue(
Realm realm,
Object valueType)
-
Parameters:
-
realm
- -
valueType
-
doGetValue
protected final
Object doGetValue()
-
-
Specified by:
-
doGetValue
in class
AbstractObservableValue
-
calculate
protected abstract
Object calculate()
- Subclasses must override this method to provide the object's value. Any
dependencies used to calculate the value must be
IObservable
, and
implementers must use one of the interface methods tagged TrackedGetter
for ComputedValue to recognize it as a dependency.
-
-
Returns:
- the object's value
makeDirty
protected final void makeDirty()
-
isStale
public boolean isStale()
-
Description copied from interface:
IObservable
- Returns whether the state of this observable is stale and is expected to
change soon. A non-stale observable that becomes stale will notify its
stale listeners. A stale object that becomes non-stale does so by
changing its state and notifying its change listeners, it does not
notify its stale listeners about becoming non-stale. Clients that do not
expect asynchronous changes may ignore staleness of observable objects.
-
-
Specified by:
-
isStale
in interface
IObservable
-
Overrides:
-
isStale
in class
AbstractObservableValue
-
-
Returns:
- true if this observable's state is stale and will change soon.
getValueType
public
Object getValueType()
-
Description copied from interface:
IObservableValue
- The value type of this observable value, or
null
if this
observable value is untyped.
-
-
Returns:
- the value type, or
null
hasListeners
protected boolean hasListeners()
-
-
-
Since:
- 1.1
addChangeListener
public void addChangeListener(
IChangeListener listener)
-
Description copied from interface:
IObservable
- Adds the given change listener to the list of change listeners. Change
listeners are notified about changes of the state of this observable in a
generic way, without specifying the change that happened. To get the
changed state, a change listener needs to query for the current state of
this observable.
-
-
Specified by:
-
addChangeListener
in interface
IObservable
-
Overrides:
-
addChangeListener
in class
AbstractObservable
-
addValueChangeListener
public void addValueChangeListener(
IValueChangeListener listener)
-
-
Specified by:
-
addValueChangeListener
in interface
IObservableValue
-
Overrides:
-
addValueChangeListener
in class
AbstractObservableValue
-
dispose
public void dispose()
-
Description copied from interface:
IObservable
- Disposes of this observable object, removing all listeners registered
with this object, and all listeners this object might have registered on
other objects.
-
-
Specified by:
-
dispose
in interface
IObservable
-
Overrides:
-
dispose
in class
AbstractObservable
-
addListener
protected void addListener(
Object listenerType,
IObservablesListener listener)
-
-
Parameters:
-
listenerType
- -
listener
-
removeListener
protected void removeListener(
Object listenerType,
IObservablesListener listener)
-
-
Parameters:
-
listenerType
- -
listener
-
fireEvent
protected void fireEvent(
ObservableEvent event)
-
firstListenerAdded
protected void firstListenerAdded()
-
lastListenerRemoved
protected void lastListenerRemoved()
-
getRealm
public
Realm getRealm()
-
-
Returns:
- Returns the realm.
clone
protected
Object clone()
throws
CloneNotSupportedException
-
-
Overrides:
-
clone
in class
Object
-
-
Throws:
-
CloneNotSupportedException
Guidelines for using Eclipse APIs.
Copyright (c) Eclipse contributors and others 2000, 2008. All rights reserved.