## org.gjt.sp.jedit
Class ActionSet

    java.lang.Object
      org.gjt.sp.jedit.JEditActionSet<EditAction>
          org.gjt.sp.jedit.ActionSet

All Implemented Interfaces:
  java.lang.Comparable, InputHandlerProvider

    public class ActionSet

extends JEditActionSet<EditAction>
implements java.lang.Comparable

A set of actions, either loaded from an XML file, or constructed at runtime by a plugin.

### Action sets loaded from XML files

Action sets are read from these files inside the plugin JAR:

- `actions.xml` - actions made available for use in jEdit views, including the view's Plugins menu, the tool bar, etc.
- `browser.actions.xml` - actions for the file system browser's Plugins menu.

An action definition file has the following form:

    <?xml version="1.0"?>
    <!DOCTYPE ACTIONS SYSTEM "actions.dtd">
    <ACTIONS>
        <ACTION NAME="some-action">
            <CODE>
                // BeanShell code evaluated when the action is invoked
            </CODE>
        </ACTION>
        <ACTION NAME="some-toggle-action">
            <CODE>
                // BeanShell code evaluated when the action is invoked
            </CODE>
            <IS_SELECTED>
                // BeanShell code that should evaluate to true or false
            </IS_SELECTED>
        </ACTION>
    </ACTIONS>

The following elements are valid:

- `ACTIONS` is the top-level element and refers to the set of actions used by the plugin.
- An `ACTION` contains the data for a particular action. It has three attributes: a required `NAME`; an optional `NO_REPEAT`, which is a flag indicating whether the action should not be repeated with the C+ENTER command; and an optional `NO_RECORD` which is a a flag indicating whether the action should be recorded if it is invoked while the user is recording a macro. The two flag attributes can have two possible values, "TRUE" or "FALSE". In both cases, "FALSE" is the default if the attribute is not specified.
- An `ACTION` can have two child elements within it: a required `CODE` element which specifies the BeanShell code that will be executed when the action is invoked, and an optional `IS_SELECTED` element, used for checkbox menu items. The `IS_SELECTED` element contains BeanShell code that returns a boolean flag that will determine the state of the checkbox.

Each action must have a property `name.label` containing the action's menu item label.

### View actions

Actions defined in `actions.xml` can be added to the view's Plugins menu; see `EditPlugin`. The action code may use any standard predefined BeanShell variable; see `BeanShell`.

### File system browser actions

Actions defined in `actions.xml` can be added to the file system browser's Plugins menu; see `EditPlugin`. The action code may use any standard predefined BeanShell variable, in addition to a variable `browser` which contains a reference to the current `VFSBrowser` instance.

File system browser actions should not define `<IS_SELECTED>` blocks.

### Custom action sets

Call `jEdit.addActionSet(ActionSet)` to add a custom action set to jEdit's action context. You must also call `JEditActionSet.initKeyBindings()` for new action sets. Don't forget to call `jEdit.removeActionSet(ActionSet)` before your plugin is unloaded, too.

Since:
  jEdit 4.0pre1
See Also:
  `jEdit.getActionContext()`, `VFSBrowser.getActionContext()`, `JEditActionContext.getActionNames()`, `ActionContext.getAction(String)`, `jEdit.addActionSet(ActionSet)`, `jEdit.removeActionSet(ActionSet)`, `PluginJAR.getActionSet()`, `BeanShell`, `View`

Field Summary

Fields inherited from class org.gjt.sp.jedit.JEditActionSet
`actions, loaded, placeholder, uri`

Constructor Summary
`ActionSet()` Creates a new action set.
`ActionSet(PluginJAR plugin, java.lang.String[] cachedActionNames, boolean[] cachedActionToggleFlags, java.net.URL uri)` Creates a new action set.
`ActionSet(java.lang.String label)` Creates a new action set.

