Section 1:

Overview of the Eclipse plugin concept

Although the core KNIME functionality does not depend on Eclipse, Eclipse is used as the workbench framework to provide a professional graphical user interface. For this reason all KNIME components are built up as so-called Eclipse plugins. In Eclipse everything is a plugin plugged into the extension points of other plugins. At its base, there is just a small runtime engine that executes the plugins and determines their dependencies. The required structure of an Eclipse plugin comprises a "plugin.xml" file, which contains the dependencies to other plugins and the extension points to which the plugin wants to connect. Furthermore, a plugin can provide its own extension points to which additional new plugins can be connected.

The KNIME workbench itself connects to several extension points of the Eclipse workbench (e.g. the editor-, preferences page-, perspective-extension point, etc.). KNIME itself also provides two extension points to which external providers can contribute to the functionality of KNIME. These extension points are the "Categories" extension point (org.knime.workbench.repository.categories) and the "Nodes" extension point (org.knime.workbench.repository.nodes). The "Categories" extension point allows you to introduce new category folders displayed in the node repository by simply adding an entry to the plugin.xml. The "Nodes" extension point enables you to contribute a new functional node to the node repository that is connected to the Java code by registering the corresponding NodeFactory in the plugin.xml. Besides the plugin.xml file, an Eclipse plugin requires a so-called "Bundle Activator", which inherits from the Eclipse class "Plugin". This is a housekeeping class that contains practically no functionality in terms of KNIME extensions but is nevertheless required by eclipse. The "Bundle Activator" is registered in the obligatory "MANIFEST.MF" file located in the META-INF directory. Furthermore, the "MANIFEST.MF" file contains information about the class path, required plugins, the vendor, which java packages should be made visible outside, etc.

The final file required is the "build.properties" file. It configures the way a plugin is exported (deployed). It defines the name of the jar file in which the classes of the plugin should be stored as well as the files to be included in deployment; it also enables you to define two build settings for a build that includes the source code and for one that does not. A source folder (mostly "src") is also provided that contains the java sources of the corresponding plugin. All this infrastructure is automatically created by the extension wizard described below to enable a developer to immediately focus on the real problem and not have to worry about the Eclipse infrastructure.