Skip to main content
Jump to: navigation, search



Graphiti - a Graphical Tooling Infrastructure

This page contains useful information for developers working on the Graphiti framework itself. Users of the framework (building Graphiti-based tools) should rather have a look onto our Eclipse page at

Central Build

Build Job

Our central Hudson build job can be found here. Graphiti uses Buckminster for its automated build and test run. See here for a detailed description of the Graphiti build process.

Providing the Build for a Milestone

These steps need to be done in order to provide a new delivery for an Eclipse milestone:

  • The week before the milestone (see below)
  • The week of the milestone(see below)
    • Do a milestone candidate build every day in the week of the milestone
    • Update News&Noteworthy document (on Graphiti site and copy into doc plugin) before building last milestone
    • Provide the final milestone build on +3 day
    • Update the downloads page on our web site with the newest ZIP file link and update site content
    • Do some more testing after +3 day using the EPP packages
    • Check that everything gets installed correctly from the staging update site (sent around on cross-project issues mailing list as soon as it is ready)

How to do a build for Graphiti on Hudson and provide it as a Milestone

  • Open and log on using your Eclipse dev user
  • Go to the Graphiti build job ( and select build
  • Set the build properties
    • build_type "S"
    • build_alias should be meaningfull, e.g. 0.9.0M1
    • site_signing should be enabled
  • Use shell access to to copy build result (ZIP and signed P2 site for 0.8 and before, ZIP and packed P2 site for versions 0.9 and beyond; both are stored after a successful build in the last_success folder of the build job at /opt/public/jobs/gmp-graphiti-nightly/workspace) to the Eclipse download area under graphiti/updates/milestones/<build name and ID> and graphiti/archives/milestones/<build name and ID>.
  • Add the new update site to the composite milestones update site
    • Use SFTP to access the build server and download the JARs describing the content of the composite update site
    • Extract the XML files from them and add links to the new site
    • Update the number of children and the date
    • Create new JARs and upload them
    • There's also some ANT tasks out there that should do the job...
  • Do the testing on +2 day based on the daily milestone candidate


API Tooling

We use the Eclipse API tooling to fulfill Eclipse version number and API stability requirements. You have to define an API baseline if you are working on the Graphiti releases 0.8.x (service releases only) and beyond. For service releases use the same version as baseline (e.g. 0.8.0 for Indigo SR1) otherwise the last major release (e.g. 0.8.0 for Juno developement).

Coding Conventions

We use the standard Eclipse formatter for our coding with just one exceptional setting: the maximum line width is changed to 120. This setting can be found in the Eclipse preferences under 'Java -> Code Style -> Formatter' by editing the 'Eclipse [built-in]' profile on tab 'Line Wrapping': set the 'Maximum Line Width' in Section 'General settings' to 120.

To be sure that the formatter is really used for all your changes define your save actions (Eclipe preferences under 'Java -> Editor -> Save Actions') to include 'Format source code' with 'Format edited lines' only. Also enable the 'Organize imports' action on this page to get an automated clean-up of the import statements.


The source code of Graphiti is publicly available from the Eclipse Git repository. A general page on Git at can be found here. If you just want to browse the source code without checking out all the projects, you can use this link for the web access to the Eclipse Git repository for Graphiti.

Git Anonymous Access

Please set up the following Eclipse Git repository location: <protocol>://, where <protocol> is one of git, ssh or http dependending on what your your network infrastructure allows.

Committer Git Access

Same details as anonymous access, using git, ssh or https as protocol and specific username/password as assigned by Eclipse. Eclipse Git repository location is <protocol>://<Eclipse dev user name>

Here are the steps to set up EGit in Eclipse:

  1. Set environment variable HOME to define the folder where Git will clone repositories to, e.g. "C:\Users\<windows user name>\.git"
  2. Import Git repository:
    • Supported protocols for cloning are git, ssh, http and https
    • From behind a firewall http and https will work
    • Recommendation is to use ssh (no firewall) or https (in case of a firewall)
  3. Open Windows --> Preferences --> Team --> Git --> Configuration and set the following user setting in the .gitconfig file in your HOME directory
    • <Eclipse dev user name>
    • <Email adress registered for Eclipse dev user>

Plugin Structure

In the Git repository you will find the following projects:

examples org.eclipse.graphiti.doc Graphiti tutorial in Eclipse help
examples org.eclipse.graphiti.examples.common Common parts for samples and test tools for Graphiti; helper UIs, e.g. repository explorer and wizard(for Graphiti internal use; must not be used by the Graphiti customers)
examples org.eclipse.graphiti.examples.tutorial Implementation of Graphiti tutorial in final stage
examples org.eclipse.graphiti.ui.capabilities Small example showing how the Eclipse capabilities mechanism can be used for Graphiti
features org.eclipse.graphiti.feature The feature containing purely the Graphiti framework without any additional functionality like SVG export
features org.eclipse.graphiti.feature.examples The feature containing purely the Graphiti examples and documentation
features org.eclipse.graphiti.sdk.feature The feature containing the Graphiti framework, the examples and the documentation
features The feature containing the Graphiti framework, additional framework funktionality (currently only the SVG export), the examples and the documentation
features The feature defining the Graphiti update site content, needed for release engineering
features org.eclipse.graphiti.tests-feature The feature containing the Graphiti tests
plugins org.eclipse.graphiti Graphiti framework: UI platform independent part
plugins org.eclipse.graphiti.export.batik Graphiti framework: Export functionality (e.g. save as SVG) using Batik functionality
plugins Graphiti framework: EMF pictogram model
plugins org.eclipse.graphiti.pattern Graphiti framework: an alternative generic approach to combine all implementation aspects in one pattern
plugins org.eclipse.graphiti.ui Graphiti framework: UI platform independent part
releng org.eclipse.graphiti.releng Release engineering stuff needed for the Buckminster based build
tests Graphiti internal UI and SWT Bot tests
tests org.eclipse.graphiti.tests Graphiti internal tests for UI independent part
tests org.eclipse.graphiti.testtool.ecore Graphiti internal test tool Ecore editing
tests org.eclipse.graphiti.testtool.sketch Graphiti internal test tool Sketch editing
tests org.eclipse.graphiti.ui.tests Graphiti internal tests for UI dependent part

Working on Bugzillas (Contributions and Commiting)

This is what you should do to fully complete a Bugzilla:

  • Of course, fix the bug or provide the enhancement
  • Create a JUnit test testing the change and add it to one of the Graphiti test suites
    • Prefered tests are the pure JUnit tests, if not possible also adding to the SWTBot test suite (as JUnit Plugin or real SWTBot test) is ok as well
    • It should be green, of course ;-)
  • All other tests contained in all the test suites should still pass
  • Check for any warnings in your coding and fix them if possible
  • Provide some kind of raw documentation for your change, this may be directly in the Bugzilla, in the JavaDoc, on this Wiki page or in the online help (e.g. in the tutorial)
    • Bugs will need very little documentation, while functional enhancements will need more attention