Method Summary
`void` `addAction(EditAction action)` Adds an action to the action set.
`int` `compareTo(java.lang.Object o)`
`protected EditAction` `createBeanShellAction(java.lang.String actionName, java.lang.String code, java.lang.String selected, boolean noRepeat, boolean noRecord, boolean noRememberLast)` Creates a BeanShellAction.
`EditAction[]` `getActions()` Returns an array of all actions in this action set.
`protected EditAction[]` `getArray(int size)` Returns an empty array E[].
`java.lang.String[]` `getCacheableActionNames()` Returns an array of all action names in this action set that should be cached; namely, `BeanShellAction`s.
`AbstractInputHandler` `getInputHandler()`
`java.lang.String` `getLabel()` Return the action source label.
`PluginJAR` `getPluginJAR()` Return the plugin this action set was loaded from, or null.
`protected java.lang.String` `getProperty(java.lang.String name)` Returns a property for the given name.
`void` `setLabel(java.lang.String label)` Sets the action source label.
`java.lang.String` `toString()`

Methods inherited from class org.gjt.sp.jedit.JEditActionSet
`contains, getAction, getActionCount, getActionNames, initKeyBindings, load, removeAction, removeAllActions, size`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### ActionSet

    public ActionSet()

  Creates a new action set.

  Since:
    jEdit 4.0pre1

### ActionSet

    public ActionSet(PluginJAR plugin,
                     java.lang.String[] cachedActionNames,
                     boolean[] cachedActionToggleFlags,
                     java.net.URL uri)

  Creates a new action set.

  Parameters:
    `plugin` - The plugin
    `cachedActionNames` - The list of cached action names
    `cachedActionToggleFlags` - The list of cached action toggle flags
    `uri` - The actions.xml URI
  Since:
    jEdit 4.2pre2

### ActionSet

    public ActionSet(java.lang.String label)

  Creates a new action set.

  Parameters:
    `label` - The label, shown in the shortcuts option pane
  Since:
    jEdit 4.0pre1

Method Detail

### addAction

    public void addAction(EditAction action)

  Adds an action to the action set. It exists for binary compatibility issues

  Overrides:
    `addAction` in class `JEditActionSet<EditAction>`
  Parameters:
    `action` - The action
  Since:
    jEdit 4.0pre1

### getArray

    protected EditAction[] getArray(int size)

  Description copied from class: `JEditActionSet`
  Returns an empty array E[]. I know it is bad, if you find a method to instantiate a generic Array, tell me

  Specified by:
    `getArray` in class `JEditActionSet<EditAction>`
  Parameters:
    `size` - the size of the array
  Returns:
    the empty array

### getActions

    public EditAction[] getActions()

  Returns an array of all actions in this action set.

  Deferred loading: this will load the action set if necessary.

  Overrides:
    `getActions` in class `JEditActionSet<EditAction>`
  Since:
    jEdit 4.0pre1

### getLabel

    public java.lang.String getLabel()

  Return the action source label.

  Since:
    jEdit 4.0pre1

### setLabel

    public void setLabel(java.lang.String label)

  Sets the action source label.

  Parameters:
    `label` - The label
  Since:
    jEdit 4.0pre1

### getPluginJAR

    public PluginJAR getPluginJAR()

  Return the plugin this action set was loaded from, or null.

  Since:
    jEdit 4.2pre13

### getCacheableActionNames

    public java.lang.String[] getCacheableActionNames()

  Returns an array of all action names in this action set that should be cached; namely, `BeanShellAction`s.

  Overrides:
    `getCacheableActionNames` in class `JEditActionSet<EditAction>`
  Since:
    jEdit 4.2pre1

### getProperty

    protected java.lang.String getProperty(java.lang.String name)

  Description copied from class: `JEditActionSet`
  Returns a property for the given name. In jEdit it will returns a jEdit.getProperty(name), but it can return something else for a standalone textarea.

  Specified by:
    `getProperty` in class `JEditActionSet<EditAction>`
  Parameters:
    `name` - the property name
  Returns:
    the property value

### getInputHandler

    public AbstractInputHandler getInputHandler()

  Specified by:
    `getInputHandler` in interface `InputHandlerProvider`

### compareTo

    public int compareTo(java.lang.Object o)

  Specified by:
    `compareTo` in interface `java.lang.Comparable`

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`

### createBeanShellAction

    protected EditAction createBeanShellAction(java.lang.String actionName,
                                               java.lang.String code,
                                               java.lang.String selected,
                                               boolean noRepeat,
                                               boolean noRecord,
                                               boolean noRememberLast)

  Creates a BeanShellAction.

  Specified by:
    `createBeanShellAction` in class `JEditActionSet<EditAction>`
  Since:
    4.3pre13