<html> | |
<head> | |
<title>Graphiti</title> | |
</head> | |
<body> | |
<p>The Graphiti project is a proposed open source project under the | |
proposed GMP container project within the <a | |
href="http://www.eclipse.org/projects/project_summary.php?projectid=modeling">Eclipse | |
Modeling Project (EMP) Top-Level Project</a>.</p> | |
<p>This proposal is in the Project Proposal Phase (as defined in the | |
Eclipse Development Process) and is written to declare its intent and | |
scope. We solicit additional participation and input from the Eclipse | |
community. Please send all feedback to the <a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=107">Eclipse Modeling</a> | |
forum.</p> | |
<h2>Background</h2> | |
Eclipse provides a modeling infrastructure evolving around the Eclipse | |
Modeling Framework (EMF). Offering graphical representations and editing | |
possibilities is an essential part of EMF. SAP has built and plans to | |
contribute an Eclipse-based graphics framework to enable easy | |
development of state-of-the-art diagram editors for domain models. SAP | |
plans to contribute the developed framework under the name Graphiti. | |
<p>The proposal of this new project needs to be aligned with | |
introducing a new umbrella project hosting the graphical modeling | |
framework <a href="http://www.eclipse.org/modeling/gmf/">GMF</a> and | |
Graphiti as proposed in the Bugzilla bug report <a | |
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=304589">304589</a>. | |
The name of this new umbrella project will be GMP; it will host Graphiti | |
and three subproject split from GMF (Tooling, Runtime and Notational, | |
see bug report for details). | |
<h2>Scope</h2> | |
The objectives of the Graphiti project are the following: | |
<ul> | |
<li>Provide an easy to use and well structured plain Java API for | |
building graphical tools</li> | |
<li>Provide documentation and tutorials for doing so</li> | |
<li>Limit the dependencies of the framework to an absolute minimum | |
to support RCP-like scenarios</li> | |
<li>Provide optional components beyond the RCP use case to ease | |
e.g. IDE integration</li> | |
<li>Provide the ability to use any existing layout algorithms for | |
auto layouting a diagram</li> | |
</ul> | |
<p>As the <a href="http://www.eclipse.org/modeling/gmf/">Graphical | |
Modeling Framework (GMF)</a> already exists as a project targeting a similar | |
objective, we distinguish Graphiti from GMF as follows: | |
<p> | |
<table border="1"> | |
<tr> | |
<td> </td> | |
<td><b>Graphiti</b></td> | |
<td><b>GMF</b></td> | |
</tr> | |
<tr> | |
<td><b>Architectural Concept</b></td> | |
<td>runtime centric API</td> | |
<td>generative</td> | |
</tr> | |
<tr> | |
<td><b>API</b></td> | |
<td>self-contained</td> | |
<td>refers to GEF functionality</td> | |
</tr> | |
<tr> | |
<td><b>Client Logic</b></td> | |
<td>centralised (feature concept)</td> | |
<td>functionality distributed since there are no constraints</td> | |
</tr> | |
<tr> | |
<td><b>Look&Feel</b></td> | |
<td>sophisticated default Look&Feel defined by usability | |
specialists (highly customisable according to the tool requirements)</td> | |
<td>simple default Look&Feel (highly customisable according | |
to the tool requirements in generated coding)</td> | |
</tr> | |
</table> | |
<h2>Description</h2> | |
The Graphiti framework utilises Eclipse's | |
<a href="http://www.eclipse.org/gef/">GEF</a> | |
and | |
<a href="http://eclipse.org/articles/Article-GEF-Draw2d/GEF-Draw2d.html">Draw2D</a> | |
for diagramming and supports EMF on the domain side. The diagrams are | |
described by a platform independent metamodel and the diagram data is | |
kept strictly separate from the domain data. This enables rendering an | |
existing diagram in various environments (besides Eclipse this could be | |
e.g. within a browser) even without having access to the underlying | |
domain data. This also enables displaying a diagram within other | |
environments (e.g. using flash inside a browser) simply by providing a | |
new rendering engine for the environment that can interpret the Graphiti | |
diagram. (Currently only a rendering engine for Eclipse GEF exists.) | |
<p>Graphiti is strictly API-centric: a user of the framework writes | |
plain Java coding and (besides Graphiti) only needs to know EMF to use | |
the framework and to build an editor -- no knowledge of Draw2D or GEF | |
(or any other used rendering framework) is required. | |
<p>Editors built with the framework are equipped with a standardised | |
Look&Feel (designed together with usability experts) which leads to | |
a more coherent UI in Eclipse-based tools; nevertheless tools can easily | |
define a somewhat different Look&Feel according to their special | |
needs by simply overriding and changing the default behaviour of the | |
framework. Rapid prototyping is supported by simple APIs and base | |
classes which can be used to refine an editor in an evolutionary way. | |
The user of the framework writes so-called features to add functionality | |
to the editor. For instance, one would write features for creating new | |
model objects and their graphical representation (Create Features), or | |
for creating a graphical representation for an already existing model | |
object (Add Features). The complete life cycle (creating, editing, | |
renaming, moving, deleting...) of model objects and their graphical | |
representations can be defined and controlled by implementing such | |
features. The standard behaviour for the different operations is covered | |
by so-called default features, if the user of the framework does not | |
declare any special behaviour. Step by step, these default features can | |
be replaced or extended with further functionality. Additionally, the | |
framework comes with a hook for so-called custom features to implement | |
non-standard behaviour and further operations inside the tool. | |
<h2>Architecture</h2> | |
The following diagram visualises the framework as perceived by a tool | |
developer. | |
<p><img alt="Architecture of Graphiti" src="archtools.png"> | |
<p>The Interaction Component is provided by Graphiti, whereas the | |
Diagram Type Agent (DTA) is implemented by the user of the framework and | |
defines the new diagram type that is contributed by the tool. It | |
provides one or more Tool Behaviour Providers that define how the tool | |
behaves in specific situations; the tool can influence, e.g., what will | |
be displayed in the palette of the editor, how selection and double | |
clicking is handled, that some special rendering is necessary for | |
certain objects, how zooming is handled and so on. It is also the | |
responsibility of the Tool Behaviour Provider to define which context | |
menu and context buttons are available in a certain scenario. The | |
context buttons appear around the currently hovered shape and can be | |
used by the user in a very convenient way to trigger object specific | |
operations; they are completely rendered by Graphiti. The tool only | |
provides the operation, a name, and potentially an icon for it. Of | |
course, operations can also be triggered via context menu entries. | |
<p><img alt="Context Buttons" src="ContextButtons.jpg"> | |
<p>These operations are defined by the tool by implementing features | |
or by using the default features provided by the framework. Besides, | |
there is a so called Feature Provider for a diagram type which is | |
responsible to define the features that are available and are to be used | |
in the tool in a specific scenario. | |
<h2>Relationship with other Eclipse Projects</h2> | |
<ul> | |
<li>Graphiti uses EMF on the domain side.</li> | |
<li>Graphiti uses Draw2D and GEF for diagramming.</li> | |
<li>Graphiti complements the offering of GMF which follows a | |
generative approach while Graphiti follows a runtime-oriented and API | |
based approach.</li> | |
</ul> | |
Besides that proposed Eclipse project | |
<a href="http://wiki.eclipse.org/WTP/JPA_Diagram_Editor/Proposal">WTP/JPA | |
Diagram Editor</a> | |
already uses Graphiti as its underlying graphical framework. | |
<h2>Initial Contribution</h2> | |
The initial code contribution will come from | |
<a href="http://www.sap.com">SAP</a> | |
where Graphiti was developed originally as part of their MOF based | |
modeling infrastructure. Later Graphiti was ported to EMF; this version | |
will be the basis for the coding contributed to Eclipse. | |
<h2>Legal Issues</h2> | |
There are no known legal issue with Graphiti. | |
<h2>Committers</h2> | |
<p>The following individuals are proposed as initial committers to | |
the project:</p> | |
<ul> | |
<li>Michael Wenz, <a href="http://www.sap.com">SAP</a>, lead</li> | |
<li>Christian Brand, <a href="http://www.sap.com">SAP</a></li> | |
<li>Matthias Gorning, <a href="http://www.sap.com">SAP</a></li> | |
<li>Tim Kaiser, <a href="http://www.sap.com">SAP</a></li> | |
<li>Jürgen Pasch, <a href="http://www.sap.com">SAP</a></li> | |
</ul> | |
<h2>Mentors</h2> | |
<p>The following Architecture Council members will mentor this | |
project:</p> | |
<ul> | |
<li>Cedric Brun, <a href="http://www.obeo.fr">Obeo</a></li> | |
<li>Bernd Kolb, <a href="http://www.sap.com">SAP</a></li> | |
</ul> | |
<h2>Interested Parties</h2> | |
<p>The following individuals, organisations, companies and projects | |
have expressed interest in this project:</p> | |
<ul> | |
<li>Ronald Steinau, <a href="http://www.entimo.de">Entimo</a></li> | |
<li>Jens von Pilgrim, <a href="http://www.fernuni-hagen.de/">FernUniversität | |
Hagen</a></li> | |
<li>Markus Völter, <a href="http://www.itemis.de">itemis</a></li> | |
<li>Jan Köhnlein, <a href="http://www.itemis.de">itemis</a></li> | |
<li>Alexander Nyβen, <a href="http://www.itemis.de">itemis</a></li> | |
<li>Dimitrios Kolovos, <a href="http://www.cs.york.ac.uk">University | |
of York</a></li> | |
<li>Eike Stepper, Lead <a href="http://wiki.eclipse.org/CDO">CDO | |
Model Repository</a></li> | |
<li>Mickael Istria, <a href="http://www.bonitasoft.com">BonitaSoft | |
S.A.</a></li> | |
</ul> | |
<br> | |
The need for a runtime-centric graphical framework enabling easy | |
development of graphical editors in EMP was discussed at the Eclipse | |
Summit Europe 2009 with the above-mentioned parties. | |
<h2>Project Scheduling</h2> | |
We will be present with Graphiti at | |
<a href="http://www.eclipsecon.org/2010/">EclipseCon 2010</a> | |
to raise the community awareness of the project. There will be a | |
<a href="http://www.eclipsecon.org/2010/sessions/?page=sessions&id=1306">talk | |
on Graphiti</a> | |
and we will have a | |
<a href="http://www.eclipsecon.org/2010/sessions?id=1599">poster at | |
the poster reception</a> | |
. We plan the initial code contribution for end of March 2010 and hope | |
to have an incubator release by June 2010, aligned with the Helios | |
release. Also after the initial code contribution we plan to open the | |
project for further contributors from other interested parties. | |
<h2>Changes to this Document</h2> | |
<table> | |
<tr> | |
<td>December 15, 2009</td> | |
<td>Document created</td> | |
</tr> | |
<tr> | |
<td>March 18, 2010</td> | |
<td>Document updated</td> | |
</tr> | |
</table> | |
</body> | |
</html> |