Package org.eclipse.core.databinding.observable

# Class DecoratingObservable

java.lang.Object
org.eclipse.core.databinding.observable.AbstractObservable
org.eclipse.core.databinding.observable.DecoratingObservable

All Implemented Interfaces:
  `IDecoratingObservable`, `IObservable`

Direct Known Subclasses:
  `DecoratingObservableCollection`, `DecoratingObservableMap`, `DecoratingObservableValue`

public class DecoratingObservable extends AbstractObservable implements IDecoratingObservable
An observable which decorates another observable

Since:
  1.2
Implementation Note:
  If methods are added to the interface which this class implements then implementations of those methods must be added to this class.

## Constructor Summary

Constructors
Constructor
Description
`DecoratingObservable(IObservable decorated, boolean disposeDecoratedOnDispose)`
Constructs a DecoratingObservable which decorates the given observable.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`addListener(Object listenerType, IObservablesListener listener)`
`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.
`boolean`
`equals(Object obj)`
`protected void`
`fireEvent(ObservableEvent event)`
`protected void`
`firstListenerAdded()`
`IObservable`
`getDecorated()`
`Realm`
`getRealm()`
`protected void`
`getterCalled()`
`protected void`
`handleStaleEvent(StaleEvent event)`
Called whenever a StaleEvent is received from the decorated observable.
`int`
`hashCode()`
`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`
`removeListener(Object listenerType, IObservablesListener listener)`

### Methods inherited from class org.eclipse.core.databinding.observable.AbstractObservable

`addChangeListener, addDisposeListener, addStaleListener, checkRealm, fireChange, fireStale, isDisposed, removeChangeListener, removeDisposeListener, removeStaleListener`

### Methods inherited from class java.lang.Object

`finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.eclipse.core.databinding.observable.IObservable

`addChangeListener, addDisposeListener, addStaleListener, getRealm, isDisposed, removeChangeListener, removeDisposeListener, removeStaleListener`

## Constructor Details

### DecoratingObservable

public DecoratingObservable(IObservable decorated, boolean disposeDecoratedOnDispose)
Constructs a DecoratingObservable which decorates the given observable.

Parameters:
  `decorated` - the observable being decorated.
  `disposeDecoratedOnDispose` - whether the decorated observable should be disposed when the decorator is disposed

## Method Details

### getDecorated

public IObservable getDecorated()

Specified by:
  `getDecorated` in interface `IDecoratingObservable`
Returns:
  the observable that this observable decorates.

### 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`
Returns:
  true if this observable's state is stale and will change soon.

### getterCalled

protected void getterCalled()

### firstListenerAdded

protected void firstListenerAdded()

### lastListenerRemoved

protected void lastListenerRemoved()

### handleStaleEvent

protected void handleStaleEvent(StaleEvent event)
Called whenever a StaleEvent is received from the decorated observable. By default, this method fires the stale event again, with the decorating observable as the event source. Subclasses may override to provide different behavior.

Parameters:
  `event` - the stale event received from the decorated observable

### equals

public boolean equals(Object obj)

Overrides:
  `equals` in class `Object`

### hashCode

public int hashCode()

Overrides:
  `hashCode` in class `Object`

### 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` - arbitrary object to identify a type of the listener
  `listener` - the listener to add; not `null`

### removeListener

protected void removeListener(Object listenerType, IObservablesListener listener)

Parameters:
  `listenerType` - arbitrary object to identify a type of the listener
  `listener` - the listener to remove; not `null`

### hasListeners

protected boolean hasListeners()

### fireEvent

protected void fireEvent(ObservableEvent event)

### getRealm

public Realm getRealm()

Returns:
  Returns the realm.

### clone

protected Object clone() throws CloneNotSupportedException

Overrides:
  `clone` in class `Object`
Throws:
  `CloneNotSupportedException`