Friday, November 22, 2013

The Oxygen SDK (Part 1: Plugins)

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr
During the last years we added a lot of API and extension points to Oxygen in order to allow for different customizations to the application.

But our documentation is sometimes lacking. We mostly rely on Javadoc documentation and on Java samples.

Here's some feedback we got at the last Oxygen Users Meetup in Munich this year:
Too less information about frameworks, plugins, everything is spread over certain documents, webinars, etc . Please centralize these information in one form.
I will try to centralize these resources and add some useful links for people who want to start customizing Oxygen.

First the difference between a framework and a plugin:
  • A plugin can be used to customize the behavior of the entire application no matter what XML document is currently being edited.
  • A framework configuration provides validation, content completion and editing support for a specific XML vocabulary.

 

Plugins:

A plugin is a folder containing a descriptor plugin.xml file and various other JAR libraries and resources.

http://www.oxygenxml.com/doc/ug-oxygen/index.html#topics/preferences-plugins.html

Only the standalone version of Oxygen supports plugins.
The Eclipse Plugin version of Oxygen is itself a plugin and can be customized by adding a plugin in the Eclipse workbench which depends on the Oxygen Eclipse plugin.
Despite of this, most of the API is common.

The plugin can be deployed either by copying it to the plugins folder of an Oxygen installation:

http://www.oxygenxml.com/doc/ug-oxygen/tasks/howto-install-plugin.html

 or by deploying it as an add-on:

http://www.oxygenxml.com/doc/ug-oxygen/index.html#tasks/deploying-addons.html

The Oxygen Plugins SDK:

http://www.oxygenxml.com/oxygen_sdk.html#Developer_Plugins

contains Java sources and Javadoc for all the API accessible from a plugin.

The Plugins SDK also contains sample plugins and their Java code. This Java code should be very helpful to get you started and to show how various API can be used.

Although there are many types of plugins:

http://www.oxygenxml.com/doc/ug-oxygen/index.html#topics/pluginTypes.html

the most useful plugin extension type is the "Workspace Access" extension type:

http://www.oxygenxml.com/doc/ug-oxygen/index.html#concepts/workspace-access-plugin.html

This kind of plugin allows you to use the API and add or remove toolbar and main menu buttons, add custom views and toolbars. It also allows you to access and control/make changes to the XML documents opened in the workbench.

As an example, all full-featured integrations which have been created to connect Oxygen with a specific CMS or remote repository use a combination of "Workspace Access" and "Custom Protocol" plugin:

http://www.oxygenxml.com/doc/ug-oxygen/index.html#topics/howto-cms-plugin.html

You can create automated tests for your plugins:

http://www.oxygenxml.com/doc/ug-oxygen/index.html#topics/automated-tests.html

and even debug their functionality:

http://www.oxygenxml.com/doc/ug-oxygen/index.html?q=/doc/ug-oxygen/topics/debug-plugin.html

3 comments:

  1. Anonymous7:36 PM

    Hello,

    Thanks for this piece. Is Part 2 forthcoming? It would be much appreciated!

    Thank you.

    ReplyDelete
    Replies
    1. I will try to make up for this delay and come up with a blog post in a couple of days.

      Delete
  2. Second part of the blog is posted here:

    http://blog.oxygenxml.com/2014/08/the-oxygen-sdk-part-2-frameworks.html

    ReplyDelete