yFiles FLEX Release Notes
yFiles FLEX version 1.6 is the newest major release available. The latest release is version 1.6.0.1.
The current version of the yFiles FLEX Client Layout Extension is 1.2.0.1. To learn more about the technical requirements and feature enhancements of this version, please refer to the corresponding release notes.
Technical Requirements
- yFiles FLEX applications can be developed either using the Flex 3 SDK or using the Flex 4 SDK.
- Running Flex 3 applications requires the Adobe Flash Player 9 (or higher) to be installed on the client. Flex 4 applications require Adobe Flash Player 10.
- For automatic graph layout on the server, either yFiles for Java Complete (2.8 series) or yFiles.NET Complete (3.4 series).
- yFiles FLEX (Java Server Bundle): A servlet container (for example, Apache Tomcat), Oracle J2RE 1.4 (or higher).
- yFiles FLEX (.NET Server Bundle): Microsoft .NET Framework 3.5 (or higher), Visual Studio recommended.
yFiles FLEX 1.6 Changes Since 1.5
General
- The bundled yFiles for Java has been updated to version 2.8.0.2.
- The bundled yFiles.NET has been updated to version 3.4.
Major New Features
|
|
|
|
| New bus-style edge router |
Many new layout demos |
Layout support for rotated labels |
New rotated slider edge label models
- The new edge label model
com.yworks.graph.model.RotatedSliderEdgeLabelModelhas been added that combines the advantages of the oldcom.yworks.graph.model.SliderEdgeLabelModeland thecom.yworks.graph.model.RotatingEdgeLabelModel. It provides label positions either centered on the edge path or at a specified distance on either of its sides. The rotation angle of the label can be defined as absolute value or as relative to the closest edge segment. - Java server side support for RotatedSliderEdgeLabelModel has been added including a mapping mechanism
to the
y.layout.RotatedSliderEdgeLabelModel. - The new edge label model
com.yworks.graph.model.RotatedSideSliderEdgeLabelModeloffers a behavior similar to theRotatedSliderEdgeLabelModelbut provides label positions on both sides of the edge path.
Automatic Layout (Java/.NET bundle versions and Client Layout Extension)
-
New support for rotated labels (e.g. using the
com.yworks.graph.model.RotatedSliderEdgeLabelModelor thecom.yworks.graph.model.RotatedSideSliderEdgeLabelModelintroduced in yFiles FLEX 1.6) in the 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. -
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. -
OrthogonalEdgeRouter: Added support for monotonic path restrictions. Such restrictions specify that edges should be routed monotonically in vertical and/or horizontal direction. -
IncrementalHierarchicLayouter: Added DataProvider keyCRITICAL_EDGE_DPKEYthat 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 option to straighten edges which 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 for PortCandidateSets that allow to specify the available port candidates at a node.
Improvements
Client
- New
com.yworks.graph.model.CompositeLabelModeladded that can be used to combine othercom.yworks.graph.model.ILabelModels, provides possible parameters of all combined models and finds the best parameter for a given label layout out of these. - The new
com.yworks.graph.model.DescriptorWrapperLabelModelcan be used to wrap an existing edge or node label model and decorate it with ancom.yworks.graph.model.ILabelCandidateDescriptor. - The concept of label candidate descriptors has been added that allows to describe additional properties
of candidate
ILabelModelParameters that can be used by automatic labeling algorithms. - Convenience methods
setCenter,getBoundsandcreateFromOrientedRectangleadded tocom.yworks.canvas.geom.OrientedRectangle. - Static convenience methods
distanceBetweenRectanglesandpointsAreEqualadded tocom.yworks.canvas.geom.GeomSupport. - The method
getSnapLineshas been added to thecom.yworks.graph.input.snapLines.NodeReshapeSnapResultProviderto simplify the customization of snapping during a node resize gesture. It is used to provide the snap lines that shall be checked for valid snap results. - Method
pickBestParameteradded tocom.yworks.graph.model.DefaultLabelModelParameterFinderthat returns the label model parameter from a given iterator that best matches a given label layout. - Optional parameters for the properties
angle,distanceandedgeRelativeDistancehave been added to the constructor ofcom.yworks.graph.model.RotatingEdgeLabelModel. autoFlipproperty added to thecom.yworks.graph.drawing.SimpleLabelStylethat allows to disable the automatic flipping of the label text if it would be upside-down.- New support class
com.yworks.canvas.TagChangedInvalidatorallows to automatically trigger a repaint when the user object assigned to model item changes. - The new method
zoomToRectofcom.yworks.canvas.CanvasComponentallows to conveniently adjust the view port to show a given rectangle in world coordinates. The optional parametermaxZoomallows to specify a maximum zoom level that shall be used by this operation. - The new utility class
com.yworks.canvas.input.HitTestUtiloffers the static methodgetClosestHits()that filters those hits from a given list ofIModelItemss that are closest to the given location. - The new error event
com.yworks.graph.anim.GraphMorphErrorEventis dispatched bycom.yworks.ui.GraphCanvasComponentif an error occurs during a morph operation. - Hit testing has been improved to use the closest
IModelIteminside the hit radius if noIModelItemis hit directly. Previously the distance from the location hasn't been considered as long as it didn't exceed the hit radius. - The
com.yworks.io.graphml.reader.deserializer.ReflectionBasedDeserializernow always prefers to use thecom.yworks.support.MarkupExtensionof a class over instantiating the class directly. Particularly this is now the case if the class and its extension are in different packages but these packages are mapped to the same namespace in thecom.yworks.io.SymbolicPackageNameRegistry. Furthermore it is more tolerant when the attribute or property names of the parsed XML node and the target class only differ in upper and lower case. - The
com.yworks.graph.input.snapLines.NodeReshapeSnapResultProviderthat is used by default to provide snap results for node resize gestures now supports snapping to the additional snap lines provided by thegetAdditionalSnapLinesmethod of thecom.yworks.graph.input.snapLines.GraphSnapContext. - The
com.yworks.graph.model.GenericLabelModelnow supports to pass ancom.yworks.graph.model.ILabelCandidateDescriptorwhen adding a label model parameter. This descriptor is returned if the context retrieved via theGenericLabelModel'sgetContext()method is queried for aILabelCandidateDescriptor. - Method
adjustContentRectof thecom.yworks.graph.input.GraphEditorInputModenow only adds an undo unit to the undo queue if the content rectangle changed. - Class
com.yworks.ui.tree.HierarchyTreeViewnow extendsmx.collections.ArrayCollectioninstead of implementingmx.collections.ICollectionViewandmx.core.IMXMLObjectitself. This was necessary to work around an incompatible API change of the Adobe FLEX 4.5 SDK. - The
inputModeproperty is now the default property ofcom.yworks.ui.GraphCanvasComponent. - The domain check in the license validation has been made case insensitive.
Server (Java)
- Improved support for (de)serialization via MarkupExtensions.
- The
com.yworks.yfiles.server.graphml.flexio.deserializer.ReflectionBasedDeserializernow always prefers to use thecom.yworks.support.MarkupExtensionof a class over instantiating the class directly. com.yworks.yfiles.server.graphml.flexio.data.ShapeNodeStylenow provides constants for all shapes which are supported by the client.
Server (.NET)
- Added support class for the client's ShinyPlateNodeStyle:
yWorks.yFiles.Graph.Web.Style.Markup.ShinyPlateNodeStyle - The insets of
yWorks.yFiles.Graph.Web.Style.Markup.CollapsibleNodeStyleDecoratornow are taken into account for layouts. - The automatic mapper deserialization is more tolerant with missing default values of simple type.
Demos
- The Business Process Diagram Demo has been updated. It now uses a PartitionGrid to configure the
layout on server side and the
TemplateNodeStyleto visualize swim lanes and pools. - .NET server side support for the Business Process Diagram Demo has been added.
- The new
EdgeLabelingDemoshows how to configure different edge label models as well as how to apply the generic edge labeling algorithm. - The new
IncrementalHierarchicLayouterDemoshows how the IncrementalHierarchicLayouter can be used together with custom user interaction functionality. - The new
LayerConstraintsDemoshows how to use layer constraints with the IncrementalHierarchicLayouter to restrict the node layering. - The new
MixedLayoutDemoshows how to apply different layouts to group nodes and their contents. - The new
SequenceConstraintsDemoshows how to use sequence constraints with the IncrementalHierarchicLayouter to restrict the node sequencing. - The
SwimlaneDemonow provides functionality to move nodes to different swim lanes. - The new
PortCandidateDemoshows how PortCandidateSets can be used with IncrementalHierarchicLayouter to control from what side edges connect to certain node types in the automatic layout process. - The
demo.components.IconButtoncan now be used with scalable icons like SVG.
Bugfixes
Client
- Bug in
com.yworks.io.graphml.realizer.CompatResourceInputHandlerremoved that prevented the input handler to accept any key. com.yworks.graph.input.CreateEdgeInputModenow cancels the edge creation if the graph structure changes during the edge creation gesture which lead to illegal states.- Bug removed that caused an exception if a node was moved with an active
GraphSnapContextwhile noINodeSnapResultProvidercould be found in the node's lookup. - Bug in
com.yworks.graph.drawing.IconLabelStyleRendererremoved that could break the rendering when it was used as renderer of ancom.yworks.graph.drawing.IconLabelStyleDecorator. - Bug fixed that could break the node reparenting if a custom
com.yworks.graph.model.IHitTestIteratorwas added to the lookup chain. com.yworks.graph.input.NodeDropInputModenow handles ports correctly.- Small memory leak fixed that happened when creating an edge with deactivated snapping.
- Creating edges and moving labels will now correctly update the graph bounds.
- Bridges will now be correctly printed.
- Values of mappers that have been added to the
com.yworks.io.graphml.GraphMLIOHandlerorcom.yworks.remote.RoundtripHandlerhaving simple type have always been parsed and set asStringvalues instead of their specified type (likeBooleanorint). - The
com.yworks.io.graphml.writer.serializer.LineTypeSerializernow supports dashed-dottedLineTypes. - Fixed a possible null pointer error in
com.yworks.io.graphml.reader.EdgeViewStateInputHandler. - Method
isExpandedof thecom.yworks.graph.model.FoldedGraphnow throws a meaningful error when it is queried for a node which is not in the master graph. com.yworks.io.graphml.reader.deserializer.ReflectionBasedDeserializernow handles properties of the typecom.yworks.support.IEnumcorrectly.- Fixed a bug which affected drawing of dashed curves when a transformation was applied
on the
YGraphicscontext. - Fixed a possible null pointer error when assigning an edge to another port.
- Fixed bugs in the static method
com.yworks.canvas.geom.GeomSupport.rectangleIntersectsOriented()that caused wrong results. - Fixed a bug that could cause a wrong graph selection to be used when the
GraphEditorInputModewas installed too late. com.yworks.remote.RoundtripHandler.addMapperAttribute()replaces missing names with tag now.- Fixed the GraphML deserialization of rectangles sent from a .NET server.
- Fixed a bug that could cause
com.yworks.graph.input.HandleInputMode.addHandle()to break. - Fixed a bug in
com.yworks.graph.input.snapLines.GraphSnapContextthat caused its propertycollectPortSnapLinesto be ignored.
Server (Java)
- Bug in method
syncLabels(y.base.Edge edge, boolean createIfNotExisting)incom.yworks.yfiles.server.graphml.flexio.FlexIOToolsremoved that sometimes prevented existing edge layouts to be synchronized with the location described by the corresponding label model parameter.
Server (.NET)
- Fixed a bug in
yWorks.yFiles.Graph.Web.GraphRoundtripSupportwhich prevented handling node insets if folding was enabled.
Incompatible Changes
Client
- Method
getContext(label:ILabel, parameter:ILabelModelParameter):ILookupwas added to thecom.yworks.graph.model.ILabelModelinterface to provide a lookup context for a combination of label and parameter. This method is used to lookup ancom.yworks.graph.model.ILabelCandidateDescriptorfor such a combination. Custom implementations may returncom.yworks.support.Lookups.EMPTYif they don't want to provide a label candidate descriptor. - If a mapper had been added to the
com.yworks.io.graphml.GraphMLIOHandlerorcom.yworks.remote.RoundtripHandlerfor values of simple type, these values have wrongly been parsed and set asStringvalues instead of parsing theseStrings to the set type (likeBooleanorint). Custom code that works around this bug by looking up the values asStrings and converting them to the correct type itself can now be changed to directly lookup the values as e.g.Booleanorint. - In the interface
com.yworks.io.graphml.reader.IAttributeFactorythe type of thevalueparameter of the methodcreateAttributehas been changed fromStringto*to fix the bug mentioned above. - The signature of the constructor of
com.yworks.io.graphml.reader.AttributeInputHandlerhas been changed topublic function AttributeInputHandler(attrName:String, scopeType:String, contentType:String, attributeFactory:IAttributeFactory).
Server (.NET)
-
The reflection based serialization classes have been moved into the yFilesViewer assembly.
Thus, the namespace of the XmlnsDefinition and XmlnsPrefix attributes has been changed
from
yWorks.yFiles.Graph.Web.GraphML.Compat.SupporttoyWorks.Canvas.Support.
The following classes are now deprecated
com.yworks.graph.drawing.ComponentNodeStyleshould be replaced by the more flexible and better supportedcom.yworks.graph.drawing.TemplateNodeStyle.com.yworks.graph.model.SliderEdgeLabelModelandcom.yworks.graph.model.RotatingEdgeLabelModelshould be replaced by one of the new label modelscom.yworks.graph.model.RotatedSliderEdgeLabelModelorcom.yworks.graph.model.RotatedSideSliderEdgeLabelModelwhich combine the features of the old edge label models.









