Custom Calculator Plugin implementation

    This pages gives you a walk-through on how to build a custom plugin implemenation:

    Introduction

    SelectionPlugin is a simple CalculatorPlugin descendant class written as an example for custom plugin implementation. SelectionPluginDisplay is the corresponding CalculatorPluginDisplay descendant class. This latter is not mandatory for a custom plugin; for most plugins the default implementation is enough, provided that the plugin implements [getResultMolecule()](https://apidocs.chemaxon.com/marvin/help/developer/beans/api/chemaxon/marvin/plugin/CalculatorPlugin.html#getResultMolecule()) in a way that it returns a molecule object with atomic results set in atom extra labels and molecular results in molecule properties. SelectionPluginDisplay gives an example to modify the default molecule view display: it adds a text area with some data.

    SelectionPluginTest is the test sketcher application that shows how to insert the plugin administration into your code in case when you want to use a customized GUI for plugin invocation instead of or in addition to the built-in Tools menu.

    Examples

    Marvin Beans

    Integrate the plugin into MarvinSketch/MarvinView

    To integrate the SelectionPlugin into MarvinSketch/MarvinView, you need to do the following steps (you should also perform similar tasks if you have your own plugin):

    1. Create the plugin JAR with manifest SelectionPlugin.txt:

      
      jar cmf SelectionPlugin.txt SelectionPlugin.jar SelectionPlugin.class SelectionPluginDisplay.class xjars/SelectionPluginParameters.xml
    2. Copy the plugin JAR into the plugins directory (if the plugins directory does not exist, create it in the home directory of Marvin Beans):

      
      cp SelectionPlugin.jar MarvinBeans/plugins      (Linux / UNIX)
      copy SelectionPlugin.jar MarvinBeans\plugins        (Windows)
    3. Edit the MarvinBeans/plugins/plugins.properties file. Add this line to the file:

      
      plugin_999=$$SelectionPlugin.jar$Selection$S$$

    Run MarvinSketch/MarvinView. You can run the example plugin by selecting Selection from the Tools menu.

    Run the test application

    The test application can be started by running the run.sh script (Linux/Unix) or the RUN.BAT batch file (Windows).

    Marvin Applets

    The steps for integrating the plugin into the MarvinSketch/MarvinView applet are:

    Compilation

    Use JAR files from Marvin Applets package for compilation of the new plugin. Since Marvin applets classes are compiled with 1.5 compatible compiler, additional code has to be compatible with 1.5 compatible JDK. To provide compatibility, set the source and the target attributes to 1.5.

    
    javac -source 1.5 -target 1.5 -classpath "marvin/jmarvin.jar:marvin/sjars/Plugin.jar:marvin/sjars/PluginGUI.jar" SelectionPlugin.java SelectionPluginDisplay.java

    Create JAR file

    Marvin applets accept custom plugins from certain location: marvin/plugin/extensions.jar. Therefore, wrap resources for your plugin intoextensions.jar. In this example, SelectionPlugin.txt is the manifest file for the JAR file.

    
    jar cmf SelectionPlugin.txt extensions.jar *.class xjars/SelectionPluginParameters.xml

    The JAR files that Marvin applets load have to be signed.

    
    jarsigner -keystore "<keystorepath>" -storepass <password> extensions.jar <alias>

    In the above statement, the <keystorepath> is the location of the keystore file where your signing key is stored. The <password> gives the password for the keystore. The <alias> is the alias of the certification key in the keystore.

    Installation

    Copy the JAR file into the marvin/plugins directory.

    
    cp extensions.jar marvin/plugins/.

    Create your own instance of plugins.properties in the marvin/plugins directory. This properties file describes the structure of the Tools menu in MarvinSketch / MarvinView. If this file exists, it overwrites the default "Tools" menu. There is a template for plugins.properties (plugins.properties.sample.txt) in this directory. Just make a copy of it, then edit it.

    
    cp marvin/plugins/plugins.properties.sample.txt marvin/plugins/plugins.properties

    To assign your plugin to ChemAxon plugins add the following line to this file. The header of the properties file describes the syntax:

    
    plugin999=$SelectionPlugin$extensions.jar$Selection$Slc$Other$S

    Now you are ready. In MarvinSketch/MarvinView applet the new plugin will be displayed in the Tools/Other menu.