Package org.eclipse.handly.ui.outline

# Class ElementChangeListenerContribution

java.lang.Object
org.eclipse.handly.ui.outline.OutlineContribution
org.eclipse.handly.ui.outline.ElementChangeListenerContribution

All Implemented Interfaces:
  `IOutlineContribution`

public abstract class ElementChangeListenerContribution extends OutlineContribution
An abstract base class for outline contributions listening to `IElementChangeEvent`s.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ElementChangeListenerContribution()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected abstract void`
  `addElementChangeListener(IElementChangeListener listener)`
  Registers the given element change listener with the underlying model.
  `protected boolean`
  `affects(IElementChangeEvent event, Object inputElement)`
  Returns whether the given element change event affects the outline's input element.
  `protected boolean`
  `affects(IElementDelta delta, IElement element)`
  Returns whether the given element delta affects the given element.
  `void`
  `dispose()`
  Disposes of this contribution.
  `protected abstract void`
  `elementChanged(IElementChangeEvent event)`
  Notifies that the outline page is affected in some way by the given element change event.
  `protected IContentAdapter`
  `getContentAdapter()`
  Returns the installed content adapter, or a `NullContentAdapter` if none.
  `void`
  `init(ICommonOutlinePage outlinePage)`
  Initializes this contribution.
  `protected abstract void`
  `removeElementChangeListener(IElementChangeListener listener)`
  Removes the given element change listener from the underlying model.

  ### Methods inherited from class org.eclipse.handly.ui.outline.OutlineContribution

  `getOutlinePage`

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

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ElementChangeListenerContribution

    public ElementChangeListenerContribution()

- ## Method Details

  - ### init

    public void init(ICommonOutlinePage outlinePage)
    Initializes this contribution. This method is called after the outline page's tree viewer has been created.

    This method may be extended by subclasses. Subclasses must call the superclass implementation.

    `ElementChangeListenerContribution` extends this method to `register` an element change listener that invokes `elementChanged(IElementChangeEvent)` if the element change event `affects` the outline's input element.

    Specified by:
      `init` in interface `IOutlineContribution`
    Overrides:
      `init` in class `OutlineContribution`
    Parameters:
      `outlinePage` - the contribution's outline page (never `null`)

  - ### dispose

    public void dispose()
    Description copied from class: `OutlineContribution`
    Disposes of this contribution. Implementors should clean up any resources associated with this contribution. Note that there is no guarantee that `init()` has been called. This method has no effect if this contribution has already been disposed.

    This method may be extended by subclasses. Subclasses must call the superclass implementation.

    Specified by:
      `dispose` in interface `IOutlineContribution`
    Overrides:
      `dispose` in class `OutlineContribution`

  - ### affects

    protected boolean affects(IElementChangeEvent event, Object inputElement)
    Returns whether the given element change event affects the outline's input element.

    This implementation uses the `content adapter` to adapt the input element to an `IElement`. It then delegates to `affects(IElementDelta, IElement)`.

    Parameters:
      `event` - never `null`
      `inputElement` - may be `null`
    Returns:
      `true` if the given element change event affects the outline's input element, and `false` otherwise

  - ### affects

    protected boolean affects(IElementDelta delta, IElement element)
    Returns whether the given element delta affects the given element.

    This implementation checks whether the given element delta tree contains a delta that designates a `structural change` to the given element.

    Parameters:
      `delta` - never `null`
      `element` - never `null`
    Returns:
      `true` if the given delta affects the given element, and `false` otherwise

  - ### addElementChangeListener

    protected abstract void addElementChangeListener(IElementChangeListener listener)
    Registers the given element change listener with the underlying model.
    Parameters:
      `listener` - never `null`

  - ### removeElementChangeListener

    protected abstract void removeElementChangeListener(IElementChangeListener listener)
    Removes the given element change listener from the underlying model.
    Parameters:
      `listener` - never `null`

  - ### elementChanged

    protected abstract void elementChanged(IElementChangeEvent event)
    Notifies that the outline page is affected in some way by the given element change event.

    Note: This method may be called in any thread. The event object (and the deltas within it) is valid only for the duration of the invocation of this method.

    Parameters:
      `event` - never `null`

  - ### getContentAdapter

    protected IContentAdapter getContentAdapter()
    Returns the installed content adapter, or a `NullContentAdapter` if none.

    This implementation returns the content adapter provided by the outline page, if the outline page is an `IContentAdapterProvider`.

    Returns:
      an `IContentAdapter` (never `null`)