Class DuplexingObservableValue<T>
java.lang.Object
org.eclipse.core.databinding.observable.AbstractObservable
org.eclipse.core.databinding.observable.value.AbstractObservableValue<T>
org.eclipse.core.databinding.observable.value.DuplexingObservableValue<T>
- Type Parameters:
T
- the type of value being observed
- All Implemented Interfaces:
IObservable
,IObservableValue<T>
A class to reduce an observable list to a single value in an implementation
specific way.
A concrete implementation must implement
coalesceElements(Collection)
to specify how the current state of the
observed list is reduced to a single value.
For example the default implementation in
withDefaults(IObservableList, Object, Object)
will return a
predefined empty value in case the observed list is empty, an
predefined multi value if the list contains multiple different values
and the list value if it is the only value or all list values are equal.
- Since:
- 1.2
-
Constructor Summary
ConstructorDescriptionDuplexingObservableValue
(IObservableList<T> target) DuplexingObservableValue
(IObservableList<T> target, Object valueType) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addChangeListener
(IChangeListener listener) Adds the given change listener to the list of change listeners.protected void
addListener
(Object listenerType, IObservablesListener listener) void
addValueChangeListener
(IValueChangeListener<? super T> listener) protected Object
clone()
protected abstract T
coalesceElements
(Collection<T> elements) Called when the current value of this class is requested.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 T
protected void
doSetValue
(T value) Template method for setting the value of the observable.protected void
fireEvent
(ObservableEvent event) protected void
getRealm()
The value type of this observable value, ornull
if this observable value is untyped.protected boolean
boolean
isStale()
Returns whether the state of this observable is stale and is expected to change soon.protected void
protected final void
protected void
removeListener
(Object listenerType, IObservablesListener listener) static <T> DuplexingObservableValue<T>
withDefaults
(IObservableList<T> target, T emptyValue, T multiValue) Returns a DuplexingObservableValue implementation with predefined values to use if the list is empty or contains multiple different values.Methods inherited from class org.eclipse.core.databinding.observable.value.AbstractObservableValue
fireChange, fireValueChange, getValue, removeValueChangeListener, setValue
Methods inherited from class org.eclipse.core.databinding.observable.AbstractObservable
addDisposeListener, addStaleListener, checkRealm, fireStale, isDisposed, removeChangeListener, removeDisposeListener, removeStaleListener
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.eclipse.core.databinding.observable.IObservable
addDisposeListener, addStaleListener, getRealm, isDisposed, removeChangeListener, removeDisposeListener, removeStaleListener
-
Constructor Details
-
DuplexingObservableValue
- Parameters:
target
- the observed target list
-
DuplexingObservableValue
- Parameters:
target
- the observed target listvalueType
- the value type ornull
-
-
Method Details
-
withDefaults
public static <T> DuplexingObservableValue<T> withDefaults(IObservableList<T> target, T emptyValue, T multiValue) Returns a DuplexingObservableValue implementation with predefined values to use if the list is empty or contains multiple different values.- Type Parameters:
T
- the type of value being observed- Parameters:
target
- the observable listemptyValue
- the value to use when the target list is emptymultiValue
- the value to use when the target list contains multiple values that are not equivalent to each other.- Returns:
- a DuplexingObservableValue implementation with predefined values to use if the list is empty or contains multiple different values.
-
firstListenerAdded
protected void firstListenerAdded() -
lastListenerRemoved
protected void lastListenerRemoved() -
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 interfaceIObservable
- Overrides:
isStale
in classAbstractObservableValue<T>
- Returns:
- true if this observable's state is stale and will change soon.
-
doGetValue
- Specified by:
doGetValue
in classAbstractObservableValue<T>
-
coalesceElements
Called when the current value of this class is requested. The implementation must calculate a single value which should represent the given elements.- Parameters:
elements
- the collection of elements to be coalesced- Returns:
- the value representing the elements
-
doSetValue
Description copied from class:AbstractObservableValue
Template method for setting the value of the observable. By default the method throws anUnsupportedOperationException
.- Overrides:
doSetValue
in classAbstractObservableValue<T>
- Parameters:
value
- the value to set
-
getValueType
Description copied from interface:IObservableValue
The value type of this observable value, ornull
if this observable value is untyped.- Returns:
- the value type, or
null
-
addChangeListener
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 interfaceIObservable
- Overrides:
addChangeListener
in classAbstractObservable
- Parameters:
listener
- the listener to add; notnull
-
addValueChangeListener
- Specified by:
addValueChangeListener
in interfaceIObservableValue<T>
- Overrides:
addValueChangeListener
in classAbstractObservableValue<T>
- Parameters:
listener
- the change listener to add; notnull
-
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 interfaceIObservable
- Overrides:
dispose
in classAbstractObservable
-
addListener
- Parameters:
listenerType
- arbitrary object to identify a type of the listenerlistener
- the listener to add; notnull
-
removeListener
- Parameters:
listenerType
- arbitrary object to identify a type of the listenerlistener
- the listener to remove; notnull
-
hasListeners
protected boolean hasListeners() -
fireEvent
-
getRealm
- Returns:
- Returns the realm.
-
clone
- Overrides:
clone
in classObject
- Throws:
CloneNotSupportedException
-