Module jEdit

Class ActionSet

All Implemented Interfaces:
Comparable, InputHandlerProvider

public class ActionSet extends JEditActionSet<EditAction> implements 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
Version:
$Id: ActionSet.java 25221 2020-04-12 16:00:17Z kpouer $
Author:
Slava Pestov, John Gellene (API documentation)
See Also:
  • Constructor Details

    • ActionSet

      public ActionSet()
      Creates a new action set.
      Since:
      jEdit 4.0pre1
    • ActionSet

      public ActionSet(PluginJAR plugin, String[] cachedActionNames, boolean[] cachedActionToggleFlags, 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(@Nonnull String label)
      Creates a new action set.
      Parameters:
      label - The label, shown in the shortcuts option pane
      Since:
      jEdit 4.0pre1
  • Method Details

    • 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>
      Returns:
      an array of all actions in this action set.

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

      Since:
      jEdit 4.0pre1
    • getLabel

      public String getLabel()
      Returns:
      the action source label.
      Since:
      jEdit 4.0pre1
    • setLabel

      public void setLabel(@Nonnull String label)
      Sets the action source label.
      Parameters:
      label - The label
      Since:
      jEdit 4.0pre1
    • getPluginJAR

      public PluginJAR getPluginJAR()
      Returns:
      the plugin this action set was loaded from, or null.
      Since:
      jEdit 4.2pre13
    • getCacheableActionNames

      public String[] getCacheableActionNames()
      Returns an array of all action names in this action set that should be cached; namely, BeanShellActions.
      Overrides:
      getCacheableActionNames in class JEditActionSet<EditAction>
      Returns:
      an array of all action names in this action set that should be cached; namely, BeanShellActions.
      Since:
      jEdit 4.2pre1
    • getProperty

      public String getProperty(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(Object o)
      Specified by:
      compareTo in interface Comparable
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • createBeanShellAction

      protected EditAction createBeanShellAction(String actionName, String code, String selected, boolean noRepeat, boolean noRecord, boolean noRememberLast)
      Creates a BeanShellAction.
      Specified by:
      createBeanShellAction in class JEditActionSet<EditAction>
      Parameters:
      actionName - the action name
      code - the code
      selected - selected
      noRepeat - noRepeat
      noRecord - noRecord
      noRememberLast - noRememberLast
      Returns:
      an action
      Since:
      4.3pre13