ProductsServicesDownloadsNewsCompanyContact

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.RotatedSliderEdgeLabelModel has been added that combines the advantages of the old com.yworks.graph.model.SliderEdgeLabelModel and the com.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.RotatedSideSliderEdgeLabelModel offers a behavior similar to the RotatedSliderEdgeLabelModel but 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.RotatedSliderEdgeLabelModel or the com.yworks.graph.model.RotatedSideSliderEdgeLabelModel introduced 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 key CRITICAL_EDGE_DPKEY that 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.CompositeLabelModel added that can be used to combine other com.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.DescriptorWrapperLabelModel can be used to wrap an existing edge or node label model and decorate it with an com.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, getBounds and createFromOrientedRectangle added to com.yworks.canvas.geom.OrientedRectangle.
  • Static convenience methods distanceBetweenRectangles and pointsAreEqual added to com.yworks.canvas.geom.GeomSupport.
  • The method getSnapLines has been added to the com.yworks.graph.input.snapLines.NodeReshapeSnapResultProvider to 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 pickBestParameter added to com.yworks.graph.model.DefaultLabelModelParameterFinder that returns the label model parameter from a given iterator that best matches a given label layout.
  • Optional parameters for the properties angle, distance and edgeRelativeDistance have been added to the constructor of com.yworks.graph.model.RotatingEdgeLabelModel.
  • autoFlip property added to the com.yworks.graph.drawing.SimpleLabelStyle that allows to disable the automatic flipping of the label text if it would be upside-down.
  • New support class com.yworks.canvas.TagChangedInvalidator allows to automatically trigger a repaint when the user object assigned to model item changes.
  • The new method zoomToRect of com.yworks.canvas.CanvasComponent allows to conveniently adjust the view port to show a given rectangle in world coordinates. The optional parameter maxZoom allows to specify a maximum zoom level that shall be used by this operation.
  • The new utility class com.yworks.canvas.input.HitTestUtil offers the static method getClosestHits() that filters those hits from a given list of IModelItemss that are closest to the given location.
  • The new error event com.yworks.graph.anim.GraphMorphErrorEvent is dispatched by com.yworks.ui.GraphCanvasComponent if an error occurs during a morph operation.
  • Hit testing has been improved to use the closest IModelItem inside the hit radius if no IModelItem is 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.ReflectionBasedDeserializer now always prefers to use the com.yworks.support.MarkupExtension of 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 the com.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.NodeReshapeSnapResultProvider that is used by default to provide snap results for node resize gestures now supports snapping to the additional snap lines provided by the getAdditionalSnapLines method of the com.yworks.graph.input.snapLines.GraphSnapContext.
  • The com.yworks.graph.model.GenericLabelModel now supports to pass an com.yworks.graph.model.ILabelCandidateDescriptor when adding a label model parameter. This descriptor is returned if the context retrieved via the GenericLabelModel's getContext() method is queried for a ILabelCandidateDescriptor.
  • Method adjustContentRect of the com.yworks.graph.input.GraphEditorInputMode now only adds an undo unit to the undo queue if the content rectangle changed.
  • Class com.yworks.ui.tree.HierarchyTreeView now extends mx.collections.ArrayCollection instead of implementing mx.collections.ICollectionView and mx.core.IMXMLObject itself. This was necessary to work around an incompatible API change of the Adobe FLEX 4.5 SDK.
  • The inputMode property is now the default property of com.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.ReflectionBasedDeserializer now always prefers to use the com.yworks.support.MarkupExtension of a class over instantiating the class directly.
  • com.yworks.yfiles.server.graphml.flexio.data.ShapeNodeStyle now 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.CollapsibleNodeStyleDecorator now 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 TemplateNodeStyle to visualize swim lanes and pools.
  • .NET server side support for the Business Process Diagram Demo has been added.
  • The new EdgeLabelingDemo shows how to configure different edge label models as well as how to apply the generic edge labeling algorithm.
  • The new IncrementalHierarchicLayouterDemo shows how the IncrementalHierarchicLayouter can be used together with custom user interaction functionality.
  • The new LayerConstraintsDemo shows how to use layer constraints with the IncrementalHierarchicLayouter to restrict the node layering.
  • The new MixedLayoutDemo shows how to apply different layouts to group nodes and their contents.
  • The new SequenceConstraintsDemo shows how to use sequence constraints with the IncrementalHierarchicLayouter to restrict the node sequencing.
  • The SwimlaneDemo now provides functionality to move nodes to different swim lanes.
  • The new 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.
  • The demo.components.IconButton can now be used with scalable icons like SVG.

