Example - A Selection Plugin

The following plugin is called UppercasePlugin and is an example of selection plugin.. It is used in Oxygen XML Editor 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>