This describes the plugin architecture.
A plugin in this application is just a regular Java JAR file which contains the necessary classes and resources implementing a FileHandler.
Such a FileHandler has to implement a specific Java Interface and advertise its properties in a defined way. See the development documentation (JavaDoc) for the details about this.
It should also conform to the semantic contract of being a FileHandler, which means to respect the meaning of the properties which can be manipulated through the implemented interface. This ensures proper integration with this application (e.g. respecting the setting allow-edit to (dis-)allow modifications).
FileHandlers come in a variety of flavors:
Preview. Provides very quick preview information about a file, possibly without even opening it.
Viewer. Allows viewing the contents of a file without any possibility to perform any modifying operations.
Editor. Allows loading the files contents and edit them with any format specific possibilities. However, saving the changes might be suppressed if not allowed by the application setting.
Others. Other kinds of handlers are conceivable, but aren't yet specified. If some other flavor is introduced by a foreign handler, it should respect the design goals outlined by the three flavors listed above.