|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.gjt.sp.jedit.EditPlugin
public abstract class EditPlugin
The abstract base class that every plugin must implement.
Alternatively, instead of extending this class, a plugin core class can
extend EBPlugin
to automatically receive EditBus messages.
The following properties are required for jEdit to load the plugin:
plugin.className.activate
- set this to
defer
if your plugin only needs to be loaded when it is first
invoked; set it to startup
if your plugin must be loaded at
startup regardless; set it to a whitespace-separated list of property names
if your plugin should be loaded if at least one of these properties is set.
Note that if this property is not set, the plugin will not work with
jEdit 4.3final.
plugin.className.name
plugin.className.version
plugin.className.jars
- only needed if your plugin
bundles external JAR files. Contains a whitespace-separated list of JAR
file names. Without this property, the plugin manager will leave behind the
external JAR files when removing the plugin.plugin.className.files
- only needed if your plugin
bundles external files like libraries which MUST reside in the local
filesystem. Contains a whitespace-separated list of file names.
Without this property, the plugin manager will leave behind the
external files when removing the plugin.plugin.className.description
- the short description
associated with the plugin. The short description is used by the Plugin
Manager and on the list pages on Plugin Central. plugin.className.author
plugin.className.docs
- the path to plugin
documentation in HTML format. plugin.className.longdescription
- the path to
the long description in XHTML (no fancy stuff here, please - just proper
XHTML subset with the basic tags: html, h1, h2, p, li, ul, ol, a href,b ,i, u, br/ )
The long description is extracted from the plugin at various times, primarily at plugin packaging time to update the data on the plugin detail pages of Plugin Central.
If this property is left out, the default will be to look in a file called <description.html>.
For the previous two properties, if a relative path is supplied, it should be both
Both conditions are easily satisfied if the .props file as well as description.html are both located in the root directory of the plugin, as well as the generated JAR.
Plugin dependencies are also specified using properties.
Each dependency is defined in a property named with
plugin.className.depend.
followed by a number.
Dependencies must be numbered in order, starting from zero.
This determines the order that dependent plugins get loaded and activated,
so order is very important.
The value of a dependency property has one of the following forms:
jdk minimumJavaVersion
jedit minimumjEditVersion
- note that this must be
a version number in the form returned by jEdit.getBuild()
,
not jEdit.getVersion()
. Note that the documentation here describes
the jEdit 4.2 plugin API, so this dependency must be set to at least
04.02.99.00
(4.2final).pluginClassName pluginVersion
- the fully quailified
plugin class name with package must be specified.optional plugin pluginClassName pluginVersion
-
an optional dependency, indicating that the plugin will work without it,
but that the dependency should be loaded before this plugin. In this example, the ProjectViewer plugin is an optional dependency of the Console, beacause the Console only listens to events from the ProjectViewer. It requires Jedit 4.2 final.
plugin.console.ConsolePlugin.depend.0=jedit 04.02.99.00 plugin.console.ConsolePlugin.depend.1=jdk 1.5 plugin.console.ConsolePlugin.depend.2=plugin errorlist.ErrorListPlugin 1.4 plugin.console.ConsolePlugin.depend.3=optional plugin projectviewer.ProjectPlugin 2.1.0.92
To add your plugin to the view's Plugins menu, define one of these two properties:
plugin.className.menu-item
- if this is defined,
the action named by this property is added to the Plugins menu.plugin.className.menu
- if this is defined,
a sub-menu is added to the Plugins menu whose content is the
whitespace-separated list of action names in this property. A separator may
be added to the sub-menu by listing -
in the property.If you want the plugin's menu items to be determined at runtime, define a
property plugin.className.menu.code
to be BeanShell
code that evaluates to an implementation of
DynamicMenuProvider
.
To add your plugin to the file system browser's Plugins menu, define one of these two properties:
plugin.className.browser-menu-item
- if this is
defined, the action named by this property is added to the Plugins
menu.plugin.className.browser-menu
- if this is defined,
a sub-menu is added to the Plugins menu whose content is the
whitespace-separated list of action names in this property. A separator may
be added to the sub-menu by listing -
in the property. In all cases, each action's
menu item label is taken from the actionName.label
property. View actions are defined in an actions.xml
file, file system browser actions are defined in a
browser.actions.xml
file; see ActionSet
.
To add your plugin to the Plugin Options dialog box, define one of these two properties:
plugin.className.option-pane=paneName
- if this is defined,
a single option pane with this name is added to the Plugin Options
menu.plugin.className.option-group=paneName1 [paneName2 paneName3 ...]
- if this is defined,
a branch node is added to the Plugin Options dialog box whose content
is the whitespace-separated list of paneNames in this property.options.paneName.label
- the label to show
for the pane in the dialog box.options.paneName.code
- BeanShell code that
evaluates to an instance of the OptionPane
class.plugin.QuickNotepadPlugin.activate=defer plugin.QuickNotepadPlugin.name=QuickNotepad plugin.QuickNotepadPlugin.author=John Gellene plugin.QuickNotepadPlugin.version=4.2 plugin.QuickNotepadPlugin.docs=QuickNotepad.html plugin.QuickNotepadPlugin.depend.0=jedit 04.02.01.00 plugin.QuickNotepadPlugin.menu=quicknotepad \ - \ quicknotepad.choose-file \ quicknotepad.save-file \ quicknotepad.copy-to-buffer plugin.QuickNotepadPlugin.option-pane=quicknotepad plugin.QuickNotepadPlugin.option-pane=quicknotepad options.quicknotepad.code=new QuickNotepadOptionPane(); options.quicknotepad.label=QuickNotepad options.quicknotepad.file=File: options.quicknotepad.choose-file=Choose options.quicknotepad.choose-file.title=Choose a notepad file options.quicknotepad.choose-font=Font: options.quicknotepad.show-filepath.title=Display notepad file pathNote that action and option pane labels are not shown in the above example.
jEdit.getProperty(String)
,
jEdit.getPlugin(String)
,
jEdit.getPlugins()
,
jEdit.getPluginJAR(String)
,
jEdit.getPluginJARs()
,
jEdit.addPluginJAR(String)
,
jEdit.removePluginJAR(PluginJAR,boolean)
,
ActionSet
,
DockableWindowManager
,
OptionPane
,
PluginJAR
,
ServiceManager
Nested Class Summary | |
---|---|
static class |
EditPlugin.Broken
A placeholder for a plugin that didn't load. |
static class |
EditPlugin.Deferred
A placeholder for a plugin that hasn't been loaded yet. |
Constructor Summary | |
---|---|
EditPlugin()
|
Method Summary | |
---|---|
javax.swing.JMenuItem |
createBrowserMenuItems()
Called by the filesystem browser when constructing its Plugins menu. |
javax.swing.JMenuItem |
createMenuItems()
Called by the view when constructing its Plugins menu. |
void |
createMenuItems(java.util.Vector menuItems)
Deprecated. Instead of overriding this method, define properties as specified in the description of this class. |
void |
createOptionPanes(OptionsDialog optionsDialog)
Deprecated. Instead of overriding this method, define properties as specified in the description of this class. |
java.lang.String |
getClassName()
Returns the plugin's class name. |
static java.lang.String |
getPluginHome(java.lang.Class<? extends EditPlugin> clazz)
Returns the home of your plugin. |
PluginJAR |
getPluginJAR()
Returns the JAR file containing this plugin. |
void |
start()
jEdit calls this method when the plugin is being activated, either during startup or at any other time. |
void |
stop()
jEdit calls this method when the plugin is being unloaded. |
boolean |
usePluginHome()
Returns true if the plugin uses the standard plugin home |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public EditPlugin()
Method Detail |
---|
public void start()
activate
property set to
startup
, in which case it will always be loaded at
startup.activate
property is set to true
,
in which case it will always be loaded at startup.When this method is being called for plugins written for jEdit 4.1 and below, no views or buffers are open. However, this is not the case for plugins using the new API. For example, if your plugin adds tool bars to views, make sure you correctly handle the case where views are already open when the plugin is loaded.
If your plugin must be loaded on startup, take care to have this method return as quickly as possible.
The default implementation of this method does nothing.
public void stop()
If a plugin uses state information or other persistent data that should be stored in a special format, this would be a good place to write the data to storage. If the plugin uses jEdit's properties API to hold settings, no special processing is needed for them on exit, since they will be saved automatically.
With plugins written for jEdit 4.1 and below, this method is only called when the program is exiting. However, this is not the case for plugins using the new API. For example, if your plugin adds tool bars to views, make sure you correctly handle the case where views are still open when the plugin is unloaded.
To avoid memory leaks, this method should ensure that no references to any objects created by this plugin remain in the heap. In the case of actions, dockable windows and services, jEdit ensures this automatically. For other objects, your plugin must clean up maually.
The default implementation of this method does nothing.
public boolean usePluginHome()
getPluginHome(Class)
default is falsepublic static java.lang.String getPluginHome(java.lang.Class<? extends EditPlugin> clazz)
clazz
- the class of the plugin
public java.lang.String getClassName()
EditPlugin
instance, for
example if the plugin is not loaded yet.
public PluginJAR getPluginJAR()
public final javax.swing.JMenuItem createMenuItems()
public final javax.swing.JMenuItem createBrowserMenuItems()
public void createMenuItems(java.util.Vector menuItems)
public void createOptionPanes(OptionsDialog optionsDialog)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |