Package org.eclipse.jdt.ui.actions

## Class SelectionDispatchAction

- java.lang.Object
- - org.eclipse.core.commands.common.EventManager
  - - org.eclipse.jface.action.AbstractAction
    - - org.eclipse.jface.action.Action
      - - org.eclipse.jdt.ui.actions.SelectionDispatchAction

All Implemented Interfaces:
  `IAction`, `ISelectionChangedListener`

Direct Known Subclasses:
  `AddDelegateMethodsAction`, `AddGetterSetterAction`, `AddJavaDocStubAction`, `AddToClasspathAction`, `AddUnimplementedConstructorsAction`, `ChangeTypeAction`, `ConvertAnonymousToNestedAction`, `ConvertLocalToFieldAction`, `ConvertNestedToTopAction`, `ExternalizeStringsAction`, `ExtractClassAction`, `ExtractConstantAction`, `ExtractInterfaceAction`, `ExtractMethodAction`, `ExtractTempAction`, `FindAction`, `FindBreakContinueTargetOccurrencesAction`, `FindExceptionOccurrencesAction`, `FindImplementOccurrencesAction`, `FindMethodExitOccurrencesAction`, `FindOccurrencesInFileAction`, `FindStringsToExternalizeAction`, `FormatAllAction`, `GenerateHashCodeEqualsAction`, `GenerateNewConstructorUsingFieldsAction`, `GenerateToStringAction`, `InferTypeArgumentsAction`, `InlineAction`, `InlineTempAction`, `IntroduceFactoryAction`, `IntroduceIndirectionAction`, `IntroduceParameterAction`, `ModifyParametersAction`, `MoveAction`, `OpenAction`, `OpenAttachedJavadocAction`, `OpenImplementationAction`, `OpenProjectAction`, `OpenSuperImplementationAction`, `OpenTypeHierarchyAction`, `OrganizeImportsAction`, `OverrideMethodsAction`, `PullUpAction`, `PushDownAction`, `RefreshAction`, `RemoveFromClasspathAction`, `RenameAction`, `ReplaceInvocationsAction`, `SelfEncapsulateFieldAction`, `ShowInNavigatorViewAction`, `ShowInPackageViewAction`, `SortMembersAction`, `SurroundWithTryCatchAction`, `SurroundWithTryWithResourcesAction`, `UseSupertypeAction`

    public abstract class SelectionDispatchAction
    extends Action
    implements ISelectionChangedListener

Action that dispatches the `IAction#run()` and the `ISelectionChangedListener#selectionChanged` according to the type of the selection.

- if selection is of type `ITextSelection` then `run(ITextSelection)` and `selectionChanged(ITextSelection)` is called.
- if selection is of type `IStructuredSelection` then `run(IStructuredSelection)` and `selectionChanged(IStructuredSelection)` is called.
- default is to call `run(ISelection)` and `selectionChanged(ISelection)`.

Note: This class is not intended to be subclassed outside the JDT UI plug-in.

Since:
  2.0
Restriction:
  This class is not intended to be subclassed by clients.

### Field Summary

### Fields inherited from interface org.eclipse.jface.action.IAction

`AS_CHECK_BOX, AS_DROP_DOWN_MENU, AS_PUSH_BUTTON, AS_RADIO_BUTTON, AS_UNSPECIFIED, CHECKED, DESCRIPTION, ENABLED, HANDLED, IMAGE, RESULT, TEXT, TOOL_TIP_TEXT`

### Constructor Summary

Constructors
`protected` `SelectionDispatchAction​(IWorkbenchSite site)` Creates a new action with no text and no image.
`protected` `SelectionDispatchAction​(IWorkbenchSite site, ISelectionProvider provider)` Deprecated. Use `setSpecialSelectionProvider(ISelectionProvider)` instead.

### Method Summary

All Methods Instance Methods Concrete Methods
`ISelection` `getSelection()` Returns the selection provided by the site owning this action.
`ISelectionProvider` `getSelectionProvider()` Returns the selection provider managed by the site owning this action or the selection provider explicitly set in `setSpecialSelectionProvider(ISelectionProvider)`.
`Shell` `getShell()` Returns the shell provided by the site owning this action.
`IWorkbenchSite` `getSite()` Returns the site owning this action.
`void` `run()`
`void` `run​(org.eclipse.jdt.internal.ui.javaeditor.JavaTextSelection selection)` Note: This method is for internal use only.
`void` `run​(ITextSelection selection)` Executes this actions with the given text selection.
`void` `run​(ISelection selection)` Executes this actions with the given selection.
`void` `run​(IStructuredSelection selection)` Executes this actions with the given structured selection.
`void` `selectionChanged​(org.eclipse.jdt.internal.ui.javaeditor.JavaTextSelection selection)` Note: This method is for internal use only.
`void` `selectionChanged​(ITextSelection selection)` Notifies this action that the given text selection has changed.
`void` `selectionChanged​(ISelection selection)` Notifies this action that the given selection has changed.
`void` `selectionChanged​(IStructuredSelection selection)` Notifies this action that the given structured selection has changed.
`void` `selectionChanged​(SelectionChangedEvent event)`
`void` `setSpecialSelectionProvider​(ISelectionProvider provider)` Sets a special selection provider which will be used instead of the site's selection provider.
`void` `update​(ISelection selection)` Updates the action's enablement state according to the given selection.

