Graphiti "New and Noteworthy" for Juno

Last revised December 13, 2011

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

M4

The main focus for this milestone has been set on implementing round-offs especially in the area of custom anchors and styles.
Ease use of styles To ease the usage of styles in Graphiti, there are now new methods (createPlain...) in the creation service for graphics algorithms that create graphics algorithms without any attributes set; by that one can directly use styles to define the properties of the graphics algorithms, without having to reset any attributes.
Documentation on Styles The Graphiti tutorial has been reworked to explain the styles concept in a better and deeper way; this affects both the written version in the Eclipse help system and the tutorial plugin that is part of the SDK download. The new documentation also reflects the new styles related creation methods for graphics algorithms as described in the Ease use of styles entry for M4.
Decorators for Connection Texts Graphiti now allows to add decorators to connection texts that do not overlap the text itself. This was not possible so far because decorators were added directly to the shape which was in this case the text itself. Users can simply add decorators to texts now and can now position them by the standard means as they like and are used to in other shapes.
Hiding of Selection Tools It is now possible to hide the connection tools from the palette of the diagram editor. There are 2 new methods (isShowSelectionTool and isShowMarqueeTool) in the tool behavior provider that allow clients to modify the standard behavior and hide the selection tool and/or the marquee tool from the palette.
DefaultDeleteFeature allows Access to setDoneChanges Subclasses of DefaultDeleteFeature can now use the standard behavior to indicate that no changes have been made while performing (or rather not performing) a delete operation. This has been achieved by increasing the visibility of the method setDoneChanges to allow clients to access and override it.
Disabling the Context Buttons End users of Graphiti editors can now prevent that the context buttons will appear when hovering with the mouse over a shape. This can be done permanently using a toolbar button or by holding the Control key (Command key on OS X) while moving the mouse.
Alligned FixPointAnchor and BoxRelativeAnchor The behaviour of FixPointAnchors and BoxRelativeAnchors is now aligned, especially dragging a connection from a FixPointAnchor now works as it did for BoxRelativeAnchors already before. In the cause of processing this bug the coding on Graphiti side was very much streamligned.
Angle of MultiText Until now MultiTexts could not be rotated although the angle attribute could be set for them. Now the method setAngle() has an impact in the graphical representation. The angle is specified in degrees, 0 degrees corresponds to the 3 o'clock position. A positive value indicates a clockwise rotation while a negative value indicates a counter-clockwise rotation of the text. The developer is responsible for the correct size and location of the MultiLineText GA.
Nested Anchor Shapes Graphiti now supports drawing nested shapes for representing anchors. These shapes can now be defined for FixPointAnchors and BoxRelativeAnchors and are correctly rendered by the framework.
Bug 355968 An issue in the calculation of the position of FixPointAnchors and BoxRelativeAnchors caused a presentation issue in some cases. This has been fixed and the anchors are displayed at the correct location now in all cases.
Bug 352440 A bunch of warnings inside the Graphiti framework coding has been removed, especially caused by the need to be compatible with the Eclipse 3.6 version of GEF (3.6). Now Graphiti switched to support a minimal version of GEF 3.7 (part of Eclipse Indigo) at least and therefore was able to remove some GEF deprecations warnings. Also some further warnings in Graphiti coding have been removed.
Bug 361932 Graphiti is now source compatible with JDK 1.5. This was done to ease integration with some modeling projects that use this Java version. Now users will be able to run the Graphiti framework on top of Java 5
Bug 363539 A missing implementation of the method executeFeature in the dummy editor caused dark feature processing to fail.
Bug 364035 Fixed a bug in DefaultReconnectionFeature that made it hard for clients to force a connection to a specific anchor.
Bug 363464 The method layoutPictogramElement in AbstractFeature now returns an IReason object that indicates the result of the layout operation.
bug 364124 Fixed typo errors in the tutorial documentation.

M3

