Graphiti "New and Noteworthy" for Eclipse Luna SR4

Last revised July 1, 2015

This document describes the new development topics that were addressed during the milestones towards the release 0.11.4 within the Luna release train.


Bug 470455 A bug causing problems in creating connections when the top shape has no anchor has been fixed.


Bug 464857 A bug in image handling causing a resource leak has been fixed.


Bug 458465 A bug in finding the child shape in a container has been fixed. In case of shapes that were sent to back, a wrong shape might have been returned.
Bug 450993 A bug in the arrangement of the speed buttons (context buttons) has been fixed.
Bug 449384 A bug that caused the print feature to freeze on Linux machines has been fixed.


The main focus for this version has been set on bugfixing.
Bug 437933 A potential NullPointerExecption in the method isDirty() in DefaultPersistencyBehavior has been fixed.
Bug 436601 A potential race condition in the save logic of DiagramEditor has been fixed. It could have caused erroneous update and refresh behaviors in the editor that are hard to track down.
Bug 439689 A bug that caused invisible elements to be selected has been fixed.
Bug 440796 A bug that caused incorrect notifications on changing the rotation attribute of AbstractText has been fixed.


The main focus for this milestone has been set on bugfixing.
Bug 433650 A bug causing that the Diagram Editor was not marked as saved after save has been fixed.
Bug 435515 The left-over build properties for jre.compilation that still referred to Java 1.5 were removed.


The main focus for this milestone has been set on bugfixing.
Bug 434436 A bug causing the highlighting of anchors not to work has been fixed. It is now possible to set the background color on hover for anchors.
Bug 434458 A bug causing the color decorators of connections not to work has been fixed. It is now possible to decorate connections with ColorDecorators.
Bug 434684 A bug that prevented the update of the diagram for an open editor has been fixed. Now it is possible to update an editor with a new diagram on refresh of the editor.


The main focus for this milestone has been set on bugfixing.
Bug 408725 Renaming the Graphiti project from modeling.gmp.graphiti to modeling.graphiti has been finalized. The rename was needed because of the elimination of all container projects in the modeling project. For Graphiti the former container project GMP has been deleted; Graphiti is now i direct subproject of the modeling main project. This change affected the name of the Git repository, Wiki locations, build job names and our Bugzilla component. For details see the bug.
Bug 412858 An error in the update feature handling has been found that can only be fixed in a potentially incompatible way. In some situations the method canUpdate was not consulted before calling the method updateNeeded. In order not to break any existing tools relying on the current erroneous behavior, only a first step to fix this bug was undertaken. From now on a Eclipse error log entry will be written whenever a tool returns false on canUpdate but returns a true update reason for calling updateNeeded. This allows tool to continue to use their current implementation until the actual bug in the Graphiti framework will be fixed in the next development cycle for Eclipse Mars (probably Graphiti 0.12.0). More detail on the fix and the error message can be found in the linked Bugzilla (the fix is described in comment 3, the error message in comment 4).
Bug 416039 The rendering in styled texts did not fall back to the font settings used in the text object itself in case no special font has been set for the styled text.
Bug 424020 A potential infinite loop in the create connection functionality has been fixed. It was caused by returning true for the method canStartConnection on the diagram.
Bug 430609 A bug in the EMF transaction handling in Graphiti has been fixed that could cause an EMF Transactions IllegalStateException has been fixed. In some rare situations the framework tried to execute a feature without starting a transaction although no transaction was active.
Bug 430687 Any subclasses of DefaultUpdateBehavior were not able to access the diagram input in the method createEditingDomain. This has been fixed by introducing an additional parameter for the input to an additional createEditingDomain method, so this change will not affect any existing tools already overriding this method.
Bug 432681 Inconsistencies in the Graphiti Git repository regarding new lines and settings for new files regarding new lines has been fixed. Until now both Windows and UNIX line endings were mixed.


