Developer Notes

10. The project

Pliny is written as a set of plugins that operate within the Eclipse operating framework. They can be loaded into an Eclipse installation, and if they are, Pliny functions will appear with the other functions that the particular Eclipse installation provides. Pliny is, therefore, dependent upon the presentation framework with Eclipse provides -- in particular the Eclipse workbench: the framework in which Eclipse activities are shown on the screen, and in which the user interacts with those objects. Views and Editors are, for example, presented within the workbench. Pliny is also dependent upon the OSGi bundle mechanism -- a base part of the Eclipse framework that manages the activation of separate bundles of code (an Eclipse plugin is an OSGi bundle).

When Pliny operates standalone it invokes various pieces of Pliny plugins to provide its function. However, for Pliny to run, it needs the workbench and OSGi mechanisms (and other things) to be set up so that the plugins have enough of Eclipse running to operate in the same way that they do within a normal Eclipse installation. Eclipse's RCP (Rich Client Platform) provides this framework by providing the suite of base Eclipse services that allows Eclipse plugins to operate on their own and the mechanisms that launch it. You can find out more about the RCP at Although now a bit dated, I found Ed Burnette's Rich Client Tutorial helpful.

An RCP bundle contains two key objects:

  • The formal description of the application, with information such as what other plugins are needed to make the application work, which splash screen to show during startup, what icons represent the program as a whole. This description is found in the XML file pliny.product.
  • The code that sets up the Pliny application within it. The code's main work is to give the RCP workbench information it needs to prepare the on-screen presentation in which Pliny plugins operative. It can be found in project

Code in

To be perfectly frank, very little individual coding is necessary to make this work, so don't expect to find too much there. The code involved is in package

The classes in are:

John Bradley
Center for Computing in the Humanities
King's College London