Overview of the code organisation

Now that the sources are ready for use, the main problem of getting introduced to a new project is to understand the existing source code and its logical organisation. This section will give a small description on the packages content. The other directories and files will be explained too.

The projects

The sources are split into two plugins projects and a build one. There may be other plugins providing new features in the future. For more informations on the Eclipse plugin principles, refer to the Eclipse developer's guide.

  • org.openoffice.ide.eclipse.core: This plugin provides all the UNO related features of the Eclipse integration. It also defines several extension points used by the language plugins.

  • org.openoffice.ide.eclipse.java: This plugin provides the Java UNO features for the Eclipse integration. This kind of plugin can even be named “language plugin” in some documents.

  • org.openoffice.ide.eclipse.build: This project does not define any plugin, but it contains the main build scripts to generate the update site as explained later.

The core plugin packages

All the packages names are formed in a simple way: name.of.the.plugin.package. In the next lines, the plugin name will not be repeated but will be implied.

  • org.openoffice.ide.eclipse.core: contains the main plugin class and the logger

  • actions: contains the actions classes for the GUI

  • builders: contains all the classes to use for the UNO files build

  • editors: contains all the classes related to the UNO file editors

  • editors.syntax: contains the class used for the IDL syntax highlighting

  • gui: contains all the Graphical User Interface useful classes

  • gui.rows: classes defining often used rows for the dialogs

  • i18n: previously contained the internationalization classes, it only contains the image access classes and bundles

  • internal: this package and all its children should not be exposed to other plugins

  • internal.helpers: some useful classes that should be kept internal

  • internal.model: the model object implementations

  • launch: contains the classes for the URE launch feature

  • model: contains the classes defining the data objects classes. They are often interface

  • language: contains the classes and interfaces to implement in the language plugins

  • preferences: contains the preferences and project properties pages implementations

  • unittests: contains some unit tests, may be not enough

  • unotypebrowser: contains the classes for the Uno types browser dialog

  • utils: some utilities classes

  • wizards: contains the wizards implementations

The other important files

Like every other Eclipse plugin, the core and java plugins contains the following files for the plugin definition:

  • plugin.xml: defines all the extensions and extension points of the plugin

  • build.properties: this file should be used for the build process but is not.

  • META-INF/MANIFEST.MF: contains several informations on the plugin like its version, author, etc.

The core plugin although includes directories containing the icons, the documentation and the extensions points schemas. The build directory contains all the files needed by the build project to generate the update site. Do not forget to update the MANIFEST.MF.in file according to the META-INF/MANIFEST.MF file before building the update site.