Oxygen Add-ons Overview
Oxygen XML Editor can be extended to support new functionalities and vocabularies. These extensions can be either plugins or frameworks: https://www.oxygenxml.com/doc/ug-editor/dev_guide/introduction-dev-guide.html.
This blog post is intended as a small overview of Oxygen XML Editor add-ons, what they are, sample add-ons implemented by third parties, sample add-ons implemented by us and where we want to go from here.
Short History of Frameworks Support in Oxygen XML Editor
- The concept of framework appeared around Oxygen XML Editor
version 9.
A framework (or document type) is a means to group together resources for editing, rendering and validating a specific XML vocabulary: https://www.oxygenxml.com/doc/ug-editor/glossary/framework.html.
- Originally frameworks could be manually installed by being
copied to the
OXYGEN_INSTALL_DIR\frameworks
folder or by setting them up in the Preferences page.
Around version 14 we added support to pack plugins and frameworks as add-ons and thus automate the installation process.
- In version 16 we added support to extend a base framework. Such an extension can be afterwards be bundled as an add-on.
- A sample framework extension add-on which adds custom visual display support can be found here: DITA Topics as Slides.
Short History of Plugin Support in Oxygen XML Editor
- The initial support for plugins was primitive, it allowed adding a contextual menu action in the Text editing mode for manipulating the selected content: https://www.oxygenxml.com/doc/ug-editor/topics/text-editing-mode-plugins.html.
- In version 11.2 the Workspace Access plugin type was added:
https://www.oxygenxml.com/doc/ug-editor/topics/workspace-access-plugin.html.Workspace Access plugins allow you to:
- Add custom toolbar and menu actions.
- Add custom side views.
- Add various behaviors depending on various
events which occur in the application:
- Open, Save, Close documents.
- Switch between document.
- Open or close the application.
- Originally plugins could be manually installed by being copied to the OXYGEN_INSTALL_DIR\plugins. Around version 14 we added support to pack plugins and frameworks as add-ons and thus automate the installation process.
Public Hosted Plugins and Frameworks
There is an older blog post with an up to date list of Public hosted Oxygen Plugin and Framework Projects.
Private Hosted Plugins and Frameworks
Content Management Systems like Astoria, Bluestream, Ixiasoft, SDL have implemented plugins which allow Oxygen XML Editor to connect to their remote storage servers.
There are also lots of privately used frameworks used for editing various varieties of XML documents inside companies.
Why are we (the Oxygen XML Editor team) working on add-ons?
- Open source add-ons are useful as samples for third parties.
- We can work with external collaborators on add-ons.
- Add-ons can be released at a much faster pace.
- Interns who work for us for a couple of months can implement useful functionality without making changes to the application main code base.
- We can work on add-ons before Oxygen XML Editor releases when we enter a code freeze stage.
- We can use our own API and abandon the mindset of regarding the main application as a monolith.
- Sincerely, working on add-ons is more FUN.
Plugins and Frameworks Developed by Oxygen XML Editor
- Sample Javascript-based plugins: https://github.com/oxygenxml/wsaccess-javascript-sample-plugins.
- Apply XSLT filter on open/save.
- Add custom editor variable resolver.
- Impose options.
- Add custom image renderer for Author visual editing mode.
- Add custom validation problems filter.
- Sample Workspace-access plugin Maven based: https://github.com/oxygenxml/sample-plugin-workspace-access
- User interface filter plugin: https://github.com/oxygenxml/oxygen-components-filter-plugin
- Git support add-on: https://github.com/oxygenxml/oxygen-git-plugin
- Batch Resources Convertor add-on: https://github.com/oxygenxml/oxygen-resources-converter
- DocBook Validation add-on: https://github.com/oxygenxml/oxygen-docbook-validate-check-completeness
- Add-on for connecting to any CMIS-enabled storage server (like Alfresco): https://github.com/oxygenxml/oxygen-cmis-plugin.
- DITA-specific add-ons:
- Translation helper: https://github.com/oxygenxml/oxygen-dita-translation-package-builder
- Prolog updater: https://github.com/oxygenxml/oxygen-dita-prolog-updater
- Outgoing References View: https://github.com/oxygenxml/oxygen-dita-outgoing-references-view
- Support for rendering various image formats in the
Author visual editing mode:
- EMF: https://github.com/oxygenxml/oxygenxml.emf.support
- CGM: https://github.com/oxygenxml/oxygenxml.cgm.support
- PDF: https://github.com/oxygenxml/oxygen-pdf-image
- LaTex: https://github.com/oxygenxml/wsaccess-javascript-sample-plugins/tree/master/latex-images-support
- PlantUML: https://github.com/oxygenxml/wsaccess-javascript-sample-plugins/tree/master/plantuml-images-support
- Content Fusion Oxygen add-on - bundled with Oxygen.
- WebHelp Feedback Oxygen add-on.
- Emmet plugin for Oxygen.
Using Frameworks and Plugins in the WebAuthor in-browser editor
The WebAuthor in-browser editing tool reuses on the server most of the internal architecture of an Oxygen XML Editor standalone version:
- The WebAuthor can use for editing XML vocabularies the same framework configurations used in Oxygen XML Editor: https://www.oxygenxml.com/doc/ug-waCustom/topics/customizing_frameworks.html
- Plugins can be implemented to connect the WebAuthor to various servers.
Where can we go from here?
- Support for Google Drive (already available in WebAuthor)
- Support for Perforce (already available in WebAuthor)
- Use Grammarly for spell check (no API available on Grammarly side)
- Presentation mode plugin (increase fonts, disable certain settings).
- Context side view plugin using XPath with support for favorite expressions.
- Plugin which highlights various characters or text fragments in the content.
- Add support for a plugin to contribute a custom editing perspective (toolbars/views arrangement).
Besides the possible enhancements listed below, we want your feedback. So are you using Oxygen add-ons? Are you developing such add-ons? What do you need from us to better support your use cases?