### Methods inherited from class org.eclipse.jface.action.Action

`convertAccelerator, convertAccelerator, findKeyCode, findKeyString, findModifier, findModifierString, getAccelerator, getActionDefinitionId, getDescription, getDisabledImageDescriptor, getHelpListener, getHoverImageDescriptor, getId, getImageDescriptor, getMenuCreator, getStyle, getText, getToolTipText, isChecked, isEnabled, isHandled, notifyResult, removeAcceleratorText, removeMnemonics, runWithEvent, setAccelerator, setActionDefinitionId, setChecked, setDescription, setDisabledImageDescriptor, setEnabled, setHelpListener, setHoverImageDescriptor, setId, setImageDescriptor, setMenuCreator, setText, setToolTipText`

### Methods inherited from class org.eclipse.jface.action.AbstractAction

`addPropertyChangeListener, firePropertyChange, firePropertyChange, removePropertyChangeListener`

### 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`

### Constructor Detail

#### SelectionDispatchAction

    protected SelectionDispatchAction​(IWorkbenchSite site)

Creates a new action with no text and no image.

Configure the action later using the set methods.

Parameters:
  `site` - the site this action is working on

#### SelectionDispatchAction

    @Deprecated
    protected SelectionDispatchAction​(IWorkbenchSite site,
                                      ISelectionProvider provider)

Deprecated.
Use `setSpecialSelectionProvider(ISelectionProvider)` instead. This constructor will be removed after 3.2 M5.
Creates a new action with no text and no image

Configure the action later using the set methods.

Parameters:
  `site` - the site this action is working on
  `provider` - a special selection provider which is used instead of the site's selection provider or `null` to use the site's selection provider. Clients can for example use a `ConvertingSelectionProvider` to first convert a selection before passing it to the action.
Since:
  3.2

### Method Detail

#### getSite

    public IWorkbenchSite getSite()

Returns the site owning this action.

Returns:
  the site owning this action

#### getSelection

    public ISelection getSelection()

Returns the selection provided by the site owning this action.

Returns:
  the site's selection

#### getShell

    public Shell getShell()

Returns the shell provided by the site owning this action.

Returns:
  the site's shell

#### getSelectionProvider

    public ISelectionProvider getSelectionProvider()

Returns the selection provider managed by the site owning this action or the selection provider explicitly set in `setSpecialSelectionProvider(ISelectionProvider)`.

Returns:
  the site's selection provider

#### setSpecialSelectionProvider

    public void setSpecialSelectionProvider​(ISelectionProvider provider)

Sets a special selection provider which will be used instead of the site's selection provider. This method should be used directly after constructing the action and before the action is registered as a selection listener. The invocation will not a perform a selection change notification.

Parameters:
  `provider` - a special selection provider which is used instead of the site's selection provider or `null` to use the site's selection provider. Clients can for example use a `ConvertingSelectionProvider` to first convert a selection before passing it to the action.
Since:
  3.2

#### update

    public void update​(ISelection selection)

Updates the action's enablement state according to the given selection. This default implementation calls one of the `selectionChanged` methods depending on the type of the passed selection.

Parameters:
  `selection` - the selection this action is working on

#### selectionChanged

    public void selectionChanged​(IStructuredSelection selection)

Notifies this action that the given structured selection has changed. This default implementation calls `selectionChanged(ISelection selection)`.

Parameters:
  `selection` - the new selection

#### run

    public void run​(IStructuredSelection selection)

Executes this actions with the given structured selection. This default implementation calls `run(ISelection selection)`.

Parameters:
  `selection` - the selection

#### selectionChanged

    public void selectionChanged​(org.eclipse.jdt.internal.ui.javaeditor.JavaTextSelection selection)

Note: This method is for internal use only. Clients should not call this method.

Parameters:
  `selection` - the selection
Restriction:
  This method is not intended to be referenced by clients.

#### run

    public void run​(org.eclipse.jdt.internal.ui.javaeditor.JavaTextSelection selection)

Note: This method is for internal use only. Clients should not call this method.

Parameters:
  `selection` - the selection
Restriction:
  This method is not intended to be referenced by clients.

#### selectionChanged

    public void selectionChanged​(ITextSelection selection)

Notifies this action that the given text selection has changed. This default implementation calls `selectionChanged(ISelection selection)`.

Parameters:
  `selection` - the new selection

#### run

    public void run​(ITextSelection selection)

Executes this actions with the given text selection. This default implementation calls `run(ISelection selection)`.

Parameters:
  `selection` - the selection

#### selectionChanged

    public void selectionChanged​(ISelection selection)

Notifies this action that the given selection has changed. This default implementation sets the action's enablement state to `false`.

Parameters:
  `selection` - the new selection

#### run

    public void run​(ISelection selection)

Executes this actions with the given selection. This default implementation does nothing.

Parameters:
  `selection` - the selection

#### run

    public void run()

Specified by:
  `run` in interface `IAction`
Overrides:
  `run` in class `Action`

#### selectionChanged

    public void selectionChanged​(SelectionChangedEvent event)

Specified by:
  `selectionChanged` in interface `ISelectionChangedListener`