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
    Modifier and Type | Method and Description
    --- | ---
    `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