yFiles.NET Versionsinformationen
Version 4.1 von yFiles.NET ist das aktuelle Major Release.
Sie bringt viele neue Features und ist fast vollständig API-kompatibel zur
4.0-er Versionsserie.
Die aktuelle Versionsnummer von yFiles.NET ist 4.1.0.1.
Technische Voraussetzungen
- Visual Studio 2008 oder 2010 für die Softwareentwicklung mit yFiles.NET
- Anwendungen, die auf yFiles.NET Complete bzw. yFiles.NET Viewer basieren, benötigen die Microsoft .NET Framework 3.5 (oder höher) Runtime. Anwendungen, die auf yFiles.NET Layout basieren, benötigen die Microsoft .NET Framework 2.0 (oder höher) Runtime.
- Ein Browser für die HTML Dokumentation.
- Ein Microsoft Windows Betriebssystem, das Unterstützung für die .NET Plattform bietet.
yFiles.NET 4.1 - Änderungen zu Version 4.0.1 (englisch)
Major Features Added
|
|
|
|
| Extensively enhanced swimlane support |
New bus-style edge router |
Layout support for rotated labels |
New Comprehensive Support for Swimlane Diagrams
-
New model class
yWorks.yFiles.UI.Model.Tableprovides extensive support for tabular presentation of subgraphs which is well suited for the visual presentation of swimlane layouts.
Flexible visualization for table elements by means of existing node styles is provided by implementations of theyWorks.yFiles.UI.Drawing.ITableNodeStyleinterface.
[To the corresponding section in the yFiles.NET Developer's Guide...] -
New dedicated InputMode
yWorks.yFiles.UI.Input.TableEditorInputModewhich can be used either standalone or as a child mode ofyWorks.yFiles.UI.Input.GraphEditorInputModeand which provides support for user interaction specific to the tabular data representation of an associated node.
[To the corresponding section in the yFiles.NET Developer's Guide...] -
New support class
TableLayoutConfiguratorcan automatically create a suitable partition grid setup from existing table structures in a graph. Also,LayoutExecutorhas been enhanced to optionally configure table specific layout features. [To the corresponding section in the yFiles.NET Developer's Guide...] -
The
Demo.yFiles.Graph.TableEditordemo demonstrates the capabilities of table visualization editing, as well as automatic layout of swimlane diagrams.
Visual enhancements
-
Added new edge label models
RotatedSliderEdgeLabelModelandRotatedSideSliderEdgeLabelModelwhich allow placement of rotated labels on a continuous set of positions along both sides of an edge or directly on the edge path.
Automatic Layout
-
New support for rotated labels (e.g. using the new
RotatedSliderEdgeLabelModelorRotatedSideSliderEdgeLabelModel) in the yFiles generic labeling algorithms. -
PartialLayouter: A new layout algorithm for partial layouts. This layout algorithm changes the coordinates for a given set of graph elements (called partial elements). The location or size of the remaining elements (called fixed elements) is not allowed to change. The layout algorithm aims to place the partial elements such that the resulting drawing (including the fixed elements) has a good quality with respect to common graph drawing aesthetics.
PartialLayoutModulerepresents an interactive configurator and launcher for this layout algorithm. -
BusRouter: A new orthogonal bus-style edge routing algorithm. This algorithm combines the large number of edges of complete subgraphs in a concise, tree-like structure that consists only of vertical and horizontal line segments. The positions of the nodes in a graph are not altered by this algorithm.
BusRouterModulerepresents an interactive configurator and launcher for this layout algorithm. -
OrthogonalEdgeRouter: Added support for monotonic path restrictions. Such restrictions specify that edges should be routed monotonically in vertical and/or horizontal direction. The restrictions can be set using theMonotonicPathRestrictionproperty. -
IncrementalHierarchicLayouter: Added data provider keyCriticalEdgeDpKeythat allows to specify a priority value for edges that are part of critical paths. The layouter tries to vertically align each node pair that is connected by such a "critical" edge (an edge that has a non-zero, positive priority value). Conflicts between different critical edges are resolved in favor of the higher priority. -
SimplexNodePlacer: Added optionStraightenEdgeswhich allows to specify whether or not a postprocessing step should be applied that tries to remove some bends. Enabling this option may violate some minimum distances specified by the user. -
OrthogonalEdgeRouter: Added support forPortCandidateSets that allow to specify the available port candidates at a node.
Minor Features Added
CanvasControlnow offers a method that yields theVisualfor a givenICanvasObject. This can be leveraged by UI testing tools.- New class
NodeStylePortStyleAdaptercan be used to reuse existingINodeStyleimplementations for port visualization. GridPaintable's pens can now be customized for all grid styles.
Automatic Layout
-
New layout stage class
PartitionGridRouterStageenablesOrthogonalEdgeRouterto properly route edges within a partition grid. -
RecursiveGroupLayouter: Added data provider keyGroupNodeLayouterDpKeythat allows an easier way to specify the layout algorithm used for recursive group nodes. Furthermore, it allows to specify non-recursive group nodes, i.e., group nodes whose contents are laid out using theILayouterinstance specified by the nearest predecessor of the group node (with respect to the grouping hierarchy) which is associated with an ILayouter. -
TreeLayouter: Added new support for child placement policies that can be used to achieve more compact tree layouts. SeeChildPlacementPolicy. -
TreeLayouter: Added new global layering option that ensures that large nodes never span more than their layer. SeeEnforceGlobalLayering. -
OrthogonalEdgeRouter: Added support for considering node labels, seeConsiderNodeLabels. -
CircularLayouter: Added data provider keyCircleIdHolderDpKeythat allows to obtain a mapping between nodes and the corresponding circle IDs. -
OrthogonalEdgeRouter: Added new routing styleRoutingStyle.Balancedwhich is based on the existingRoutingStyle.Prefermiddlebut draws segments between bends of the same direction (U-style turns) the short way.
Improvements
DropInputModehas been improved to capture the start of a drag enter gesture in cases where the drop target that is hit first would also accept the drag enter event.- All built in node styles have been modified to allow the CanvasControl to accept drop enter events even if they are hit first.
- License failures in the algorithms assembly are reported more prominently when used through
LayoutExecutorand related convenience methods. WaitInputModeis automatically enabled while file I/O commands are executed.GraphEditorInputMode.DeleteSelectionnow doesn't create an empty Undo edit if nothing would be deleted at all.CreateEdgeInputMode:UpdateEdgeStyleis now called after the source port candidate has been determined.Mouse2DEventTypesnow also includes the case where mouse capture is lost. All existing input modes have been improved to take advantage of this event, where appropriate.
Automatic Layout
-
LayoutExtensions: Added and improved convenience methods that deal with sequence and layer constraints. -
IncrementalHierarchicLayouter: Enhanced support for fixed nodes. -
GroupNodeHider: Several layout algorithms (all tree layouters, circular, all orthogonal layouters, random, the fixed group layout stage) assigned relatively small dimensions to empty group nodes. Some of them also moved these nodes to (0,0). None of these layout algorithms treats groups directly, instead they use the group node hider. The group node hider now optionally does not hide empty groups (HidingEmptyGroupNodes) enabling that these can be treated like normal nodes. This option is now used where appropriate. Note that some layout algorithms may still shrink empty group nodes depending on the particular choice of parameters, e.g., orthogonal layout with uniform node sizes. -
OrientationLayouter: Node insets as well as port constraints are now also translated correctly for each possible orientation.
Demos
-
Added new
Demo.yFiles.Layout.MixedLayoutdemo that shows how to recursively apply different layout algorithms to the contents of group nodes. -
Added new
Demo.yFiles.Layout.PartialLayoutdemo that presents specific setup of the new partial layout support in conjunction with Circular, Hierarchic, Organic, and Orthogonal Layout. -
The new
Demo.yFiles.Layout.LayerConstraintsdemo shows how to use layer constraints with the IncrementalHierarchicLayouter to restrict the node layering. -
The new
Demo.yFiles.Layout.SequenceConstraintsdemo shows how to use sequence constraints with the IncrementalHierarchicLayouter to restrict the node sequencing. -
The new
Demo.yFiles.Layout.PortCandidatedemo shows how PortCandidateSets can be used with IncrementalHierarchicLayouter to control from what side edges connect to certain node types in the automatic layout process.
It also show-cases a custom node style that displays simple flowchart symbols and integrated port candidate visualization. -
Added new
Demo.yFiles.Layout.LogicGatedemo that shows how to apply fixed PortConstraints to a layout and how to use PortCandidates for interactive edge creation (via IPortCandidateProvider).
It also show-cases a custom node style that displays logic gate symbols. -
Added new
Demo.yFiles.Layout.GenericTreedemo that shows the effects of different NodePlacer implementations on a node and its subtree(s) in a tree layout calculated by GenericTreeLayouter. -
The new
Demo.yFiles.Layout.EdgeLabelingdemo shows how to configure different edge label models as well as how to apply the generic edge labeling algorithm. -
The new
Demo.yFiles.Layout.NodeLabelingdemo shows how to use the node label models in conjunction with the yFiles generic labeling algorithms. -
Added new
Demo.yFiles.Graph.BusinessProcessDiagramdemo that presents bow to create, edit, and lay out business process diagrams that adhere to the Business Process Modeling Notation. -
The new
Demo.yFiles.Layout.BusRouterDemoshows how to use the orthogonal bus-style edge router.
Bugfixes
- Resizing nodes interactively did not make use of additional snap lines from the
GraphSnapContext. - The expand and collapse group node commands did not execute in case the
UseCurrentItemForCommandproperty was being used. NavigationInputMode.ExitGroupraised theGroupEnteredevent instead of theGroupExitedevent.CreateEdgeInputModestarted calculation of the target port candidates too early and did not remove the highlighting of the target node if the creation was canceled early during the gesture.- A race condition in the license verification mechanism could lead to license failures in multi-threaded environments.
- When no license information has been embedded during compile time, the license was searched in the filesystem during runtime, instead of resulting in a license failure.
- A memory leak in
CreateEdgeInputModemade cleaning up a GraphControl impossible after an edge had been created interactively using that mode with snapping disabled. - CreateEdgeInputMode's
GetSourcePortCandidatemethod was sometimes invoked with the wrong location. - MouseHoverInputMode now reacts during mouse drags, too and method
Showrespects parameter if it differs from the mouse location. - Mouse events were being redispatched, even if the mouse was outside the GraphControl. This resulted in tooltips being displayed and other potential issues when the overview was used to move the viewport.
ClickInputMode.ValidHitTestablewas not always queried in certain double click configurations.- Minimum node size was not automatically provided to the algorithms library by LayoutGraphAdapter.
Animator.AnimateAndWaitdid not update the control if called from the event dispatching thread.- Fixed multiple issues related to GraphML (de)serialization of
IDictionaries. - Content properties that are writable and have a collection type were not deserialized correctly.
CanvasControl.FitContentViewMarginswas never used.- The inline label text editor used by
TextEditorInputModecould not handle Unix style line breaks correctly. - The
GraphClipboarddid not always copy all state of items that were invisible in a folded graph view.
Automatic Layout
-
InteractiveOrganicLayouter: Fixed bug that prevented the calculation of any layout before the first call toWakeUp. -
ComponentLayouter: Fixed bug that caused a wrong component assignment if customized component IDs were used. -
IncrementalHierarchicLayouter: Fixed bug that sometimes caused an assignment of infinite coordinates to group nodes as well as to points of edges incident to group nodes. -
IncrementalHierarchicLayouter: Fixed bug that caused unnecessary crossings when using node grouping. - Overriding
yWorks.yFiles.Layout.Tree.DelegatingNodePlacer#GetLowerRightChildrenandGetUpperLeftChildrenhad no effect. - Fixed potential
IndexOutOfRangeExceptioninyWorks.yFiles.Layout.RotatedSliderEdgeLabelLayoutModel. - Fixed invalid cast in
yWorks.yFiles.Layout.Router.EdgeGroupRouterStage. - Fixed
NullReferenceExceptionwhen usingyWorks.yFiles.Orthogonal.OrthogonalLayouterin FromSketchMode. DrawingEmbedder: Fixed NullReferenceException caused by nodes having the same center.NetworkFlows: Fixed wrong calculation of the cut set returned by methodCalcMaxFlowMinCut(Graph, Node, Node, IDataProvider, IEdgeMap, INodeMap).EdgeGroupRouterStage: Fixed bug that caused violation of edge grouping constraints as well as port constraints.- Fixed potential race condition when trying to access the edge path during layout calculation.
Incompatible Changes
-
When
LayoutExecutor.Durationis 0, the viewport is now only moved whenAnimateViewportis true. -
yWorks.yFiles.Algorithms.Util.DoubleObjectPQ: Changed the type of parameterpriorityfrominttodoublefor methodsDecreasePriority,IncreasePriorityandChangePriority. -
OrientationLayouter: Changed behavior for mirrored orientations, i.e., there may be a fixed position offset between the layout results of the old and new version. The new version ensures that the position of elements not changed by the layout algorithm are kept fixed. -
Mouse2DEventTypeshas a new enumeration member 'LostCapture'. If cascades and switches over variables of this type might need to be adjusted to properly deal with this event type. -
LayoutGraphAdaptercan optionally create copies of node and edge styles during layout calculation. This is controlled by the new propertyCopyStyles. Utility classLayoutExecutorenables this feature if the layout is performed in a different thread. -
The
Cutcommand onGraphControlis now only enabled ifDeletableItemsallows the deletion of the currently selected nodes.









