Selection Plugin Extension
A selection plugin can be applied to both XML and non-XML documents. The plugin is started by making a selection in the editor, then selecting the corresponding menu item from the Plugins submenu in the contextual menu of Text mode.
This plugin type provides the following API:
- The interface
SelectionPluginExtension
- The context containing the selected text is passed to the extension and the processed result is going to replace the initial selection. Theprocess(GeneralPluginContext)
method must return aSelectionPluginResult
object that contains the result of the processing. TheString
value returned by theSelectionPluginResult
object can include editor variables such as ${caret} and ${selection}. - The
SelectionPluginContext
object represents the context. It provides four methods:getSelection()
- Returns aString
that is the current selection of text.getFrame()
- Returns aFrame
that is the editing frame.getPluginWorkspace()
- Returns access to the workspace of Oxygen XML Developer plugin.getDocumentURL()
- Returns the URL of the current edited document.
Example - Uppercase Plugin
The following plugin is called UppercasePlugin
and is an example of a
Selection
plugin.. It is used in Oxygen XML Developer plugin for capitalizing the characters in the
current selection. This example consists of two Java classes and the plugin descriptor:
UppercasePlugin.java
:package ro.sync.sample.plugin.uppercase; import ro.sync.exml.plugin.Plugin; import ro.sync.exml.plugin.PluginDescriptor; public class UppercasePlugin extends Plugin { /** * Plugin instance. */ private static UppercasePlugin instance = null; /** * UppercasePlugin constructor. * * @param descriptor Plugin descriptor object. */ public UppercasePlugin(PluginDescriptor descriptor) { super(descriptor); if (instance != null) { throw new IllegalStateException("Already instantiated !"); } instance = this; } /** * Get the plugin instance. * * @return the shared plugin instance. */ public static UppercasePlugin getInstance() { return instance; } }
UppercasePluginExtension.java
:package ro.sync.sample.plugin.uppercase; import ro.sync.exml.plugin.selection.SelectionPluginContext; import ro.sync.exml.plugin.selection.SelectionPluginExtension; import ro.sync.exml.plugin.selection.SelectionPluginResult; import ro.sync.exml.plugin.selection.SelectionPluginResultImpl; public class UppercasePluginExtension implements SelectionPluginExtension { /** * Convert the text to uppercase. * *@param context Selection context. *@return Uppercase plugin result. */ public SelectionPluginResult process(SelectionPluginContext context) { return new SelectionPluginResultImpl( context.getSelection().toUpperCase()); } }
plugin.xml
:<!DOCTYPE plugin SYSTEM "../plugin.dtd"> <plugin name="UpperCase" description="Convert the selection to uppercase" version="1.0.0" vendor="SyncRO" class="ro.sync.sample.plugin.uppercase.UppercasePlugin"> <runtime> <library name="lib/uppercase.jar"/> </runtime> <extension type="selectionProcessor" class="ro.sync.sample.plugin.uppercase.UppercasePluginExtension"/> </plugin>