The main focus for this milestone has been set on bugfixing and implementing round-offs.
Rotation angle is more precise The angle attribute that was used for rotation of text graphics algorithms was stored as an integer which lead to rounding issues and imprecise rendering. The angle attribute has been deprecated and replaced by a rotation attribute of type double. The framework internally cares about compatibility with old diagrams by reading the old angel attribute and storing it in the rotation attribute. Both getAngle() and getRotation() methods on the graphics algorithms return the value of the rotation field (in case of getAngle() rounded to integer).
More flexibility in DefaultUpdateBehavior Clients are now more flexible in how they can influence the update behavior by overriding DefaultUpdateBehavior: the update adapter caring about updating to new file contents can now be changed by clients. Also two bugs in the registration of the update adapter (duplicate registration for initial resources) and only reacting to the deletion of the first diagram in a resource to close the editor were fixed.
Unselecting a connection tool in palette It is now possible to de-select a connection creation tool the editor palette. The new method isStayActiveAfterExecution(IConnectionCreationToolEntry) was added to the IToolBehaviorProvider interface. The default is as true as it was before.
Bug 424636 This fixes a bug in DiagramEditorActionBarContributor that appeared in RCP applications when the org.eclipse.ui.export functionality is not available. The contributor tried to add the Graphiti save as image menu entry right after the Eclipse export entry which caused an IllegalArgumentException in case it was not available. The situation is now checked and the entry is only added in case we find the location. Clients may override the new method addSaveAsImageEntryToMenu() to define their own location for the menu entry.
Bug 429215 A potential NullPointerException in DefaultMarkerBehavior has been fixed. I could happen in case a not correctly initialized editor was closed.


The main focus for this milestone has been set on bugfixing and implementing round-offs.
Disable reconnection It is now possible to completely disable the reconnection feature in Graphiti. When that is done the user is not even allowed to start dragging on an anchor. So far it was only possible to prevent the drop operation.
Bug 425750 A bug in the selection changing feature has been fixed.


The main focus for this milestone has been set on bugfixing and implementing round-offs.
Bug 391046 A bug that might have caused deadlocks while saving a Graphiti diagram has been fixed.
Bug 421612 Graphiti now uses its own Hudson instance (HIPP) at Eclipse.
Bug 421754 A bug in the calculation of the absolute position of a shape has been fixed. The calculation returned a wrong position in case the shape was nested inside an inactive container.
Bug 421813 A bug in the calculation of the relative position of a shape has been fixed. The calculation returned a wrong position in case the shape was nested inside an inactive container.


The main focus for this milestone has been set on bugfixing and implementing round-offs.
Documentation for Diagrams in Views and Popups The Graphiti documentation now has a chapter on the Diagrams in Views and Popups functionality introduced in Graphiti 0.10.0.
Bug 418409 The Graphiti new sample project and sample diagram wizards are available again in the Eclipse new wizards popup. They had disappeared in M2.
Bug 418676 A bug has been fixed that caused that canUndo() was not called in the feature or pattern has been fixed.


The main focus for this milestone has been set on bugfixing and implementing round-offs.
Mouse wheel support for scrolling and zooming Graphiti now supports the use of the mouse wheel for scrolling and zooming inside diagrams.
DiagramEditorInput adapts to IResource The DiagramEditorInput object now supports calls to the method getAdapter(...) passing an IResource.class object and returns the underlying Eclipse resource in case it can be retrieved.
Bug 414437 Fixed a bug that caused the zoom animation to jump in some cases.
Bug 414954 Fixed a wrong link on the Graphiti web page to the online documentation and the New and Noteworthy documents.
Bug 415884 Fixed a bug in the size calculation for texts that are placed into multi text graphics algorithms. Line breaks and other special characters were not counted correctly, e.g. did not increase the needed height.
Bug 416419 Fixed a wrong return value in DiagramBehavior; getAdapter to IDiagramEditor returned the behavior instance.
Bug 416708 Fixed a bug in the IdPattern that might cause direct editing not to get active in certain situations.
Bug 417577 Fixed a bug that caused that the state callback were not called while creating a connection and using the drag new connection functionality.
Bug 418333 Graphiti now needs Java 1.6 as minimal supported runtime, since the Equinox Core plugins require that version as well in Luna M2. Running the Graphiti framework on top of Java 1.5 is no longer possible. Note that this is an incompatible change.


The main focus for this milestone has been set on bugfixing and implementing round-offs.
Double click feature for diagrams It is now possible for clients to register a double click feature also on diagram level. Until now that was only possible on concrete shapes.
Hook to check read-only state of EMF resource It is now possible for clients to override a hook method for checking if any of the EMF resources used in the editor is read-only. Until now having a resource contained in the platform itself (e.g. EMF core) loaded in the editor caused an exception while trying to save.
Convert image to bytes service Clients may now use a Graphit service method that converts an image into a byte array. The functionality was up to now hidden in the save as image feature.
Bug 403622 Tests that were disabled for dependency issues between Eclipse Kepler and SWTBot are now enabled again.
Bug 411891 Fixed a dependency bug so that the Graphiti SDK can now be installed into Eclipse Juno.
Bug 412877 Fixed a bug that caused reconnection features not to appear on the undo/redo stack in some cases.
Bug 413166 Fixed a bug that caused DiagramEditorDummy not to return the editing domain.