|
![](/images/navbasebg.jpg) |
|
|
org.eclipse.core.databinding.observable.list
Class ComputedList
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList
org.eclipse.core.databinding.observable.list.AbstractObservableList
org.eclipse.core.databinding.observable.list.ComputedList
-
All Implemented Interfaces:
-
Iterable,
Collection,
List,
IObservable,
IObservableCollection,
IObservableList
-
public abstract class ComputedList
- extends
AbstractObservableList
A lazily calculated list 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 list 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 fibonacci sequence, up to as many elements as the value
of an
IObservableValue <
Integer
>.
final IObservableValue count = WritableValue.withValueType(Integer.TYPE);
count.setValue(new Integer(0));
IObservableList fibonacci = new ComputedList() {
protected List calculate() {
int size = ((Integer) count.getValue()).intValue();
List result = new ArrayList();
for (int i = 0; i < size; i++) {
if (i == 0)
result.add(new Integer(0));
else if (i == 1)
result.add(new Integer(1));
else {
Integer left = (Integer) result.get(i - 2);
Integer right = (Integer) result.get(i - 1);
result.add(new Integer(left.intValue() + right.intValue()));
}
}
return result;
}
};
System.out.println(fibonacci); // => "[]"
count.setValue(new Integer(5));
System.out.println(fibonacci); // => "[0, 1, 1, 2, 3]"
-
Since:
- 1.1
Constructor Summary
|
ComputedList
()
Creates a computed list in the default realm and with an unknown (null)
element type. |
ComputedList
(
Object elementType)
Creates a computed list in the default realm and with the given element
type. |
ComputedList
(
Realm realm)
Creates a computed list in given realm and with an unknown (null) element
type. |
ComputedList
(
Realm realm,
Object elementType)
Creates a computed list in the given realm and with the given element
type. |
Method Summary
|
void
|
addChangeListener
(
IChangeListener listener)
Adds the given change listener to the list of change listeners. |
void
|
addListChangeListener
(
IListChangeListener listener)
Adds the given list change listener to the list of list change listeners. |
protected abstract
List
|
calculate
()
Subclasses must override this method to calculate the list contents. |
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 int
|
doGetSize
()
|
Object
|
get
(int index)
|
Object
|
getElementType
()
Returns the element type of this observable collection, or
null if this observable collection is untyped. |
boolean
|
isStale
()
Returns whether the state of this observable is stale and is expected to
change soon. |
Methods inherited from class org.eclipse.core.databinding.observable.list.
AbstractObservableList
|
add,
addAll,
addAll,
addDisposeListener,
addStaleListener,
checkRealm,
contains,
containsAll,
equals,
fireChange,
fireListChange,
fireStale,
firstListenerAdded,
getRealm,
hashCode,
hasListeners,
indexOf,
isDisposed,
isEmpty,
iterator,
lastIndexOf,
lastListenerRemoved,
move,
remove,
removeAll,
removeChangeListener,
removeDisposeListener,
removeListChangeListener,
removeStaleListener,
retainAll,
size,
toArray,
toArray
|
ComputedList
public ComputedList()
- Creates a computed list in the default realm and with an unknown (null)
element type.
ComputedList
public ComputedList(
Object elementType)
- Creates a computed list in the default realm and with the given element
type.
-
Parameters:
-
elementType - the element type, may be null to indicate unknown
element type
ComputedList
public ComputedList(
Realm realm)
- Creates a computed list in given realm and with an unknown (null) element
type.
-
Parameters:
-
realm - the realm
ComputedList
public ComputedList(
Realm realm,
Object elementType)
- Creates a computed list in the given realm and with the given element
type.
-
Parameters:
-
realm - the realm -
elementType - the element type, may be null to indicate unknown
element type
doGetSize
protected int doGetSize()
-
-
Specified by:
-
doGetSize
in class
AbstractObservableList
-
-
Returns:
- the size
get
public
Object get(int index)
-
-
Specified by:
-
get
in interface
List
-
Specified by:
-
get
in interface
IObservableList
-
Specified by:
-
get
in class
AbstractList
-
calculate
protected abstract
List calculate()
- Subclasses must override this method to calculate the list contents. Any
dependencies used to calculate the list must be
IObservable , and
implementers must use one of the interface methods tagged TrackedGetter
for ComputedList to recognize it as a dependency.
-
-
Returns:
- the object's list.
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
AbstractObservableList
-
-
Returns:
- true if this observable's state is stale and will change soon.
getElementType
public
Object getElementType()
-
Description copied from interface:
IObservableCollection
- Returns the element type of this observable collection, or
null if this observable collection is untyped.
-
-
Returns:
- the type of the elements or
null if untyped
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
AbstractObservableList
-
addListChangeListener
public void addListChangeListener(
IListChangeListener listener)
-
Description copied from interface:
IObservableList
- Adds the given list change listener to the list of list change listeners.
-
-
Specified by:
-
addListChangeListener
in interface
IObservableList
-
Overrides:
-
addListChangeListener
in class
AbstractObservableList
-
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
AbstractObservableList
-
Guidelines for using Eclipse APIs.
Copyright (c) Eclipse contributors and others 2000, 2008. All rights reserved.
|
|
|