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

Constructors
Constructor and Description
`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

Methods
`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