| /******************************************************************************* |
| * Copyright (c) 2000, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jface.action; |
| |
| import org.eclipse.core.commands.IHandlerAttributes; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.jface.util.IPropertyChangeListener; |
| import org.eclipse.swt.events.HelpListener; |
| import org.eclipse.swt.widgets.Event; |
| |
| /** |
| * An action represents the non-UI side of a command which can be triggered |
| * by the end user. Actions are typically associated with buttons, menu items, |
| * and items in tool bars. The controls for a command are built by some container, |
| * which furnished the context where these controls appear and configures |
| * them with data from properties declared by the action. When the end user |
| * triggers the command via its control, the action's <code>run</code> |
| * method is invoked to do the real work. |
| * <p> |
| * Actions support a predefined set of properties (and possibly others as well). |
| * Clients of an action may register property change listeners so that they get |
| * notified whenever the value of a property changes. |
| * </p> |
| * <p> |
| * Clients should subclass the abstract base class <code>Action</code> to define |
| * concrete actions rather than implementing <code>IAction</code> from scratch. |
| * </p> |
| * <p> |
| * This interface exists only to define the API for actions. |
| * It is not intended to be implemented by clients. |
| * </p> |
| * |
| * @see Action |
| */ |
| public interface IAction { |
| |
| /** |
| * Action style constant (value <code>0</code>) indicating action style |
| * is not specified yet. By default, the action will assume a push button |
| * style. If <code>setChecked</code> is called, then the style will change |
| * to a check box, or if <code>setMenuCreator</code> is called, then the |
| * style will change to a drop down menu. |
| * |
| * @since 2.1 |
| */ |
| public static int AS_UNSPECIFIED = 0x00; |
| |
| /** |
| * Action style constant (value <code>1</code>) indicating action is |
| * a simple push button. |
| */ |
| public static int AS_PUSH_BUTTON = 0x01; |
| |
| /** |
| * Action style constant (value <code>2</code>) indicating action is |
| * a check box (or a toggle button). |
| */ |
| public static int AS_CHECK_BOX = 0x02; |
| |
| /** |
| * Action style constant (value <code>4</code>) indicating action is |
| * a drop down menu. |
| */ |
| public static int AS_DROP_DOWN_MENU = 0x04; |
| |
| /** |
| * Action style constant (value <code>8</code>) indicating action is |
| * a radio button. |
| * |
| * @since 2.1 |
| */ |
| public static int AS_RADIO_BUTTON = 0x08; |
| |
| /** |
| * Property name of an action's text (value <code>"text"</code>). |
| */ |
| public static final String TEXT = "text"; //$NON-NLS-1$ |
| |
| /** |
| * Property name of an action's enabled state |
| * (value <code>"enabled"</code>). |
| */ |
| public static final String ENABLED = "enabled"; //$NON-NLS-1$ |
| |
| /** |
| * Property name of an action's image (value <code>"image"</code>). |
| */ |
| public static final String IMAGE = "image"; //$NON-NLS-1$ |
| |
| /** |
| * Property name of an action's tooltip text (value <code>"toolTipText"</code>). |
| */ |
| public static final String TOOL_TIP_TEXT = "toolTipText"; //$NON-NLS-1$ |
| |
| /** |
| * Property name of an action's description (value <code>"description"</code>). |
| * Typically the description is shown as a (longer) help text in the status line. |
| */ |
| public static final String DESCRIPTION = "description"; //$NON-NLS-1$ |
| |
| /** |
| * Property name of an action's checked status (value |
| * <code>"checked"</code>). Applicable when the style is |
| * <code>AS_CHECK_BOX</code> or <code>AS_RADIO_BUTTON</code>. |
| */ |
| public static final String CHECKED = "checked"; //$NON-NLS-1$ |
| |
| /** |
| * Property name of an action's success/fail result |
| * (value <code>"result"</code>). The values are |
| * <code>Boolean.TRUE</code> if running the action succeeded and |
| * <code>Boolean.FALSE</code> if running the action failed or did not |
| * complete. |
| * <p> |
| * Not all actions report whether they succeed or fail. This property |
| * is provided for use by actions that may be invoked by clients that can |
| * take advantage of this information when present (for example, actions |
| * used in cheat sheets). Clients should always assume that running the |
| * action succeeded in the absence of notification to the contrary. |
| * </p> |
| * |
| * @since 3.0 |
| */ |
| public static final String RESULT = "result"; //$NON-NLS-1$ |
| |
| /** |
| * Property name of an action's handler. Some actions delegate some or all |
| * of their behaviour or state to another object. In this case, if the |
| * object to which behaviour has been delegated changes, then a property |
| * change event should be sent with this name. |
| * |
| * This is used to support backward compatibility of actions within the |
| * commands framework. |
| * |
| * @since 3.1 |
| */ |
| public static final String HANDLED = IHandlerAttributes.ATTRIBUTE_HANDLED; |
| |
| /** |
| * Adds a property change listener to this action. |
| * Has no effect if an identical listener is already registered. |
| * |
| * @param listener a property change listener |
| */ |
| public void addPropertyChangeListener(IPropertyChangeListener listener); |
| |
| /** |
| * Returns the accelerator keycode for this action. |
| * The result is the bit-wise OR of zero or more modifier masks |
| * and a key, as explained in <code>MenuItem.getAccelerator</code>. |
| * |
| * @return the accelerator keycode |
| * @see org.eclipse.swt.widgets.MenuItem#getAccelerator() |
| */ |
| public int getAccelerator(); |
| |
| /** |
| * Returns the action definition id of this action. |
| * |
| * @return the action definition id of this action, or |
| * <code>null</code> if none |
| * @since 2.0 |
| */ |
| public String getActionDefinitionId(); |
| |
| /** |
| * Returns the action's description if it has one. |
| * Otherwise it returns <code>getToolTipText()</code>. |
| * |
| * @return a description for the action; may be <code>null</code> |
| */ |
| public String getDescription(); |
| |
| /** |
| * Returns the disabled image for this action as an image descriptor. |
| * <p> |
| * This method is associated with the <code>IMAGE</code> property; |
| * property change events are reported when its value changes. |
| * </p> |
| * |
| * @return the image, or <code>null</code> if this action has no image |
| * @see #IMAGE |
| */ |
| public ImageDescriptor getDisabledImageDescriptor(); |
| |
| /** |
| * Returns a help listener for this action. |
| * |
| * @return a help listener for this action |
| */ |
| public HelpListener getHelpListener(); |
| |
| /** |
| * Returns the hover image for this action as an image descriptor. |
| * <p> |
| * Hover images will be used on platforms that support changing the image |
| * when the user hovers over the item. This method is associated with |
| * the <code>IMAGE</code> property; |
| * property change events are reported when its value changes. |
| * </p> |
| * |
| * @return the image, or <code>null</code> if this action has no image |
| * @see #IMAGE |
| */ |
| public ImageDescriptor getHoverImageDescriptor(); |
| |
| /** |
| * Returns a unique identifier for this action, or <code>null</code> if it has |
| * none. |
| * |
| * @return the action id, or <code>null</code> if none |
| */ |
| public String getId(); |
| |
| /** |
| * Returns the image for this action as an image descriptor. |
| * <p> |
| * This method is associated with the <code>IMAGE</code> property; |
| * property change events are reported when its value changes. |
| * </p> |
| * |
| * @return the image, or <code>null</code> if this action has no image |
| * @see #IMAGE |
| */ |
| public ImageDescriptor getImageDescriptor(); |
| |
| /** |
| * Returns the menu creator for this action. |
| * |
| * @return the menu creator, or <code>null</code> if none |
| */ |
| public IMenuCreator getMenuCreator(); |
| |
| /** |
| * Return this action's style. |
| * |
| * @return one of <code>AS_PUSH_BUTTON</code>, <code>AS_CHECK_BOX</code>, |
| * <code>AS_RADIO_BUTTON</code> and <code>AS_DROP_DOWN_MENU</code>. |
| */ |
| public int getStyle(); |
| |
| /** |
| * Returns the text for this action. |
| * <p> |
| * This method is associated with the <code>TEXT</code> property; |
| * property change events are reported when its value changes. |
| * </p> |
| * |
| * @return the text, or <code>null</code> if none |
| * @see #TEXT |
| */ |
| public String getText(); |
| |
| /** |
| * Returns the tool tip text for this action. |
| * <p> |
| * This method is associated with the <code>TOOL_TIP_TEXT</code> property; |
| * property change events are reported when its value changes. |
| * </p> |
| * |
| * @return the tool tip text, or <code>null</code> if none |
| * @see #TOOL_TIP_TEXT |
| */ |
| public String getToolTipText(); |
| |
| /** |
| * Returns the checked status of this action. Applicable only if the style is |
| * <code>AS_CHECK_BOX</code> or <code>AS_RADIO_BUTTON</code>. |
| * <p> |
| * This method is associated with the <code>CHECKED</code> property; |
| * property change events are reported when its value changes. |
| * </p> |
| * |
| * @return the checked status |
| * @see #CHECKED |
| */ |
| public boolean isChecked(); |
| |
| /** |
| * Returns whether this action is enabled. |
| * <p> |
| * This method is associated with the <code>ENABLED</code> property; |
| * property change events are reported when its value changes. |
| * </p> |
| * |
| * @return <code>true</code> if enabled, and |
| * <code>false</code> if disabled |
| * @see #ENABLED |
| */ |
| public boolean isEnabled(); |
| |
| /** |
| * Returns whether this action is handled. In the default case, this is |
| * always <code>true</code>. However, if the action delegates some of its |
| * behaviour to some other object, then this method should answer whether |
| * such an object is currently available. |
| * |
| * @return <code>true</code> if all of the action's behaviour is |
| * available; <code>false</code> otherwise. |
| * @since 3.1 |
| */ |
| public boolean isHandled(); |
| |
| /** |
| * Removes the given listener from this action. |
| * Has no effect if an identical listener is not registered. |
| * |
| * @param listener a property change listener |
| */ |
| public void removePropertyChangeListener(IPropertyChangeListener listener); |
| |
| /** |
| * Runs this action. |
| * Each action implementation must define the steps needed to carry out this action. |
| * The default implementation of this method in <code>Action</code> |
| * does nothing. |
| */ |
| public void run(); |
| |
| /** |
| * Runs this action, passing the triggering SWT event. |
| * As of 2.0, <code>ActionContributionItem</code> calls this method |
| * instead of <code>run()</code>. |
| * The default implementation of this method in <code>Action</code> |
| * simply calls <code>run()</code> for backwards compatibility. |
| * |
| * @param event the SWT event which triggered this action being run |
| * @since 2.0 |
| */ |
| public void runWithEvent(Event event); |
| |
| /** |
| * Sets the action definition id of this action. |
| * |
| * @param id the action definition id |
| * @since 2.0 |
| */ |
| public void setActionDefinitionId(String id); |
| |
| /** |
| * Sets the checked status of this action. Applicable for the styles |
| * <code>AS_CHECK_BOX</code> or <code>AS_RADIO_BUTTON</code>. |
| * <p> |
| * Fires a property change event for the <code>CHECKED</code> property |
| * if the checked status actually changes as a consequence. |
| * </p> |
| * |
| * @param checked the new checked status |
| * @see #CHECKED |
| */ |
| public void setChecked(boolean checked); |
| |
| /** |
| * Sets this action's description. |
| * Typically the description is shown as a (longer) help text in the status line. |
| * <p> |
| * Fires a property change event for the <code>DESCRIPTION</code> property |
| * if the description actually changes as a consequence. |
| * </p> |
| * |
| * @param text the description, or <code>null</code> to clear the description |
| * @see #DESCRIPTION |
| */ |
| public void setDescription(String text); |
| |
| /** |
| * Sets the disabled image for this action, as an image descriptor. |
| * <p> |
| * Disabled images will be used on platforms that support changing the image |
| * when the item is disabled.Fires a property change event for |
| * the <code>IMAGE</code> property |
| * if the image actually changes as a consequence. |
| * </p> |
| * |
| * @param newImage the image, or <code>null</code> if this |
| * action should not have an image |
| * @see #IMAGE |
| */ |
| public void setDisabledImageDescriptor(ImageDescriptor newImage); |
| |
| /** |
| * Sets the enabled state of this action. |
| * <p> |
| * When an action is in the enabled state, the control associated with |
| * it is active; triggering it will end up inkoking this action's |
| * <code>run</code> method. |
| * </p> |
| * <p> |
| * Fires a property change event for the <code>ENABLED</code> property |
| * if the enabled state actually changes as a consequence. |
| * </p> |
| * |
| * @param enabled <code>true</code> to enable, and |
| * <code>false</code> to disable |
| * @see #ENABLED |
| */ |
| public void setEnabled(boolean enabled); |
| |
| /** |
| * Sets a help listener for this action. |
| * |
| * @param listener a help listener for this action |
| */ |
| public void setHelpListener(HelpListener listener); |
| |
| /** |
| * Sets the hover image for this action, as an image descriptor. |
| * <p> |
| * Hover images will be used on platforms that support changing the image |
| * when the user hovers over the item.Fires a property change event for |
| * the <code>IMAGE</code> property |
| * if the image actually changes as a consequence. |
| * </p> |
| * |
| * @param newImage the image, or <code>null</code> if this |
| * action should not have an image |
| * @see #IMAGE |
| */ |
| public void setHoverImageDescriptor(ImageDescriptor newImage); |
| |
| /** |
| * Sets the unique identifier for this action. This is used to identify actions |
| * when added to a contribution manager. |
| * It should be set when the action is created. It should not be modified once |
| * the action is part of an action contribution item. |
| * |
| * @param id the action id |
| * |
| * @see ActionContributionItem |
| * @see IContributionItem#getId |
| */ |
| public void setId(String id); |
| |
| /** |
| * Sets the image for this action, as an image descriptor. |
| * <p> |
| * Fires a property change event for the <code>IMAGE</code> property |
| * if the image actually changes as a consequence. |
| * </p> |
| * |
| * @param newImage the image, or <code>null</code> if this |
| * action should not have an image |
| * @see #IMAGE |
| */ |
| public void setImageDescriptor(ImageDescriptor newImage); |
| |
| /** |
| * Sets the menu creator for this action. Applicable for style |
| * <code>AS_DROP_DOWN_MENU</code>. |
| * |
| * @param creator the menu creator, or <code>null</code> if none |
| */ |
| public void setMenuCreator(IMenuCreator creator); |
| |
| /** |
| * Sets the text for this action. |
| * <p> |
| * An accelerator specification may follow the actual text, separated from it by |
| * an '@' or a '\t' character. An accelerator specification consists of zero or more |
| * modifier tokens followed by a key code token. The tokens are separated by a '+' character. |
| * </p> |
| * <p> |
| * Fires a property change event for the <code>TEXT</code> property |
| * if the text actually changes as a consequence. |
| * </p> |
| * |
| * @param text the text, or <code>null</code> if none |
| * @see #TEXT |
| * @see Action#findModifier |
| * @see Action#findKeyCode |
| */ |
| public void setText(String text); |
| |
| /** |
| * Sets the tool tip text for this action. |
| * <p> |
| * Fires a property change event for the <code>TOOL_TIP_TEXT</code> property |
| * if the tool tip text actually changes as a consequence. |
| * </p> |
| * |
| * @param text the tool tip text, or <code>null</code> if none |
| * @see #TOOL_TIP_TEXT |
| */ |
| public void setToolTipText(String text); |
| |
| /** |
| * <p> |
| * Sets the accelerator keycode that this action maps to. This is a bitwise OR |
| * of zero or more SWT key modifier masks (i.e. SWT.CTRL or SWT.ALT) and a |
| * character code. For example, for Ctrl+Z, use <code>SWT.CTRL | 'Z'</code>. |
| * Use 0 for no accelerator. |
| * </p> |
| * <p> |
| * This method should no longer be used for actions in the Eclipse workbench. |
| * <code>IWorkbenchCommandSupport</code> and |
| * <code>IWorkbenchContextSupport</code> provide all the functionality |
| * required for key bindings. If you set an accelerator using this method, then |
| * it will not work in the workbench if it conflicts any existing key binding, |
| * or if there is a different key binding defined for this action's definition |
| * id. The definition id should be used instead -- referring to the command in |
| * the workbench from which the key binding should be retrieved. |
| * </p> |
| * |
| * @param keycode |
| * the keycode to be accepted. |
| */ |
| public void setAccelerator(int keycode); |
| } |