Edit online

Contributed by: Radu Coravu on 2020-01-18

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.
    Such plugins can be implemented either in Java or Javascript (since version 17.1).
  • 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

Samples:
Useful add-ons with private repositories (can be installed from application default add-on update site):
  • 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:

Where can we go from here?

Possible future plugins we can work on:
  • 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.
Possible new API enhancements:
  • 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?