org.eclipse.core.commands

## Class AbstractHandlerWithState

- java.lang.Object
- - org.eclipse.core.commands.common.EventManager
  - - org.eclipse.core.commands.AbstractHandler
    - - org.eclipse.core.commands.AbstractHandlerWithState

All Implemented Interfaces:
  IHandler, IHandler2, IObjectWithState, IStateListener

    public abstract class AbstractHandlerWithState
    extends AbstractHandler
    implements IObjectWithState, IStateListener

An abstract implementation of `IObjectWithState`. This provides basic handling for adding and remove state. When state is added, the handler attaches itself as a listener and fire a handleStateChange event to notify this handler. When state is removed, the handler removes itself as a listener.

Clients may extend this class.

Since:
  3.2

### Constructor Summary

Constructors
Constructor and Description
`AbstractHandlerWithState()`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addState(String stateId, State state)` Adds a state to this handler.
`State` `getState(String stateId)` Gets the state with the given id.
`String[]` `getStateIds()` Gets the identifiers for all of the state associated with this object.
`void` `removeState(String stateId)` Removes a state from this handler.

### Methods inherited from class org.eclipse.core.commands.AbstractHandler

`addHandlerListener, dispose, fireHandlerChanged, hasListeners, isEnabled, isHandled, removeHandlerListener, setBaseEnabled, setEnabled`

### Methods inherited from class org.eclipse.core.commands.common.EventManager

`addListenerObject, clearListeners, getListeners, isListenerAttached, removeListenerObject`

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

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

### Methods inherited from interface org.eclipse.core.commands.IStateListener

`handleStateChange`

### Methods inherited from interface org.eclipse.core.commands.IHandler

`execute`

### Constructor Detail

#### AbstractHandlerWithState

    public AbstractHandlerWithState()

### Method Detail

#### addState

    public void addState(String stateId,
                         State state)

Adds a state to this handler. This will add this handler as a listener to the state, and then fire a handleStateChange so that the handler can respond to the incoming state.

Clients may extend this method, but they should call this super method first before doing anything else.

Specified by:
  `addState` in interface `IObjectWithState`
Parameters:
  `stateId` - The identifier indicating the type of state being added; must not be `null`.
  `state` - The state to add; must not be `null`.

#### getState

    public final State getState(String stateId)

Description copied from interface: `IObjectWithState`
Gets the state with the given id.

Specified by:
  `getState` in interface `IObjectWithState`
Parameters:
  `stateId` - The identifier of the state to retrieve; must not be `null`.
Returns:
  The state; may be `null` if there is no state with the given id.

#### getStateIds

    public final String[] getStateIds()

Description copied from interface: `IObjectWithState`
Gets the identifiers for all of the state associated with this object.

Specified by:
  `getStateIds` in interface `IObjectWithState`
Returns:
  All of the state identifiers; may be empty, but never `null`.

#### removeState

    public void removeState(String stateId)

Removes a state from this handler. This will remove this handler as a listener to the state. No event is fired to notify the handler of this change.

Clients may extend this method, but they should call this super method first before doing anything else.

Specified by:
  `removeState` in interface `IObjectWithState`
Parameters:
  `stateId` - The identifier of the state to remove; must not be `null`.