Module jEdit

Class JEditActionSet<E extends JEditAbstractEditAction>

java.lang.Object
org.gjt.sp.jedit.JEditActionSet<E>
All Implemented Interfaces:
InputHandlerProvider
Direct Known Subclasses:
ActionSet, StandaloneTextArea.StandaloneActionSet

public abstract class JEditActionSet<E extends JEditAbstractEditAction> extends Object implements InputHandlerProvider
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 initKeyBindings() for new action sets. Don't forget to call jEdit.removeActionSet(ActionSet) before your plugin is unloaded, too.
Since:
jEdit 4.3pre13
Version:
$Id: ActionSet.java 9529 2007-05-12 15:06:52Z ezust $
Author:
Slava Pestov, John Gellene (API documentation)
See Also:
  • Field Details

  • Constructor Details

    • JEditActionSet

      protected JEditActionSet()
      Creates a new action set.
      Since:
      jEdit 4.3pre13
    • JEditActionSet

      protected JEditActionSet(String[] cachedActionNames, URL uri)
      Creates a new action set.
      Parameters:
      cachedActionNames - The list of cached action names
      uri - The actions.xml URI
      Since:
      jEdit 4.3pre13
  • Method Details

    • addAction

      public void addAction(E action)
      Adds an action to the action set.
      Parameters:
      action - The action
      Since:
      jEdit 4.0pre1
    • removeAction

      public void removeAction(String name)
      Removes an action from the action set.
      Parameters:
      name - The action name
      Since:
      jEdit 4.0pre1
    • removeAllActions

      public void removeAllActions()
      Removes all actions from the action set.
      Since:
      jEdit 4.0pre1
    • getAction

      public E getAction(String name)
      Parameters:
      name - The action name
      Returns:
      an action with the specified name.

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

      Since:
      jEdit 4.0pre1
    • getActionCount

      public int getActionCount()
      Returns:
      the number of actions in the set.
      Since:
      jEdit 4.0pre1
    • getActionNames

      public String[] getActionNames()
      Returns:
      an array of all action names in this action set.
      Since:
      jEdit 4.2pre1
    • getCacheableActionNames

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

      protected abstract E[] getArray(int size)
      Returns an empty array E[]. I know it is bad, if you find a method to instantiate a generic Array, tell me
      Parameters:
      size - the size of the array
      Returns:
      the empty array
    • getActions

      public E[] getActions()
      Returns:
      an array of all actions in this action set.

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

      Since:
      jEdit 4.0pre1
    • contains

      public boolean contains(String action)
      Parameters:
      action - The action
      Returns:
      if this action set contains the specified action.
      Since:
      jEdit 4.2pre1
    • size

      public int size()
      Returns:
      the number of actions in this action set.
      Since:
      jEdit 4.2pre2
    • load

      public void load()
      Forces the action set to be loaded. Plugins and macros should not call this method.
      Since:
      jEdit 4.2pre1
    • createBeanShellAction

      protected abstract JEditAbstractEditAction createBeanShellAction(String actionName, String code, String selected, boolean noRepeat, boolean noRecord, boolean noRememberLast)
      This method should be implemented to return an action that will execute the given code
      Parameters:
      actionName - the action name
      code - the code
      selected - selected
      noRepeat - noRepeat
      noRecord - noRecord
      noRememberLast - noRememberLast
      Returns:
      an action
      Since:
      4.3pre13
    • initKeyBindings

      public void initKeyBindings()
      Initializes the action set's key bindings. jEdit calls this method for all registered action sets when the user changes key bindings in the Global Options dialog box.

      Note if your plugin adds a custom action set to jEdit's collection, it must also call this method on the action set after adding it.

      Since:
      jEdit 4.2pre1
    • getProperty

      protected abstract String getProperty(String name)
      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.
      Parameters:
      name - the property name
      Returns:
      the property value
      Since:
      4.3pre13