diff org.eclipse.jface/src/org/eclipse/jface/action/IAction.d @ 12:bc29606a740c

Added dwt-addons in original directory structure of eclipse.org
author Frank Benoit <benoit@tionex.de>
date Sat, 14 Mar 2009 18:23:29 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.eclipse.jface/src/org/eclipse/jface/action/IAction.d	Sat Mar 14 18:23:29 2009 +0100
@@ -0,0 +1,524 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * Port to the D programming language:
+ *     Frank Benoit <benoit@tionex.de>
+ *******************************************************************************/
+module org.eclipse.jface.action.IAction;
+
+import org.eclipse.jface.action.IMenuCreator;
+
+import org.eclipse.swt.events.HelpListener;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.core.commands.IHandlerAttributes;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.util.IPropertyChangeListener;
+
+import java.lang.all;
+import java.util.Set;
+
+/**
+ * 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
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+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 const int AS_UNSPECIFIED = 0x00;
+
+    /**
+     * Action style constant (value <code>1</code>) indicating action is
+     * a simple push button.
+     */
+    public static const int AS_PUSH_BUTTON = 0x01;
+
+    /**
+     * Action style constant (value <code>2</code>) indicating action is
+     * a check box (or a toggle button).
+     */
+    public static const int AS_CHECK_BOX = 0x02;
+
+    /**
+     * Action style constant (value <code>4</code>) indicating action is
+     * a drop down menu.
+     */
+    public static const int AS_DROP_DOWN_MENU = 0x04;
+
+    /**
+     * Action style constant (value <code>8</code>) indicating action is
+     * a radio button.
+     *
+     * @since 2.1
+     */
+    public static const int AS_RADIO_BUTTON = 0x08;
+
+    /**
+     * Property name of an action's text (value <code>"text"</code>).
+     */
+    public static const String TEXT = "text"; //$NON-NLS-1$
+
+    /**
+     * Property name of an action's enabled state
+     * (value <code>"enabled"</code>).
+     */
+    public static const String ENABLED = "enabled"; //$NON-NLS-1$
+
+    /**
+     * Property name of an action's image (value <code>"image"</code>).
+     */
+    public static const String IMAGE = "image"; //$NON-NLS-1$
+
+    /**
+     * Property name of an action's tooltip text (value <code>"toolTipText"</code>).
+     */
+    public static const 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 const 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 const 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 const 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 const 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 bool 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 bool 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 bool 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(bool 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(bool 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);
+}