On the <oXygen/> website there is a plugin development kit with some sample plugins (source code and compiled code) and the Javadoc API necessary for developing custom plugins. On the Plugins page there is a developer manual with instructions for developing custom plugins.
The minimal implementation of a plugin must provide two classes: one that extends the
Plugin class and another that implements the plugin extension and a
plugin descriptor file. There are five available extensions
SelectionPluginExtension
,
DocumentPluginExtension
,
GeneralPluginExtension
,
URLStreamHandlerPluginExtension
and
StartupPluginExtension
.
A PluginDescriptor
object is passed to the plugin class on
constructor containing information about the plugin
basedir
- File - the base directory of
the plugin.
description
- String - the description
of the plugin.
name
- String - the name of the
plugin.
vendor
- String - the vendor name of
the plugin.
version
- String - the plugin
version.
The PluginDescriptor
fields are filled with
information from the plugin descriptor file.
The plugin descriptor defines how the plugin will be integrated in <oXygen/> and what
libraries should be loaded. The structure of the plugin descriptor file is fully described
in a DTD grammar located in
OXYGEN_INSTALLATION_FOLDER/plugins/plugin.dtd
.
Here is a sample plugin descriptor used by the Capitalize Lines
sample
plugin:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plugin SYSTEM "../plugin.dtd"> <plugin name="Capitalize Lines" description="Capitalize the first character on each line" version="1.0.0" vendor="SyncRO" class="ro.sync.sample.plugin.caplines.CapLinesPlugin"> <runtime> <library name="lib/caplines.jar"/> </runtime> <extension type="selectionProcessor" class="ro.sync.sample.plugin.caplines.CapLinesPluginExtension" keyboardShortcut="ctrl shift EQUALS"/> </plugin>
If your plugin is of type selectionProcessor
,
documentProcessor
or generalExtension
and thus
contributes an action either to the contextual menu or to the main menu then you can assign
a keyboard shortcut for it. You can use the keyboardShortcut
attribute
for each extension
to specify the desired shortcut.
![]() | Tip |
---|---|
To compose string representations of the desired shortcut keys you can go to the <oXygen/> Menu Shortcut Keys preferences page, press on any action, press the desired key sequence and use the representation which appears in the edit dialog. |
GeneralPluginExtension
- this interface is intended for general
purpose plugins - kind of external tools but triggered from the
Plugins main menu. The implementing classes must contain the method
process(GeneralPluginContext
) which should
provide the plugin processing. This method takes as a parameter an
GeneralPluginContext
object.
GeneralPluginContext
- represents the context in which the
general plugin extension does its processing. The only method available is
getFrame()
which returns the currently editing frame
(java.awt.Frame
). It is useful if the plugin wants to display
graphical components as they in general need a parent in order to appear properly on
screen.