yFiles for Java Versionsinformationen
Version 2.9 von yFiles for Java ist das aktuelle Major Release. Es deckt eine Vielzahl neuer Anwendungsgebiete und Algorithmen ab, und ist fast vollständig API-kompatibel zur 2.8-er Versionsserie.
Technische Voraussetzungen
- Oracle J2SDK 1.4 oder höher zur Software Entwicklung mit yFiles.
- Oracle J2RE 1.4 oder höher, um yFiles Programme auszuführen.
- Ein Browser für die HTML Dokumentation.
- Ein Betriebssystem, das Java 2 unterstützt.
yFiles 2.9 - Änderungen zu 2.8.0.4 (englisch)
Major Features Added
|
|
|
|
| New multi-page layout algorithm |
New smart label models enable free positioning |
Many extensive new demos |
Viewer/Editor Interaction
-
New label models SmartNodeLabelModel and SmartEdgeLabelModel
enable free label placement of node labels and edge labels.
The label models provide smart dynamic behavior including support for automatic
label rotation corresponding to the direction of an edge label's associated
edge segment and fixed as well as proportional node label alignment with node
borders.
View mode class MoveLabelMode provides new dedicated support for interactive snapping of labels that use the new label models.
The SmartLabelModelDemo shows how to useSmartNodeLabelModelandSmartEdgeLabelModel, and how node labels and edge labels behave on interactive changes of nodes and edges, respectively.
[To the corresponding section in the yFiles Developer's Guide...] -
YRenderingHints: New rendering hints provide fine-grained control over
rendering details of graph elements.
The LevelOfDetailDemo presents the effects of using rendering hints to control the rendering process of elements in the view.
[To the corresponding section in the yFiles Developer's Guide...]
Layout
-
Class MultiPageLayouter is a new layout algorithm that
breaks apart a given graph into a set of smaller graphs so that each layout
of a small graph fits into a given width and height.
MultiPageLayoutDemo shows how to use classMultiPageLayouterto sub-divide large graphs into smaller bits of navigable information.
[To the corresponding section in the yFiles Developer's Guide...]
Minor Features Added
Viewer/Editor Interaction
- Added new dedicated HTML label configuration HtmlLabelConfiguration that supports event handling related to hyperlinks in HTML formatted labels.
- TooltipMode: Added a ViewMode that shows tooltips for all kinds of graph elements: nodes, edges, labels, and node ports. It is possible to enable/disable tooltips for all of these graph elements separately.
- LocalViewCreator: Added hierarchy awareness to LocalViewCreator.Neighborhood and LocalViewCreator.SourceAndTarget so real edge end nodes and ancestor nodes can be shown in a local view. This option can be set using method setHierarchyAware and is disabled by default.
- Graph2DViewActions.DeleteSelectionAction: Added element-type specific callback methods to allow client code to react to deletion events for edges, edge labels, bends, nodes, node labels, node ports, table columns, and table rows.
- ImageIoOutput: Added boolean option "Transparent Background" for PNG and GIF image formats.
- TableEditorFactory: Added new attribute ATTRIBUTE_EDITOR_LOCATION to specify where external item editors should appear.
- GroupNodeRealizer.StateChangeListener can be configured to retain the selection state of ProxyShapeNodeRealizer instances when exchanging delegate realizers.
- MoveLabelMode: New options for displaying the valid label candidates according to a label's label model.
Layout
- The orthogonal layout algorithms OrthogonalLayouter (OL), OrthogonalGroupLayouter (OGL), and DirectedOrthogonalLayouter (DOL) now support specifying a minimum first/last segment length. See the corresponding descriptions of EDGE_LAYOUT_DESCRIPTOR_DPKEY (in OL), EDGE_LAYOUT_DESCRIPTOR_DPKEY (in OGL), and EDGE_LAYOUT_DESCRIPTOR_DPKEY (in DOL), respectively.
- SimplexNodePlacer: Added an algorithm that reduces the number of bends. This option can be set using method setBendReductionEnabled and is enabled by default. Note: using this option increases the runtime of the IncrementalHierarchicLayouter. If the runtime exceeds the maximal duration the number of bends is not reduced.
- Added abstract class AbstractPortConstraintOptimizer, a partial implementation of interface PortConstraintOptimizer, to minimize the effort required to modify the port assignment after the sequencing phase of a hierarchic layout.
- TreeLayouter: When using port styles BORDER_CENTER_PORTS and BORDER_DISTRIBUTED_PORTS together with child placement policies CHILD_PLACEMENT_POLICY_LEAVES_STACKED, CHILD_PLACEMENT_POLICY_LEAVES_STACKED_LEFT, CHILD_PLACEMENT_POLICY_LEAVES_STACKED_RIGHT, and CHILD_PLACEMENT_POLICY_LEAVES_STACKED_LEFT_AND_RIGHT edges connect to the appropriate sides of their target nodes instead of to the top. Moreover, the order of outgoing edges no longer results in crossings for port style BORDER_DISTRIBUTED_PORTS.
- AbstractLabelingAlgorithm: Added DataProvider key LABEL_MODEL_DPKEY that can be used to temporarily specify the model of labels that is used by the labeling algorithm.
Analysis
- ShortestPaths: Added method shortestPair.
Improvements
- FamilyTreeLayouter: Improved the algorithm with respect to the number of edge crossings.
- PCListOptimizer: Improved the handling of port candidates and enhanced backloop routing support.
- MagnifierViewMode: Backgrounds of views that use DefaultBackgroundRenderer are now magnified by default, too.
-
Edge labels no longer use the line type of the edge for underlining text
but a solid line of width
1. -
Improved reading/writing realizer state from/to GraphML, i.e. the following
properties are now supported:
- EdgeRealizer
visible, - NodeRealizer
visible, - GroupNodeRealizer
groupDepthFillColorEnabled, - GroupNodeRealizer
closedGroupIcon, - GroupNodeRealizer
openGroupIcon
- EdgeRealizer
- Graph2DViewActions.CloseGroupsAction: When closing an inner group node and the resulting folder node is smaller than the group node was, the enclosing group's size will not change anymore.
- BezierEdgeRealizer and QuadCurveEdgeRealizer now always paint the auxiliary lines for selected edges as a solid line of width 1.
- HitInfoFactories.DefaultHitInfoFactory: The behavior of createHitInfo has been adjusted to match its documentation regarding the handling of node label hits for first hit only queries.
- Updated bundled yGuard bytecode obfuscator to version 2.4 which has support for Java 7 class files.
Demos
- The new GraphExplorerDemo shows how to successively explore large graphs.
-
Added new MultiPageLayoutDemo
that shows how to use class
MultiPageLayouterto sub-divide large graphs into smaller bits of navigable information. - The new EntityRelationshipDemo shows how to visualize and edit entity-relationship diagrams (ERD).
-
Added new SmartLabelModelDemo that
demonstrates how to use
SmartNodeLabelModelandSmartEdgeLabelModeland how both models behave on interactive changes of nodes and edges. - Added new HyperlinkDemo that demonstrates how to trigger and process hyperlink events for HTML formatted labels.
-
Added new FadingGroupStateIconDemo
that demonstrates how to fade in/out the group state icon when moving over group/folder
nodes using a custom
ViewMode. - Added new LevelOfDetailDemo that presents the effects of using rendering hints to control the rendering process of elements in the view.
- Extended the FlowchartDemo by a new dedicated layout algorithm for flowchart diagrams and added many new example diagrams.
Bugfixes
- LabelLayoutDataRefinement: Fixed ClassCastException due to wrong type of label model parameters.
- PortCandidate: Fixed bug in method getXOffsetForLayoutOrientation and getYOffsetForLayoutOrientation that caused wrong return results for some input combinations.
Incompatible Changes
- MoveLabelMode: Method cancelEditing no longer calls mouseReleasedLeft but mimics its previous behavior.
- RotatedSliderEdgeLabelModel: The angle set with method setAngle is now always applied in clockwise direction. Note: For cases where auto-rotation is enabled (see setAutoRotationEnabled) this is not a change to the current behavior.
- RotatedDiscreteEdgeLabelModel: The angle set with method setAngle is now always applied in clockwise direction. Note: For cases where auto-rotation is enabled (see setAutoRotationEnabled) this is not a change to the current behavior.









