yFiles Release Notes
yFiles version 2.5 is the newest major release available.
It contains many exciting new features compared to older versions and is almost
completely API compatible with the 2.4 series.
The latest release is version 2.5.0.4.
Technical Requirements
- Sun Microsystems J2SDK 1.4 or higher is needed for software development with yFiles.
- Sun Microsystems J2RE 1.4 or higher is needed to execute programs using yFiles.
- In order to browse the documentation use Microsoft Internet Explorer 6.0 or higher or Mozilla Firefox 1.5 or higher.
- You need an operating system that supports Java 2.
yFiles 2.5 - Changes Since 2.4.0.3
Major Features Added
|
|
|
|
|
| Line-wrapped layout | Magnifying glass | Incremental grouping | Label configurations |
Incremental Hierarchical Layout Enhanced
-
Class IncrementalHierarchicLayouter now supports hierarchically
organized graphs.
Both incremental as well as non-incremental ("from-scratch") layout mode have
been enhanced to handle group nodes and their contents when calculating hierarchical
layouts.
[To the corresponding section in the yFiles Developer's Guide...]
Hierarchical Layout Enhanced
-
Class HierarchicLayouter now supports the notion of
"constrained layering."
New layerer implementation ConstraintLayerer enables
user-defined constrained layering, where nodes can be specified to be placed
into the topmost or bottommost layer, or can be specified to be placed into
the same layer or a layer preceding/following that of a given reference node.
[To the corresponding section in the yFiles Developer's Guide...]
New Label Customization Support
-
Class YLabel now supports user-defined configurations for node and
edge labels.
Configurations provide fine-grained control over all aspects of label look
and feel, and simplify the implementation of custom painting behavior for
labels.
Predefined configurations provide automatic line-wrapping according to a specified maximum width and/or height, including automatic cropping of the text's visual representation using an ellipsis character ("...") if necessary.
[To the corresponding section in the yFiles Developer's Guide...]
Full Viewer/Editor Support for Orthogonal Edge Paths
-
Class EditMode and its associated child modes provide advanced support
for edges having orthogonal paths.
Orthogonal edge paths in a drawing are consistently maintained during all kinds of user interaction. This includes in particular edge creation, moving edge segments, creating new bends/edge segments, and moving edge ports. Furthermore, resizing nodes and moving nodes/bends have also been modified to take orthogonal edge paths into account.CreateEdgeMode has been improved to support the creation of orthogonal edges. MovePortMode, HotSpotMode, MoveSelectionMode, and the new OrthogonalMoveBendsMode have been improved to treat orthogonally routed edges specially so that they will always stay orthogonally routed during user interactions.
[To the corresponding section in the yFiles Developer's Guide...]
New Magnifying Glass Tool
-
New view mode MagnifierViewMode provides a magnifying glass "tool"
which enables local zooming in a Graph2DView.
[To the corresponding section in the yFiles Developer's Guide...]
New Compact Orthogonal Layout Algorithm
-
New orthogonal layout class CompactOrthogonalLayouter
uses a divide-and-conquer approach to achieve compact orthogonal layouts that
fit into, respectively are near, a desired aspect ratio.
CompactOrthogonalLayouter is an extension of new layout stage class PartitionLayouter which offers general support for a four-phase layout process where node partitions are found according to a customizable scheme, then a layout is calculated for each partition, afterwards the partitions are arranged in a compact manner, and finally their inter-connecting edges are routed.New layout module class CompactOrthogonalLayoutModule demonstrates how to set up compact orthogonal layout.
[To the corresponding section in the yFiles Developer's Guide...]
New Line-Wrapping Layout Algorithm
-
New layout stage class GraphLayoutLineWrapper can be used to 'line-wrap'
or 'column-wrap' graph layouts.
GraphLayoutLineWrapper allows to specify width (height) or aspect ratio for
the resulting line-wrapped (column-wrapped) diagram.
[To the corresponding section in the yFiles Developer's Guide...]
Orthogonal Edge Router Enhanced
-
In addition to the concept of port constraints, class OrthogonalEdgeRouter
now also provides support for PortCandidates, which can be used to specify
a set of allowed connection points for an edge end.
[To the corresponding section in the yFiles Developer's Guide...]
New Orthogonal Edge Routing Algorithm
-
Class ChannelEdgeRouter has been added to the suite of orthogonal
edge routing algorithms.
It uses a two step approach to find orthogonal edge routes and nicely exposes
bus-like structures, i.e., sets of parallel edges between common nodes.
[To the corresponding section in the yFiles Developer's Guide...]
|
|
|
|
|
| Line-wrapped layout | Magnifying glass | Incremental grouping | Label configurations |
Minor Features Added
Automatic Layout
- Class ComponentLayouter now supports arranging components from sketch and introduces a new data provider look-up key to allow external declaration of components via a data provider.
- New layout stage class PortConstraintEnforcementStage can be used to enforce that a layout algorithm will not change the relative coordinates of ports that are associated with a strong port constraint.
- Class DefaultLayoutGraph now allows to specify multiple labels per node.
- SmartOrganicLayouter optionally uses a smarter component layouting technique if a subset of nodes should be arranged only.
- ShuffleLayouter introduces a new data provider look-up key to enable specification of nodes that should be pinned to their locations during shuffling.
- Improved handling of port constraints with bad orthogonal edges in OrthogonalEdgeRouter.
Input and Output
- Class Graph2DPrinter optionally adds a footer drawable below a printed graph.
- Improved GML parsing and encoding of numbers and unicode entities in GMLIOHandler.
Viewer/Editor Interaction
- New class HierarchyTreeTransferHandler adds drag-and-drop functionality to HierarchyJTree which allows changing the graph hierarchy using simple mouse drag gestures.
- Graph2DViewActions adds a 'Select All' action that is bound to Ctrl-A, resp. Command-A (on Mac OS X). Also, usage of this class has been simplified.
-
Graph2DView introduces new client property "
UnitIncrementPixels" which allows to specify the unit increment of the scroll bars in view coordinates.
Realizers and Rendering
- Class DefaultGraph2DRenderer provides new methods that allow for partitioning the rendering order into several layers. Sloppy painting now also supports the various painting orders.
- Graph2DView features new client properties and new method paintSelectionBox that enable extensive customization of selection box look. The client properties include selection box stroke, color, fill color, and shape.
- YLabel enables programmatically specifying a label's size along with an option to automatically adjust the size of a (node) label to the size of the node it belongs to.
- Graph2DUndoManager allows to control whether the selection state of realizers should be adjusted via method setSelectionStateAdjusting.
- New view mode class OrthogonalMoveBendsMode that can be used to conveniently edit orthogonally routed edges. It supports moving and creating new bends/edge segments in such a way that an edge's path is always orthogonal.
- Additional getter methods in ViewMode allow to determine the parent and child ViewModes.
- CreateEdgeMode optionally cancels accidental edge creation early on. See method setEarlyEdgeCancelingEnabled.
- Class HierarchyTreeSelectionModel optionally disallows mixed selections of nodes and edges. See method setMixedSelectionAllowed.
-
Graph2D uses automatic dirty flagging for edges that were changed
using one of the
changeEdgeandreverseEdgemethods. - HitInfo adds new convenient constructors for hit-testing with focus on only a specified type of graph elements.
Graph Structure Functionality
- New utility class GraphCopier makes it easy to copy a graph's contents to another graph or create a copy of a graph.
- YList provides new method getCell to retrieve a list cell by index.
Language Support
-
New utility class Generics provides support for Java 5 language features
enabling convenient iteration over the graph structure using the enhanced
forloop construct.
Demos Added
- IncrementalHierarchicGroupDemo shows how IncrementalHierarchicLayouter can be used to fully or incrementally layout hierarchically organized graphs. The demo supports automatic re-layout after expanding folder nodes and collapsing group nodes.
- MagnifierViewModeDemo features the magnifying glass "tool" which enables local zooming in a Graph2DView.
- EdgeConnectorDemo demonstrates edge-to-edge connections (i.e., edges between edges) and connections between nodes and edges in the view.
- DendrogramLayouterDemo demonstrates dendrogram-like tree layout.
- YLabelConfigurationDemo shows how to customize the rendering of labels.
- OrthogonalEdgeViewModeDemo demonstrates the ability of EditMode and its minor view modes to deal with orthogonally routed edges.
Incompatible API Changes
-
YLabel: removed method
setSize(double, double). Calling this method had not the desired effect and therefore made no sense. setContentSize has been introduced as a replacement that can now be used to specify the size of a label's content. -
NodeLabel: static field
AUTOSIZE_CONTENThas been moved to superclass YLabel - Graph: calls to disposeNodeMap or disposeEdgeMap will now throw IllegalArgumentException if the given map had not been created with this specific instance. Dispose your maps on the correct Graph to avoid those exceptions.
-
Graph2DView: corrected method name
getVerticalScrollBarPolicyto setVerticalScrollBarPolicy -
Removed deprecated
listenersfield of class Graph and switched to a better performing internal implementation. - Removed deprecated API in YLabel in favor of setBackgroundColor.
- Graph2DViewActions: now by default includes a new 'Select All' action that is bound to Ctrl-A, resp. Command-A (on Mac OS X)
Bugfixes
- RemoveOverlapsLayoutStage: for certain input graphs the minimum distances between nodes were much larger than necessary
- Fixed a possible ClassCastException when using PCListOptimizer.