Bugfixes

Client

  • Bug in com.yworks.io.graphml.realizer.CompatResourceInputHandler removed that prevented the input handler to accept any key.
  • com.yworks.graph.input.CreateEdgeInputMode now 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 GraphSnapContext while no INodeSnapResultProvider could be found in the node's lookup.
  • Bug in com.yworks.graph.drawing.IconLabelStyleRenderer removed that could break the rendering when it was used as renderer of an com.yworks.graph.drawing.IconLabelStyleDecorator.
  • Bug fixed that could break the node reparenting if a custom com.yworks.graph.model.IHitTestIterator was added to the lookup chain.
  • com.yworks.graph.input.NodeDropInputMode now 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.GraphMLIOHandler or com.yworks.remote.RoundtripHandler having simple type have always been parsed and set as String values instead of their specified type (like Boolean or int).
  • The com.yworks.io.graphml.writer.serializer.LineTypeSerializer now supports dashed-dotted LineTypes.
  • Fixed a possible null pointer error in com.yworks.io.graphml.reader.EdgeViewStateInputHandler.
  • Method isExpanded of the com.yworks.graph.model.FoldedGraph now throws a meaningful error when it is queried for a node which is not in the master graph.
  • com.yworks.io.graphml.reader.deserializer.ReflectionBasedDeserializer now handles properties of the type com.yworks.support.IEnum correctly.
  • Fixed a bug which affected drawing of dashed curves when a transformation was applied on the YGraphics context.
  • 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 GraphEditorInputMode was 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.GraphSnapContext that caused its property collectPortSnapLines to be ignored.

Server (Java)

  • Bug in method syncLabels(y.base.Edge edge, boolean createIfNotExisting) in com.yworks.yfiles.server.graphml.flexio.FlexIOTools removed 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.GraphRoundtripSupport which prevented handling node insets if folding was enabled.

Incompatible Changes

Client

  • Method getContext(label:ILabel, parameter:ILabelModelParameter):ILookup was added to the com.yworks.graph.model.ILabelModel interface to provide a lookup context for a combination of label and parameter. This method is used to lookup an com.yworks.graph.model.ILabelCandidateDescriptor for such a combination. Custom implementations may return com.yworks.support.Lookups.EMPTY if they don't want to provide a label candidate descriptor.
  • If a mapper had been added to the com.yworks.io.graphml.GraphMLIOHandler or com.yworks.remote.RoundtripHandler for values of simple type, these values have wrongly been parsed and set as String values instead of parsing these Strings to the set type (like Boolean or int). Custom code that works around this bug by looking up the values as Strings and converting them to the correct type itself can now be changed to directly lookup the values as e.g. Boolean or int.
  • In the interface com.yworks.io.graphml.reader.IAttributeFactory the type of the value parameter of the method createAttribute has been changed from String to * to fix the bug mentioned above.
  • The signature of the constructor of com.yworks.io.graphml.reader.AttributeInputHandler has been changed to public 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.Support to yWorks.Canvas.Support.

The following classes are now deprecated

  • com.yworks.graph.drawing.ComponentNodeStyle should be replaced by the more flexible and better supported com.yworks.graph.drawing.TemplateNodeStyle.
  • com.yworks.graph.model.SliderEdgeLabelModel and com.yworks.graph.model.RotatingEdgeLabelModel should be replaced by one of the new label models com.yworks.graph.model.RotatedSliderEdgeLabelModel or com.yworks.graph.model.RotatedSideSliderEdgeLabelModel which combine the features of the old edge label models.