Installation for Graphiti Framework Developers

As development IDE you should use the newest Eclipse installation of your choice, at the time this was written the newest Eclipse version was 3.7 (Indigo). You will need SWTBot in your developement IDE to be able to run the Graphiti SWTBot-based UI tests. Also you will need to add Buckminster (version 3.7 at the time this was written) to your installation. For more details see the Getting Started Guide.

Basically you will need the same installation for your target platform as well, but it needs to contain EMF SDK, EMF Transactions SDK and GEF SDK (see getting started guide). Buckminster is not needed here, but SWTBot is. Additionally you will need to install GMF runtime (it hosts some vector support functionality we use from export.batik plugin that you have to collect individually otherwise).

Workspace Settings

Most settings for the workspace you need to set for Graphiti framework development are maintained as project precific settings and are checked-in to our repository. So you will not need to care about things like the correct code formatters, compiler settings, API tooling settings, etc.

What you need to set additioanlly are these things:

  1. You need to define an API baseline to let the API Tooling check against. This can be done in the preferences under Plug-in Development -> API Baselines. Just add a new baseline here; the easiest way to do this is to point to an existing Eclipse installation containing the lastest major release of Graphiti. At the time of writing this (Development for Eclipse Juno), this was Graphiti 0.8.0.
  2. You need to install the supported environments into your Eclipse IDE; these are e.g. J2SE-1.5 and J2SE-1.6. They are needed to let the API Tooling check if any forbidden references to Java functionality is made. Rational behind is that Graphiti uses (for project historical reasons) Java 1.6 and has lots of @override tags defined for interface method overloading, but on the other hand needs to integrate with other Eclipse projects using Java 1.5. In order to achieve this the class file output is set to Java 1.5 while the source can be 1.6 compatible. The environment definitions allow the API tooling to check if what is referenced is really allowed for the final runtime environment Java 1.5. Details on this are explained here:
    The supported environments can simply be installed from the Eclipse projects update site ( for Indigo); browse for "description" there and simply install all found environment descriptions.
    Note: Missing environment descriptions will lead to strange compile errors in your workspace! Some errors like "project cannot be build until org.eclipse.graphiti has been build" while org.eclipse.graphiti appearently has build without any errors.
    See bug 361932 for the reason why this has been introduced.

Mailing List

The Graphiti developer mailing list allows to follow and participate in discussions on the Graphiti framework. You can subscribe here.

Back to the top