Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java')
-rw-r--r--bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java608
1 files changed, 296 insertions, 312 deletions
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java
index 429d0c0a282..5e9cb6c3241 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ActionDescriptor.java
@@ -27,359 +27,343 @@ import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
import org.eclipse.ui.plugin.AbstractUIPlugin;
/**
- * When 'action' tag is found in the registry, an object of this
- * class is created. It creates the appropriate action object
- * and captures information that is later used to add this action
- * object into menu/tool bar. This class is reused for
- * global (workbench) menu/tool bar, popup menu actions,
- * as well as view's pulldown and local tool bar.
+ * When 'action' tag is found in the registry, an object of this class is
+ * created. It creates the appropriate action object and captures information
+ * that is later used to add this action object into menu/tool bar. This class
+ * is reused for global (workbench) menu/tool bar, popup menu actions, as well
+ * as view's pulldown and local tool bar.
*/
public class ActionDescriptor implements IPluginContribution {
- private PluginAction action;
+ private PluginAction action;
- private String toolbarId;
+ private String toolbarId;
- private String menuPath;
+ private String menuPath;
- private String id;
+ private String id;
- private String pluginId;
+ private String pluginId;
- private String menuGroup;
+ private String menuGroup;
- private String toolbarGroupId;
+ private String toolbarGroupId;
private int mode = 0;
- /**
- * Popup constant. Value <code>0x1</code>.
- */
- public static final int T_POPUP = 0x1;
-
- /**
- * View constant. Value <code>0x2</code>.
- */
- public static final int T_VIEW = 0x2;
-
- /**
- * Workbench constant. Value <code>0x3</code>.
- */
- public static final int T_WORKBENCH = 0x3;
-
- /**
- * Editor constant. Value <code>0x4</code>.
- */
- public static final int T_EDITOR = 0x4;
-
- /**
- * Workbench pulldown constant. Value <code>0x5</code>.
- */
- public static final int T_WORKBENCH_PULLDOWN = 0x5;
-
- /**
- * Push style constant. Value <code>push</code>.
- */
- public static final String STYLE_PUSH = "push"; //$NON-NLS-1$
-
- /**
- * Radio style constant. Value <code>radio</code>.
- */
- public static final String STYLE_RADIO = "radio"; //$NON-NLS-1$
-
- /***
- * Toggle style constant. Value <code>toggle</code>.
- */
- public static final String STYLE_TOGGLE = "toggle"; //$NON-NLS-1$
-
- /**
- * Pulldown style constant. Value <code>pulldown</code>.
- */
- public static final String STYLE_PULLDOWN = "pulldown"; //$NON-NLS-1$
-
- /**
- * Creates a new descriptor with the specified target.
- *
- * @param actionElement the configuration element
- * @param targetType the type of action
- */
- public ActionDescriptor(IConfigurationElement actionElement, int targetType) {
- this(actionElement, targetType, null);
- }
-
- /**
- * Creates a new descriptor with the target and destination workbench part
- * it will go into.
- *
- * @param actionElement the configuration element
- * @param targetType the type of action
- * @param target the target object
- */
- public ActionDescriptor(IConfigurationElement actionElement,
- int targetType, Object target) {
- // Load attributes.
- id = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
+ /**
+ * Popup constant. Value <code>0x1</code>.
+ */
+ public static final int T_POPUP = 0x1;
+
+ /**
+ * View constant. Value <code>0x2</code>.
+ */
+ public static final int T_VIEW = 0x2;
+
+ /**
+ * Workbench constant. Value <code>0x3</code>.
+ */
+ public static final int T_WORKBENCH = 0x3;
+
+ /**
+ * Editor constant. Value <code>0x4</code>.
+ */
+ public static final int T_EDITOR = 0x4;
+
+ /**
+ * Workbench pulldown constant. Value <code>0x5</code>.
+ */
+ public static final int T_WORKBENCH_PULLDOWN = 0x5;
+
+ /**
+ * Push style constant. Value <code>push</code>.
+ */
+ public static final String STYLE_PUSH = "push"; //$NON-NLS-1$
+
+ /**
+ * Radio style constant. Value <code>radio</code>.
+ */
+ public static final String STYLE_RADIO = "radio"; //$NON-NLS-1$
+
+ /***
+ * Toggle style constant. Value <code>toggle</code>.
+ */
+ public static final String STYLE_TOGGLE = "toggle"; //$NON-NLS-1$
+
+ /**
+ * Pulldown style constant. Value <code>pulldown</code>.
+ */
+ public static final String STYLE_PULLDOWN = "pulldown"; //$NON-NLS-1$
+
+ /**
+ * Creates a new descriptor with the specified target.
+ *
+ * @param actionElement the configuration element
+ * @param targetType the type of action
+ */
+ public ActionDescriptor(IConfigurationElement actionElement, int targetType) {
+ this(actionElement, targetType, null);
+ }
+
+ /**
+ * Creates a new descriptor with the target and destination workbench part it
+ * will go into.
+ *
+ * @param actionElement the configuration element
+ * @param targetType the type of action
+ * @param target the target object
+ */
+ public ActionDescriptor(IConfigurationElement actionElement, int targetType, Object target) {
+ // Load attributes.
+ id = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ID);
pluginId = actionElement.getContributor().getName();
- String label = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
- String tooltip = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_TOOLTIP);
- String helpContextId = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_HELP_CONTEXT_ID);
- String mpath = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_MENUBAR_PATH);
- String tpath = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_TOOLBAR_PATH);
- String style = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_STYLE);
- String icon = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
- String hoverIcon = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_HOVERICON);
- String disabledIcon = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_DISABLEDICON);
- String description = actionElement.getAttribute(IWorkbenchRegistryConstants.TAG_DESCRIPTION);
- String accelerator = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ACCELERATOR);
- if ("FORCE_TEXT".equals(actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_MODE))) { //$NON-NLS-1$
- mode = ActionContributionItem.MODE_FORCE_TEXT;
- }
-
- // Verify input.
- if (label == null) {
- WorkbenchPlugin
- .log("Invalid action declaration (label == null): " + id); //$NON-NLS-1$
- label = WorkbenchMessages.ActionDescriptor_invalidLabel;
- }
-
- // Calculate menu and toolbar paths.
- String mgroup = null;
- String tgroup = null;
- if (mpath != null) {
- int loc = mpath.lastIndexOf('/');
- if (loc != -1) {
- mgroup = mpath.substring(loc + 1);
- mpath = mpath.substring(0, loc);
- } else {
- mgroup = mpath;
- mpath = null;
- }
- }
- if (targetType == T_POPUP && mgroup == null) {
+ String label = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_LABEL);
+ String tooltip = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_TOOLTIP);
+ String helpContextId = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_HELP_CONTEXT_ID);
+ String mpath = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_MENUBAR_PATH);
+ String tpath = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_TOOLBAR_PATH);
+ String style = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_STYLE);
+ String icon = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ICON);
+ String hoverIcon = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_HOVERICON);
+ String disabledIcon = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_DISABLEDICON);
+ String description = actionElement.getAttribute(IWorkbenchRegistryConstants.TAG_DESCRIPTION);
+ String accelerator = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_ACCELERATOR);
+ if ("FORCE_TEXT".equals(actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_MODE))) { //$NON-NLS-1$
+ mode = ActionContributionItem.MODE_FORCE_TEXT;
+ }
+
+ // Verify input.
+ if (label == null) {
+ WorkbenchPlugin.log("Invalid action declaration (label == null): " + id); //$NON-NLS-1$
+ label = WorkbenchMessages.ActionDescriptor_invalidLabel;
+ }
+
+ // Calculate menu and toolbar paths.
+ String mgroup = null;
+ String tgroup = null;
+ if (mpath != null) {
+ int loc = mpath.lastIndexOf('/');
+ if (loc != -1) {
+ mgroup = mpath.substring(loc + 1);
+ mpath = mpath.substring(0, loc);
+ } else {
+ mgroup = mpath;
+ mpath = null;
+ }
+ }
+ if (targetType == T_POPUP && mgroup == null) {
mgroup = IWorkbenchActionConstants.MB_ADDITIONS;
}
- if (tpath != null) {
- int loc = tpath.lastIndexOf('/');
- if (loc != -1) {
- tgroup = tpath.substring(loc + 1);
- tpath = tpath.substring(0, loc);
- } else {
- tgroup = tpath;
- tpath = null;
- }
- }
- menuPath = mpath;
- menuGroup = mgroup;
- if ((tpath != null) && tpath.equals("Normal")) { //$NON-NLS-1$
+ if (tpath != null) {
+ int loc = tpath.lastIndexOf('/');
+ if (loc != -1) {
+ tgroup = tpath.substring(loc + 1);
+ tpath = tpath.substring(0, loc);
+ } else {
+ tgroup = tpath;
+ tpath = null;
+ }
+ }
+ menuPath = mpath;
+ menuGroup = mgroup;
+ if ((tpath != null) && tpath.equals("Normal")) { //$NON-NLS-1$
tpath = ""; //$NON-NLS-1$
}
- toolbarId = tpath;
- toolbarGroupId = tgroup;
+ toolbarId = tpath;
+ toolbarGroupId = tgroup;
- // Create action.
- action = createAction(targetType, actionElement, target, style);
- if (action.getText() == null) {
+ // Create action.
+ action = createAction(targetType, actionElement, target, style);
+ if (action.getText() == null) {
action.setText(label);
}
- if (action.getToolTipText() == null && tooltip != null) {
+ if (action.getToolTipText() == null && tooltip != null) {
action.setToolTipText(tooltip);
}
- if (helpContextId != null) {
- String fullID = helpContextId;
- if (helpContextId.indexOf('.') == -1) {
+ if (helpContextId != null) {
+ String fullID = helpContextId;
+ if (helpContextId.indexOf('.') == -1) {
// For backward compatibility we auto qualify the id if it is not
- // qualified)
- fullID = actionElement.getContributor().getName()
- + "." + helpContextId;//$NON-NLS-1$
+ // qualified)
+ fullID = actionElement.getContributor().getName() + "." + helpContextId;//$NON-NLS-1$
}
- PlatformUI.getWorkbench().getHelpSystem().setHelp(action, fullID);
- }
- if (description != null) {
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(action, fullID);
+ }
+ if (description != null) {
action.setDescription(description);
}
- if (style != null) {
- // Since 2.1, the "state" and "pulldown" attributes means something different
- // when the new "style" attribute has been set. See doc for more info.
- String state = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_STATE);
- if (state != null) {
- if (style.equals(STYLE_RADIO) || style.equals(STYLE_TOGGLE)) {
+ if (style != null) {
+ // Since 2.1, the "state" and "pulldown" attributes means something different
+ // when the new "style" attribute has been set. See doc for more info.
+ String state = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_STATE);
+ if (state != null) {
+ if (style.equals(STYLE_RADIO) || style.equals(STYLE_TOGGLE)) {
action.setChecked(state.equals("true"));//$NON-NLS-1$
}
- }
- } else {
- // Keep for backward compatibility for actions not using the
- // new style attribute.
- String state = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_STATE);
- if (state != null) {
- action.setChecked(state.equals("true"));//$NON-NLS-1$
- }
- }
-
- String extendingPluginId = actionElement.getDeclaringExtension()
- .getContributor().getName();
-
- if (icon != null) {
- action.setImageDescriptor(AbstractUIPlugin
- .imageDescriptorFromPlugin(extendingPluginId, icon));
- }
- if (hoverIcon != null) {
- action.setHoverImageDescriptor(AbstractUIPlugin
- .imageDescriptorFromPlugin(extendingPluginId, hoverIcon));
- }
- if (disabledIcon != null) {
- action
- .setDisabledImageDescriptor(AbstractUIPlugin
- .imageDescriptorFromPlugin(extendingPluginId,
- disabledIcon));
- }
-
- if (accelerator != null) {
+ }
+ } else {
+ // Keep for backward compatibility for actions not using the
+ // new style attribute.
+ String state = actionElement.getAttribute(IWorkbenchRegistryConstants.ATT_STATE);
+ if (state != null) {
+ action.setChecked(state.equals("true"));//$NON-NLS-1$
+ }
+ }
+
+ String extendingPluginId = actionElement.getDeclaringExtension().getContributor().getName();
+
+ if (icon != null) {
+ action.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(extendingPluginId, icon));
+ }
+ if (hoverIcon != null) {
+ action.setHoverImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(extendingPluginId, hoverIcon));
+ }
+ if (disabledIcon != null) {
+ action.setDisabledImageDescriptor(
+ AbstractUIPlugin.imageDescriptorFromPlugin(extendingPluginId, disabledIcon));
+ }
+
+ if (accelerator != null) {
processAccelerator(action, accelerator);
}
- }
-
- /**
- * Creates an instance of PluginAction. Depending on the target part,
- * subclasses of this class may be created.
- */
- private PluginAction createAction(int targetType,
- IConfigurationElement actionElement, Object target, String style) {
- int actionStyle = IAction.AS_UNSPECIFIED;
- if (style != null) {
- if (style.equals(STYLE_RADIO)) {
- actionStyle = IAction.AS_RADIO_BUTTON;
- } else if (style.equals(STYLE_TOGGLE)) {
- actionStyle = IAction.AS_CHECK_BOX;
- } else if (style.equals(STYLE_PULLDOWN)) {
- actionStyle = IAction.AS_DROP_DOWN_MENU;
- } else if (style.equals(STYLE_PUSH)) {
- actionStyle = IAction.AS_PUSH_BUTTON;
- }
- }
-
- switch (targetType) {
- case T_VIEW:
- return new ViewPluginAction(actionElement, (IViewPart) target, id,
- actionStyle);
- case T_EDITOR:
- return new EditorPluginAction(actionElement, (IEditorPart) target,
- id, actionStyle);
- case T_WORKBENCH:
- return new WWinPluginAction(actionElement,
- (IWorkbenchWindow) target, id, actionStyle);
- case T_WORKBENCH_PULLDOWN:
- actionStyle = IAction.AS_DROP_DOWN_MENU;
- return new WWinPluginPulldown(actionElement,
- (IWorkbenchWindow) target, id, actionStyle);
- case T_POPUP:
- return new ObjectPluginAction(actionElement, id, actionStyle);
- default:
- WorkbenchPlugin.log("Unknown Action Type: " + targetType);//$NON-NLS-1$
- return null;
- }
- }
-
- /**
- * Returns the action object held in this descriptor.
- *
- * @return the action
- */
- public PluginAction getAction() {
- return action;
- }
-
- /**
- * Returns action's id as defined in the registry.
- *
- * @return the id
- */
- public String getId() {
- return id;
- }
-
- /**
- * Returns named slot (group) in the menu where this action
- * should be added.
- *
- * @return the menu group
- */
- public String getMenuGroup() {
- return menuGroup;
- }
-
- /**
- * Returns menu path where this action should be added. If null,
- * the action will not be added into the menu.
- *
- * @return the menubar path
- */
- public String getMenuPath() {
- return menuPath;
- }
-
- /**
- * Returns the named slot (group) in the tool bar where this
- * action should be added.
- *
- * @return the toolbar group id
- */
- public String getToolbarGroupId() {
- return toolbarGroupId;
- }
-
- /**
- * Returns id of the tool bar where this action should be added.
- * If null, action will not be added to the tool bar.
- *
- * @return the toolbar id
- */
- public String getToolbarId() {
- return toolbarId;
- }
-
- /**
- * For debugging only.
- */
- @Override
+ }
+
+ /**
+ * Creates an instance of PluginAction. Depending on the target part, subclasses
+ * of this class may be created.
+ */
+ private PluginAction createAction(int targetType, IConfigurationElement actionElement, Object target,
+ String style) {
+ int actionStyle = IAction.AS_UNSPECIFIED;
+ if (style != null) {
+ if (style.equals(STYLE_RADIO)) {
+ actionStyle = IAction.AS_RADIO_BUTTON;
+ } else if (style.equals(STYLE_TOGGLE)) {
+ actionStyle = IAction.AS_CHECK_BOX;
+ } else if (style.equals(STYLE_PULLDOWN)) {
+ actionStyle = IAction.AS_DROP_DOWN_MENU;
+ } else if (style.equals(STYLE_PUSH)) {
+ actionStyle = IAction.AS_PUSH_BUTTON;
+ }
+ }
+
+ switch (targetType) {
+ case T_VIEW:
+ return new ViewPluginAction(actionElement, (IViewPart) target, id, actionStyle);
+ case T_EDITOR:
+ return new EditorPluginAction(actionElement, (IEditorPart) target, id, actionStyle);
+ case T_WORKBENCH:
+ return new WWinPluginAction(actionElement, (IWorkbenchWindow) target, id, actionStyle);
+ case T_WORKBENCH_PULLDOWN:
+ actionStyle = IAction.AS_DROP_DOWN_MENU;
+ return new WWinPluginPulldown(actionElement, (IWorkbenchWindow) target, id, actionStyle);
+ case T_POPUP:
+ return new ObjectPluginAction(actionElement, id, actionStyle);
+ default:
+ WorkbenchPlugin.log("Unknown Action Type: " + targetType);//$NON-NLS-1$
+ return null;
+ }
+ }
+
+ /**
+ * Returns the action object held in this descriptor.
+ *
+ * @return the action
+ */
+ public PluginAction getAction() {
+ return action;
+ }
+
+ /**
+ * Returns action's id as defined in the registry.
+ *
+ * @return the id
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Returns named slot (group) in the menu where this action should be added.
+ *
+ * @return the menu group
+ */
+ public String getMenuGroup() {
+ return menuGroup;
+ }
+
+ /**
+ * Returns menu path where this action should be added. If null, the action will
+ * not be added into the menu.
+ *
+ * @return the menubar path
+ */
+ public String getMenuPath() {
+ return menuPath;
+ }
+
+ /**
+ * Returns the named slot (group) in the tool bar where this action should be
+ * added.
+ *
+ * @return the toolbar group id
+ */
+ public String getToolbarGroupId() {
+ return toolbarGroupId;
+ }
+
+ /**
+ * Returns id of the tool bar where this action should be added. If null, action
+ * will not be added to the tool bar.
+ *
+ * @return the toolbar id
+ */
+ public String getToolbarId() {
+ return toolbarId;
+ }
+
+ /**
+ * For debugging only.
+ */
+ @Override
public String toString() {
- return "ActionDescriptor(" + id + ")";//$NON-NLS-2$//$NON-NLS-1$
- }
+ return "ActionDescriptor(" + id + ")";//$NON-NLS-2$//$NON-NLS-1$
+ }
- /**
- * Process the accelerator definition. If it is a number
- * then process the code directly - if not then parse it
- * and create the code
- */
- private void processAccelerator(IAction action, String acceleratorText) {
+ /**
+ * Process the accelerator definition. If it is a number then process the code
+ * directly - if not then parse it and create the code
+ */
+ private void processAccelerator(IAction action, String acceleratorText) {
- if (acceleratorText.length() == 0) {
+ if (acceleratorText.length() == 0) {
return;
}
- //Is it a numeric definition?
- if (Character.isDigit(acceleratorText.charAt(0))) {
- try {
- action.setAccelerator(Integer.valueOf(acceleratorText)
- .intValue());
- } catch (NumberFormatException e) {
- WorkbenchPlugin.log("Invalid accelerator declaration for action: " + id, e); //$NON-NLS-1$
- }
- } else {
+ // Is it a numeric definition?
+ if (Character.isDigit(acceleratorText.charAt(0))) {
+ try {
+ action.setAccelerator(Integer.valueOf(acceleratorText).intValue());
+ } catch (NumberFormatException e) {
+ WorkbenchPlugin.log("Invalid accelerator declaration for action: " + id, e); //$NON-NLS-1$
+ }
+ } else {
action.setAccelerator(Action.convertAccelerator(acceleratorText));
}
- }
+ }
- @Override
+ @Override
public String getLocalId() {
- return getId();
- }
+ return getId();
+ }
- @Override
+ @Override
public String getPluginId() {
- return pluginId;
- }
+ return pluginId;
+ }
- public int getMode() {
- return mode;
- }
+ public int getMode() {
+ return mode;
+ }
}

Back to the top