Package org.eclipse.ui.internal
Class PluginAction
java.lang.Object
org.eclipse.core.commands.common.EventManager
org.eclipse.jface.action.AbstractAction
org.eclipse.jface.action.Action
org.eclipse.ui.internal.PluginAction
- All Implemented Interfaces:
EventListener
,IAction
,ISelectionChangedListener
,INullSelectionListener
,IPluginContribution
,ISelectionListener
- Direct Known Subclasses:
ObjectPluginAction
,PartPluginAction
,WWinPluginAction
public abstract class PluginAction
extends Action
implements ISelectionListener, ISelectionChangedListener, INullSelectionListener, IPluginContribution
A PluginAction is a proxy for an action extension.
At startup we read the registry and create a PluginAction for each action
extension. This plugin action looks like the real action ( label, icon, etc )
and acts as a proxy for the action until invoked. At that point the proxy
will instantiate the real action and delegate the run method to the real
action. This makes it possible to load the action extension lazily.
Occasionally the class will ask if it is OK to load the delegate (on
selection changes). If the plugin containing the action extension has been
loaded then the action extension itself will be instantiated.
-
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
ConstructorDescriptionPluginAction
(IConfigurationElement actionElement, String id, int style) PluginAction constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected final void
Creates the delegate and refreshes its enablement.void
dispose()
Disposes this plugin action.void
Disposes the delegate, if created.protected IConfigurationElement
protected IActionDelegate
Returns the action delegate if created.Returns the menu creator for this action.Returns the action identifier this action overrides.For testing purposes only.protected void
Initialize the action delegate by calling its lifecycle method.protected boolean
Returns true if the declaring plugin has been loaded and there is no need to delay creating the delegate any more.protected void
Refresh the action enablement.void
run()
The default implementation of thisIAction
method does nothing.void
runWithEvent
(Event event) The default implementation of thisIAction
method ignores the event argument, and simply callsrun()
.void
selectionChanged
(ISelection newSelection) Handles selection change.void
TheSelectionChangedEventAction
implementation of thisISelectionChangedListener
method callsselectionChanged(IStructuredSelection)
when the selection is a structured one.void
selectionChanged
(IWorkbenchPart part, ISelection sel) TheSelectionChangedEventAction
implementation of thisISelectionListener
method callsselectionChanged(IStructuredSelection)
when the selection is a structured one.protected IActionDelegate
validateDelegate
(Object obj) Validates the object is a delegate of the expected type.Methods inherited from class org.eclipse.jface.action.Action
convertAccelerator, convertAccelerator, findKeyCode, findKeyString, findModifier, findModifierString, getAccelerator, getActionDefinitionId, getDescription, getDisabledImageDescriptor, getHelpListener, getHoverImageDescriptor, getId, getImageDescriptor, getStyle, getText, getToolTipText, isChecked, isEnabled, isHandled, notifyResult, removeAcceleratorText, removeMnemonics, 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
-
Constructor Details
-
PluginAction
PluginAction constructor.- Parameters:
actionElement
- the elementid
- the identifierstyle
- the style bits
-
-
Method Details
-
createDelegate
protected final void createDelegate()Creates the delegate and refreshes its enablement. -
validateDelegate
Validates the object is a delegate of the expected type. Subclasses can override to check for specific delegate types.Note: Calls to the object are not allowed during this method.
- Parameters:
obj
- a possible action delegate implementation- Returns:
- the
IActionDelegate
implementation for the object - Throws:
WorkbenchException
- if not of the expected delegate type
-
initDelegate
protected void initDelegate()Initialize the action delegate by calling its lifecycle method. Subclasses may override but must call this implementation first. -
getDelegate
Returns the action delegate if created. Can benull
if the delegate is not created yet or if previous delegate creation failed. -
isOkToCreateDelegate
protected boolean isOkToCreateDelegate()Returns true if the declaring plugin has been loaded and there is no need to delay creating the delegate any more. -
refreshEnablement
protected void refreshEnablement()Refresh the action enablement. -
run
public void run()Description copied from class:Action
The default implementation of thisIAction
method does nothing. Subclasses should override this method if they do not need information from the triggering event, or overriderunWithEvent(Event)
if they do. -
runWithEvent
Description copied from class:Action
The default implementation of thisIAction
method ignores the event argument, and simply callsrun()
. Subclasses should override this method if they need information from the triggering event, or overriderun()
if not.- Specified by:
runWithEvent
in interfaceIAction
- Overrides:
runWithEvent
in classAction
- Parameters:
event
- the SWT event which triggered this action being run- See Also:
-
selectionChanged
Handles selection change. If rule-based enabled is defined, it will be first to call it. If the delegate is loaded, it will also be given a chance.- Parameters:
newSelection
- the new selection
-
selectionChanged
TheSelectionChangedEventAction
implementation of thisISelectionChangedListener
method callsselectionChanged(IStructuredSelection)
when the selection is a structured one.- Specified by:
selectionChanged
in interfaceISelectionChangedListener
- Parameters:
event
- event object describing the change
-
selectionChanged
TheSelectionChangedEventAction
implementation of thisISelectionListener
method callsselectionChanged(IStructuredSelection)
when the selection is a structured one. Subclasses may extend this method to react to the change.- Specified by:
selectionChanged
in interfaceISelectionListener
- Parameters:
part
- the workbench part containing the selectionsel
- the current selection. This may benull
ifINullSelectionListener
is implemented.- See Also:
-
getSelection
For testing purposes only.- Returns:
- the selection
- Since:
- 3.1
-
getOverrideActionId
Returns the action identifier this action overrides. Default implementation returnsnull
.- Returns:
- the action identifier to override or
null
-
getConfigElement
- Returns:
- the IConfigurationElement used to create this PluginAction.
- Since:
- 3.0
-
getLocalId
- Specified by:
getLocalId
in interfaceIPluginContribution
- Returns:
- the local id of the contribution. Must not be
null
. This should correspond to the extension-specific identifier for a given contribution.
-
getPluginId
- Specified by:
getPluginId
in interfaceIPluginContribution
- Returns:
- the id of the originating plugin. Can be
null
if this contribution did not originate from a plugin.
-
disposeDelegate
public void disposeDelegate()Disposes the delegate, if created.- Since:
- 3.1
-
dispose
public void dispose()Disposes this plugin action.- Since:
- 3.1
-
getMenuCreator
Description copied from interface:IAction
Returns the menu creator for this action.- Specified by:
getMenuCreator
in interfaceIAction
- Overrides:
getMenuCreator
in classAction
- Returns:
- the menu creator, or
null
if none
-