# 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:
  `org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelectionChangedListener`

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

public abstract class SelectionDispatchAction extends org.eclipse.jface.action.Action implements org.eclipse.jface.viewers.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
Modifier
Constructor
Description
`protected`
`SelectionDispatchAction(org.eclipse.ui.IWorkbenchSite site)`
Creates a new action with no text and no image.
`protected`
`SelectionDispatchAction(org.eclipse.ui.IWorkbenchSite site, org.eclipse.jface.viewers.ISelectionProvider provider)`
Deprecated.
Use `setSpecialSelectionProvider(ISelectionProvider)` instead.

## Method Summary

Modifier and Type
Method
Description
`org.eclipse.jface.viewers.ISelection`
`getSelection()`
Returns the selection provided by the site owning this action.
`org.eclipse.jface.viewers.ISelectionProvider`
`getSelectionProvider()`
Returns the selection provider managed by the site owning this action or the selection provider explicitly set in `setSpecialSelectionProvider(ISelectionProvider)`.
`org.eclipse.swt.widgets.Shell`
`getShell()`
Returns the shell provided by the site owning this action.
`org.eclipse.ui.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(org.eclipse.jface.text.ITextSelection selection)`
Executes this actions with the given text selection.
`void`
`run(org.eclipse.jface.viewers.ISelection selection)`
Executes this actions with the given selection.
`void`
`run(org.eclipse.jface.viewers.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(org.eclipse.jface.text.ITextSelection selection)`
Notifies this action that the given text selection has changed.
`void`
`selectionChanged(org.eclipse.jface.viewers.ISelection selection)`
Notifies this action that the given selection has changed.
`void`
`selectionChanged(org.eclipse.jface.viewers.IStructuredSelection selection)`
Notifies this action that the given structured selection has changed.
`void`
`selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent event)`
`void`
`setSpecialSelectionProvider(org.eclipse.jface.viewers.ISelectionProvider provider)`
Sets a special selection provider which will be used instead of the site's selection provider.
`void`
`update(org.eclipse.jface.viewers.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 Object

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

## Constructor Details

### SelectionDispatchAction

protected SelectionDispatchAction(org.eclipse.ui.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(org.eclipse.ui.IWorkbenchSite site, org.eclipse.jface.viewers.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 Details

### getSite

public org.eclipse.ui.IWorkbenchSite getSite()
Returns the site owning this action.

Returns:
  the site owning this action

### getSelection

public org.eclipse.jface.viewers.ISelection getSelection()
Returns the selection provided by the site owning this action.

Returns:
  the site's selection

### getShell

public org.eclipse.swt.widgets.Shell getShell()
Returns the shell provided by the site owning this action.

Returns:
  the site's shell

### getSelectionProvider

public org.eclipse.jface.viewers.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(org.eclipse.jface.viewers.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(org.eclipse.jface.viewers.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(org.eclipse.jface.viewers.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(org.eclipse.jface.viewers.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(org.eclipse.jface.text.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(org.eclipse.jface.text.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(org.eclipse.jface.viewers.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(org.eclipse.jface.viewers.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 `org.eclipse.jface.action.IAction`
Overrides:
  `run` in class `org.eclipse.jface.action.Action`

### selectionChanged

public void selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent event)

Specified by:
  `selectionChanged` in interface `org.eclipse.jface.viewers.ISelectionChangedListener`