Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 


Eclipse Platform
Release 3.5

org.eclipse.core.databinding.observable.value
Class ComputedValue

java.lang.Object
  extended by 

org.eclipse.core.databinding.observable.AbstractObservable
      extended by 

org.eclipse.core.databinding.observable.value.AbstractObservableValue
          extended by 
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

Constructor Summary
ComputedValue ()
           
ComputedValue ( Object valueType)
           
ComputedValue ( Realm realm)
           
ComputedValue ( Realm realm, Object valueType)
           
 
Method Summary
 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)
           
 
Methods inherited from class org.eclipse.core.databinding.observable.value. AbstractObservableValue
doSetValue, 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 Detail

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 -
Method Detail

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

Eclipse Platform
Release 3.5

Guidelines for using Eclipse APIs.

Copyright (c) Eclipse contributors and others 2000, 2008. All rights reserved.


 
 
  Published under the terms of the Eclipse Public License Version 1.0 ("EPL") Design by Interspire