Edit online

Difference Between a Framework (Document Type) and a Plugin Extension

Question

What is the difference between a Framework and a Plugin Extension?

Answer

There are two possible ways to customize the application:

  1. Implement a plugin.

    A plugin serves a general purpose and influences any type of XML file that you open in Oxygen XML Editor.

    For the Oxygen XML Editor Plugins API, Javadoc, samples, and documentation, go to https://www.oxygenxml.com/oxygen_sdk.html#Developer_Plugins

  2. Create or modify the document type that is associated to your specific XML vocabulary.

    This document type can be used, for instance, to provide custom actions for your type of XML files and to mount them on the toolbar, menus, and contextual menus.

    For example, if the end-users are editing DITA documents, all the toolbar actions that are specific for DITA are provided by the DITA framework. If you look in the Document Type Association preferences page there is a DITA document type. If you edit that document type you will see that it has an Author tab in the Document Type Configuration dialog box. The subtabs in this tab can be used to define custom DITA actions and add them to the toolbars, main menus, or contextual menus.

    For information about developing your own document types (frameworks), see the Creating and Configuring Custom Frameworks section.

    If you look on disk in the [OXYGEN_INSTALL_DIR]\frameworks\dita folder, there is a file called dita.framework. That file gets updated when you edit a document type from the Document Type Association preferences page. Then you can share that updated file with all users.

    The same folder contains some JAR libraries. These libraries contain custom Java operations that are called when the user presses certain toolbar actions.

    The Oxygen SDK contains the Java sources from all the DITA Java customizations:

    https://www.oxygenxml.com/oxygen_sdk.html#XML_Editor_Authoring_SDK

Important: It is possible for a plugin to share the same classes with a framework. For further details, go to How to Share the Classloader Between a Framework and a Plugin.