The main focus for this milestone has been set implementing round-offs both in functionality and documentation.
New Chess Diagram Example The Chess Diagram Editor as shown in a demo at EclipseCon Europe 2011 is now part of the Graphiti samples and available as part of the Graphiti SDK download. A screenshot of the tool can be seen in the next entry.
State Callbacks during Connection Creation Graphiti now offers state callbacks during the creation of a new connection. There are hooks for starting and ending a connection, but also for the state when the connection is attached to its source anchor. This allows for example highlighting of allowed targets for the connection.
State Callbacks during Reconnect The reconnection feature now provides a hook that allows the tool developer to react to reconnect cancellations.
Allow Paste to Location The paste context now provides additional information about the location of the paste operation to allow pasting to a user-defined location.
Provide Resize Direction The resize context now provides additional information on the direction in which the shape is being resized to allow e.g. better placement of child shapes.
Unconditional Editor Refresh The Graphiti diagram editor now offers an unconditional refresh mode. Tool developers can enable this mode by overriding the isAutoRefreshXXX methods in the tool behaviour provider.
Documentation The complete Graphiti documentation has been reformatted, is easier to read and looks much nicer now. Besides some bugs in the documentation and the tutorial have been fixed and some smaller gaps especially in the styles concept have been filled.
Bug 359221 Connection were not removed on the removal of their originating anchor.
Bug 359222 Moving an anchor shape caused jumping of that shape.
Bug 359928 Fixed a minor initialisation issue in DiagramEditorBehaviour.
Bug 360800 The background colour attribute for Texts was ignored. As an effect of this fix Graphiti introduced version numbers for diagrams; for older versions than 0.9.0 the Graphiti diagram editor will perform an auto migration of the background colour attribute of Text objects to correctly display the background colour (this behaviour can be changed by the tool developer). For details on this please have a look into the bug report. Involves diagram migration!
Bug 359112 Fixed an issue in resizing of the direct editing field for connection decorators.
Bug 357878 Fixed a strange behaviour when adding bendpoints.
Bug 359526 Fixed a NullPointerException in the refresh handling for non file-based editors.

M2

The main focus for this milestone has again been set on bugfixing and implementing round-offs. Besides project related tasks were focused.
Bug 357764 Fixed an index out of bounds exception during refresh in connection with rendering decorators.
Bug 352200 The method moveShape in the default move feature is no longer final.
Reworked styles The styles concept in Graphiti has been reworked. There are new creator methods for graphics algorithms that do not set any default attributes (createPlain...) that prevent you from having to reset certain attributes in order to enable the value set at a style. For details see Bug 352542.
Bug 355401 Fixed performance issue with printing under Linux.
Bug 356090 Fixed bug with hasDoneChanges for delete feature in patterns.
Bug 354824 Fixed bug in positioning within FixPointAnchors.
Bug 352220 Cleaned-up the disabling of guides inside the editor. Note: this can affect tool builders since this is a - very minor - change in API.
Bug 355027 Fixed a bug in moving connection decorators in a zoomed diagram.
Bug 355347 Fixed a bug in colours and fonts that invalidated the Graphiti object management. Colours and Fonts are now immutable. Note: this can affect tool builders since this is a small change in API.
Bug 356218 Fixed a bug in auto update at startup that caused the editor to open dirty in any case.
Bug 356828 Fixed a bug in editor title decoding.
Bug 351226 Improved editor behaviour when renaming or deleting a file.
Bug 357411 Removed some unnecessary reflection coding.
Bug 357417 DiagramEditorInput now adapts to IFile.
Bug 357549 Fixed a bug in setting names and descriptions for creation entries.
Bug 355968 Enabled ChopBoxAnchors to define a reference point for connections.

M1

The main focus for this milestone has been set on bugfixing and implementing round-offs. Besides project related tasks were focused.
Git Migration Graphiti sources have been moved from CVS to Git.
Bug 352709 Invalid image provides no longer cause the editor to crash.
Bug 333985 Documentation for Accessibility support for F2 is now available.
Bug 339185 Documentation on reconnection feature is now available.
Bug 348634 Fixed the bug that direct editing got invoked again if mouse was placed over the edit field.
Bug 348637 Fixed sizing bug in direct editing text decorator.
Bug 348662 Fixed bug in removing tooltips.
Bug 348772 Fixed spelling error in DefaultToolBehaviourProvider API. - Note: this can affect tool builders since this is a - very minor - change in API.
Bug 350261 JAR files get now packed in the central build.
Bug 350273 Central Eclipse license feature is no used.
Bug 351053 Tool builders are more flexible to use other command stacks.
Bug 349439 Eased to use Graphiti in an RCP scenario.
Bug 350830 Tutorial has been updated to correctly reflect selection border behaviour.
Bug 345748 Graphiti ZIP file created in nightly uses time stamp in file name to avoid caching issues.
Bug 334402 Fixed issues with caching image descriptors.
Bug 323037 Enabled right click selection on diagram background.
Palette Removal It is now possible to completely remove the palette from the editor