org.gjt.sp.jedit
Class JEditActionSet<E extends JEditAbstractEditAction>

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

public abstract class JEditActionSet<E extends JEditAbstractEditAction>
extends java.lang.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: 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: 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
See Also:
jEdit.getActionContext(), VFSBrowser.getActionContext(), JEditActionContext.getActionNames(), ActionContext.getAction(String), jEdit.addActionSet(ActionSet), jEdit.removeActionSet(ActionSet), PluginJAR.getActionSet(), BeanShell, View

Field Summary
protected  java.util.Hashtable<java.lang.String,java.lang.Object> actions
           
protected  boolean loaded
           
protected static java.lang.Object placeholder
           
protected  java.net.URL uri
           
 
Constructor Summary
JEditActionSet()
          Creates a new action set.
JEditActionSet(java.lang.String[] cachedActionNames, java.net.URL uri)
          Creates a new action set.
 
Method Summary
 void addAction(E action)
          Adds an action to the action set.
 boolean contains(java.lang.String action)
          Returns if this action set contains the specified action.
protected abstract  JEditAbstractEditAction createBeanShellAction(java.lang.String actionName, java.lang.String code, java.lang.String selected, boolean noRepeat, boolean noRecord, boolean noRememberLast)
          This method should be implemented to return an action that will execute the given code
 E getAction(java.lang.String name)
          Returns an action with the specified name.
 int getActionCount()
          Returns the number of actions in the set.
 java.lang.String[] getActionNames()
          Returns an array of all action names in this action set.
 E[] getActions()
          Returns an array of all actions in this action set.
protected abstract  E[] 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, BeanShellActions.
protected abstract  java.lang.String getProperty(java.lang.String name)
          Returns a property for the given name.
 void initKeyBindings()
          Initializes the action set's key bindings.
 void load()
          Forces the action set to be loaded.
 void removeAction(java.lang.String name)
          Removes an action from the action set.
 void removeAllActions()
          Removes all actions from the action set.
 int size()
          Returns the number of actions in this action set.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.gjt.sp.jedit.input.InputHandlerProvider
getInputHandler
 

Field Detail

actions

protected java.util.Hashtable<java.lang.String,java.lang.Object> actions

uri

protected java.net.URL uri

loaded

protected boolean loaded

placeholder

protected static final java.lang.Object placeholder
Constructor Detail

JEditActionSet

public JEditActionSet()
Creates a new action set.

Since:
jEdit 4.3pre13

JEditActionSet

public JEditActionSet(java.lang.String[] cachedActionNames,
                      java.net.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 Detail

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(java.lang.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(java.lang.String name)
Returns an action with the specified name.

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

Parameters:
name - The action name
Since:
jEdit 4.0pre1

getActionCount

public int getActionCount()
Returns the number of actions in the set.

Since:
jEdit 4.0pre1

getActionNames

public java.lang.String[] getActionNames()
Returns an array of all action names in this action set.

Since:
jEdit 4.2pre1

getCacheableActionNames

public java.lang.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(java.lang.String action)
Returns if this action set contains the specified action.

Parameters:
action - The 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(java.lang.String actionName,
                                                                 java.lang.String code,
                                                                 java.lang.String selected,
                                                                 boolean noRepeat,
                                                                 boolean noRecord,
                                                                 boolean noRememberLast)
This method should be implemented to return an action that will execute the given code

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 java.lang.String getProperty(java.lang.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