yFiles FLEX Change Log

This file documents the feature enhancements and API changes to previous yFiles FLEX versions.

yFiles FLEX 1.9 changes since 1.8

General

Server (Java)

  • The bundled yFiles for Java release has been updated to version 2.12.0.1

Bugfixes

Server (Java)

  • Bug in com.yworks.yfiles.server.graphml.flexio.FlexIOTools fixed that broke committing the edge label layout for labels using a FreeEdgeLabelModel as part of an CompositeEdgeLabelModel.

yFiles FLEX 1.8 changes since 1.7

Major New Features

Client

  • The new com.yworks.canvas.ViewportLimiter can be used to restrict the region that is viewable in the canvas. The following convenience methods using ViewportLimiter have been added to class CanvasComponent:
    • setLimitedZoom(newZoom:Number):void
    • setLimitedViewport(target:IRectangle):void
    • setLimitedViewpoint(vp:Point):void
    • setLimitedCenter(center:Point):void
    • increaseZoom(factor:Number=1.2):void
    • decreaseZoom(factor:Number=1.2):void
    • get limitedMinZoom():Number

Server

  • EdgeRouter: A new edge routing algorithm that produces polyline edge routes. The segments of an edge are either orthogonal (i.e., the slope of each segment is a multiple of 90 degrees) or octilinear (i.e., the slope of each segment is a multiple of 45 degrees).
  • PolylineLayoutStage: A layout stage that adds polyline segments to the orthogonal edge paths of a graph.
  • Added support for octilinear edge routing to the IncrementalHierarchicLayouter. Different edge routing styles can be specified using class RoutingStyle.
  • PreferredPlacementDescriptor: A new descriptor that allows to specify advanced preferred placement information for edge labels.

Minor New Features

Demos

  • The new PreferredLabelPlacementDemo shows how to configure the PreferredPlacementDescriptor of labels and how this affects the label placement of different layouters. The demo also shows how the descriptors can be transferred to the server. Note that this demo will only work with a yFiles for Java server.

General

Server (Java)

  • The bundled yFiles for Java release has been updated to version 2.10.1
  • Dependencies to third party software from ACME Labs have been removed

Server (.NET)

  • The bundled yFiles.NET release has been updated to version 3.6

Improvements

Client

  • The com.yworks.ui.GraphCanvasComponent#morphGraph function always replaced label instances on update, causing the label selection to be lost. Labels will now be mapped to existing instances on update. This behavior can be reverted using the com.yworks.ui.GraphCanvasComponent#replaceLabelsOnUpdate property.

Demos and Tutorials

  • Added the new viewport limiter functionality to the OrgChartDemo: the viewable region is restricted to the content rectangle.
  • Added class demo/resources/Icons containing new icons for buttons.
  • Fixed some tutorial steps.
  • Fixed bug in MultiPageLayoutDemo that could lead to wrong page numbers.

Bugfixes

Client

  • Fixed a bug that prevented com.yworks.canvas.input.MultiplexingInputModes from correctly disabling their child modes when the enabled property is set to false.
  • Fixed a bug that caused the top and left margins passed to com.yworks.canvas.CanvasComponent#updateContentRect to be added to the resulting content rect twice.
  • Fixed com.yworks.graph.drawing.FilterNodeStyleDecorator.
  • Fixed com.yworks.graph.drawing.CollapsibleNodeStyleDecorator to handle UIComponents correctly.
  • Fixed com.yworks.graph.input.NodeDropInputMode to resize group nodes and table nodes correctly when a node is dropped.
  • Fixed deserialization of <y:LineType> elements. RGB colors are not read as ARGB anymore.
  • Fixed: changes to the insets of a table's stripe will not be ignored anymore in the com.yworks.graph.drawing.TableNodeStyleRenderer's updateDisplayObject method.
  • Fixed com.yworks.graph.input.TableEditorInputMode: when the input mode is (re-)installed and a stripe is already selected the stripe's selection state now is properly visually indicated.
  • Fixed: text rendering sometimes threw RangeError when trailing line breaks were removed by truncation.
  • Fixed: text rendering enabled unwanted word wrap in rare cases.
  • Fixed: HandleInputMode wasn't available as IInputModeContext.parentInputMode in the input mode context it passes to GraphSnapContext.initializeDrag.
  • Fixed: com.yworks.graph.drawing.ShinyPlateNodeStyleRenderer threw error when the style's fill was null.
  • Fixed GraphML parsing: empty entries in the node-2-id and edge-2-id maps are now parsed as null.
  • Fixed GraphML parsing: if folding is not enabled on the target graph folder contents are not parsed.
  • Fixed parsing of yFiles for Java GraphML: com.yworks.io.graphml.realizer.ProxyNodeRealizerSerializer can now handle other realizers than GroupNodeRealizers as inner realizers.
  • Fixed: com.yworks.canvas.HandleInputMode now can be canceled by other input modes.
  • Fixed: com.yworks.ui.GraphCanvasComponent#morphGraph didn't update the folding state if it changed during a roundtrip.
  • Fixed com.yworks.graph.input.NavigationInputMode and com.yworks.graph.drawing.CollapsibleNodeStyleDecoratorRenderer: parent nodes were not resized after expanding a child folder node.
  • Fixed clipboard: the sizes of nested group nodes were incorrectly auto-adjusted during paste operation.
  • Fixed: Recursive use of IconLabelStyleDecorator could lead to wrong icon placements.
  • Fixed: flashx.textLayout.formats.TextLayoutFormat now is properly serialized and deserialized.
  • Fixed possible type conversion errors in collection models.
  • Fixed bug in com.yworks.ui.GraphCanvasComponent.morphGraph() that could produce errors when using folding with a com.yworks.graph.model.MergingDummyEdgeConverter.

Server (Java)

  • Fixed a bug that prevented correct node label layout calculation for folder node labels with the com.yworks.yfiles.server.graphml.folding.FoldingLayoutStage.
  • Fixed: rare exception when executing some layouter via com.yworks.yfiles.server.graphml.folding.FoldedLayoutGraph's doLayout method.

yFiles FLEX 1.7 changes since 1.6.0.2

Major New Features

Client

  • New Comprehensive Support for Swimlane Diagrams
    • New model class com.yworks.graph.model.Table provides 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 the com.yworks.graph.drawing.ITableNodeStyle interface.
    • New dedicated InputMode com.yworks.graph.input.TableEditorInputMode which can be used either standalone or as a child mode of com.yworks.graph.input.GraphEditorInputMode and which provides support for user interaction specific to the tabular data representation of an associated node.
    • The TableEditorDemo and TableLayoutDemo demonstrate the capabilities of table visualization editing, as well as automatic layout of swimlane diagrams.
  • Advanced configuration options for the model items' render order
    • Different layering policies for edges, labels and ports can be used to pick a layering strategy best matching your use case. These policies for example include rendering ports and labels close to their owner or in a separate layer on top of all nodes.
    • The rendering order of model items in the same layer (like nodes on the same hierarchy level) can be changed using the raise(), lower(), toFront() and toBack() methods of the com.yworks.ui.GraphCanvasComponent's com.yworks.graph.model.GraphModelManager.
    • This rendering order (or z-order) can be persisted when serializing the graph to GraphML and reestablished on parsing the GraphML file.
    • The interface com.yworks.graph.model.IZOrderSupport has been added and is used to manage the z-order of the model items.
  • Improved rendering performance due to consistent usage of the new com.yworks.canvas.drawing.IDisplayObjectCreator interface.

Minor New Features

Client

  • The new styles com.yworks.graph.drawing.SimpleAbstractNodeStyle, com.yworks.graph.drawing.SimpleAbstractEdgeStyle, com.yworks.graph.drawing.SimpleAbstractPortStyle and com.yworks.graph.drawing.SimpleAbstractLabelStyle can be used as base classes for custom styles that want to use their own rendering and modify the shape related behavior like hit testing or edge intersection. Overriding their default implementations for those behaviors is easy to achieve as demonstrated in the new Custom Style Tutorial.
  • The new class com.yworks.graph.model.EdgeSelectionDisplayObjectCreator can be used to conveniently customize the visualization of selected edges.
  • The new com.yworks.remote.LoadHandler supports loading GraphML files directly from the client's file system. This class complements the com.yworks.remote.UploadHandler with a server independent variant.
  • The new com.yworks.remote.SaveHandler supports saving GraphML files directly to the client's file system. This class complements the com.yworks.remote.DownloadHandler with a server independent variant.
  • The new com.yworks.remote.ImageSaveHandler supports exporting the canvas as bitmap image directly to the client's file system. This class complements the com.yworks.remote.ImageExportHandler with a server independent variant.
  • The new com.yworks.graph.drawing.TLFLabelStyle can be used to draw labels with the Flex Text Engine and the Text Layout Framework.

General

  • The yFiles FLEX client libraries now don't include the Flex framework libraries anymore.

Server (Java)

  • The bundled yFiles for Java release has been updated to version 2.9.0.2

Server (.NET)

  • The bundled yFiles.NET release has been updated to version 3.5

Demos

  • The Flex 3 compatible demos are no longer provided.

Improvements

Client

  • All events now override the clone() method to return a clone of themselves.
  • com.yworks.canvas.input.MultiplexingInputMode now implements com.yworks.canvas.input.IConcurrentInputMode. Thus, MultiplexingInputModes themselves can now be sub modes of another multiplexing input mode.
  • Label editing: the com.yworks.graph.input.GraphEditorInputMode has a new labelEditableItems property and shouldLabelBeEdited() callback to allow to specify which labels can be edited.
  • An optional parameter of type com.yworks.support.ILookup has been added to all methods of com.yworks.support.ITypeConverter. It can be used to gather additional information for the conversion.
  • The hit testing for several node styles that are using a com.yworks.canvas.drawing.GeneralPath has been improved to allow for fuzzy hit testing.
  • The new property clickHitTestOrder was added to com.yworks.graph.input.GraphEditorInputMode. This property allows to configure the priority of graph items which are selected upon mouse clicks.
  • The utility method getGroupedGraph was added to com.yworks.graph.model.GroupedGraphUtil. It simplifies retrieving the IGroupedGraph instance from a passed IInputModeContext.
  • The utility method getTextSize was added to com.yworks.canvas.drawing.YGraphics and calculates the size a text String would need in a TextField if a specified TextFormat was used. It can be used e.g. in custom label style implementations to position the text.
  • The signature of the applyStroke method of com.yworks.canvas.drawing.YGraphics was changed. It now accepts two optional parameter bounds and origin that allow you to specify the bounds and the origin of the shape that the stroke is applied to which is mainly useful for gradient strokes.
  • Node reparenting: the com.yworks.graph.input.GraphEditorInputMode now dispatches an event of type com.yworks.graph.input.GraphEditorHierarchyEvent.NODE_REPARENTED if a node was reparented interactively.
  • The context for template styles (com.yworks.graph.drawing.TemplateStyleDataContext) now implements com.yworks.support.ILookup.
  • A com.yworks.support.LookupChain now dispatches a com.yworks.support.LookupChainEvent when a chain link was added or removed.
  • The com.yworks.util.ColorStruct class now has getter for the red, green and blue part of the set color.
  • When a roundtrip has been completed the com.yworks.remote.RoundtripHandler now always dispatches a RoundtripEvent.ROUNDTRIP_COMPLETE event, no matter whether the update property is set to false or true.
  • The com.yworks.graph.model.FilteredGraphWrapper can now be used as master graph for a FoldingManager.
  • The graph implementations now dispatch com.yworks.graph.model.GraphEvent's sub classes com.yworks.graph.model.NodeEvent, EdgeEvent, LabelEvent, PortEvent, and BendEvent instead of com.yworks.graph.model.GraphEvent. The new events provide access to the item's former owner after the element has been removed.
  • The method getSegmentCount was added to com.yworks.canvas.drawing.GeneralPath and returns the number of lineTo and close operations in this path.
  • The property actionButtonProviderDecorator has been added to com.yworks.graph.model.ItemDecorator to allow for easier decoration of the com.yworks.graph.input.IActionButtonProvider interface.
  • The static utility method polyLineIntersects was added to com.yworks.canvas.geom.GeomSupport and checks if a polygonal line intersects a rectangle.
  • The static utility method calculateSegmentTangent was added to com.yworks.canvas.geom.GeomSupport and calculates the tangent point and vector on a polygonal path at a given segment and ratio.
  • The property dragNodeCreator was added to com.yworks.graph.input.NodeDropInputMode to make customizing the input mode easier.
  • For com.yworks.graph.input.NodeDropInputMode and com.yworks.graph.input.StripeDropInputMode support has been added to hide the drag image while the node or stripe preview is displayed.
  • com.yworks.graph.input.GraphEditorInputMode: the property clickableItems and the callbacks shouldBeClickable, shouldBeClickSelectable, and shouldBeMarqueeSelectable were added to provide more control over selection and event dispatching. The callback shouldBeMarqueeSelectable was added to the com.yworks.canvas.input.MainInputMode as well.
  • The handling of embedded SWF classes by the com.yworks.graph.drawing.ImageNodeStyle has been improved so that cloned style instances reload the SWF data correctly.
  • The com.yworks.graph.drawing.ImageNodeStyle now can handle FXG images, too (Flex 4 only).
  • com.yworks.remote.RoundtripHandler has a new property requestTimeout which allows to set a timeout for server requests.
  • com.yworks.graph.input.GraphEditorInputMode offers more settings for auto adjustment of the content rect after user operations.
  • The print methods of com.yworks.canvas.CanvasComponent and com.yworks.canvas.CanvasPrinter as well as the export method of com.yworks.remote.ImageExportHandler now accept an optional Sprite parameter that can be used to pass a customized sprite instance for printing/export.
  • The com.yworks.canvas.input.ContextMenuInputMode has a new autoRegisterAtApplication property that per default sets the application's contextMenu property to its own ContextMenu instance.
  • Java style GraphML parsing: unknown realizers are parsed with a fallback realizer to parse their geometry, anyway. The fallback realizers can be set on the com.yworks.io.graphml.realizer.RealizerSerializerManager.
  • com.yworks.canvas.drawing.YGraphics.applyFill now applies its transformation matrix to given gradient fills.
  • Reduced memory usage of a model item: a mapper which supports lookup decoration now is created lazily.
  • Reduced memory usage of model items rendered by an IDisplayObjectCreator (e.g. TemplateNodeStyle: The paint support doesn't create an extra sprite anymore.
  • Made available scrolling-related properties on the CanvasComponent to facilitate customization of the canvas scrolling behavior: hasVerticalScrollBar, hasHorizontalScrollBar, minHorizontalScrollPosition, maxHorizontalScrollPosition, minVerticalScrollPosition,maxVerticalScrollPosition.
  • A protected fitContentCore() method is now available on CanvasComponent. As fitContent() just queues fitContentCore() for execution during the next validation, the fit content behavior can now be adjusted by overriding fitContentCore().
  • If no fill or stroke is set for an IShapeNodeStyle element in a GraphML file, the GraphML parser will now correctly set the corresponding style property to null instead of assigning a default stroke/fill.
  • CSSLabelStyle: Added setters for backgroundStroke, backgroundFill, and clipText.
  • When using a folded graph, the master item for a created graph item can now be obtained when the creation event is dispatched on the view graph.
  • The com.yworks.util.FilteredCollectionModel can now be used in for each loops.
  • Custom user tags can now be added to the default com.yworks.graph.model.IBend implementation using the com.yworks.support.ITagOwner functionality.
  • The com.yworks.graph.input.CreateEdgeInputMode now uses the com.yworks.graph.model.IHitTestIterator retrieved from the context when trying to find a node at a given position.
  • The input mode created using com.yworks.graph.input.GraphEditorInputMode#createMoveUnselectedInputMode() now supports undo/redo functionality.
  • If the content rectangle is changed implicitly because a graph item was moved, only a single undo/redo unit is now created for the content rectangle change and the move operation.
  • When only a single parameter is provided to the constructor of an com.yworks.support.AbstractUndoUnit, the parameter is now used as the name for both the undo and the redo operation.
  • com.yworks.graph.input.NodeDropInputMode will now copy the user tag of the dragged node to the node created by the drag operation.
  • com.yworks.graph.drawing.TemplateNodeStyle components can now define a complete property and dispatch a complete event when using asynchronous resources to make sure that these resources are included for printing and image export.
  • When parsing ports with enabled port location model parsing, the location model will now consistently take precedence over the explicit port location data.
  • The com.yworks.graph.drawing.ImageNodeStyle now also supports loading and displaying remote SWFs. ImageNodeStyle should now be used for all image-based node visualizations. com.yworks.graph.drawing.SWFNodeStyle is now deprecated.
  • Class com.yworks.util.ImageLoader now supports loading embedded and remote SWFs.
  • The performance of hit testing has been improved.
  • The com.yworks.io.graphml.writer.serializer.PrimitivesSerializer and com.yworks.io.graphml.reader.deserializer.PrimitivesDeserializer have been added to DefaultGraphMLIOHandler's and RoundtripHandler's default (de)serializer registry. This allows for automatic (de)serialization of primitives (like int or Number) as elements, which is required if they are used as user tags.
  • com.yworks.canvas.CanvasComponent and com.yworks.ui.GraphCanvasComponent have a new property mouseInterval Setting this property to values > 0 lets the canvas discard some mouse events which don't have a visible effect. This can improve performance.
  • Class com.yworks.graph.input.SimpleEdgePositionHandler can be added to the edge's lookup to let the bends of selected edges be moved with the edge.

Server (Java)

  • Support for ports has been greatly improved. Now it is possible to:
    • create and remove node ports as well as edges between node ports.
    • reuse ports for dummy edges of a folded graph.
    • specify visual and geometric port information.
    • use a port location model to specify how a change of the port owner's layout affects the port's location
    • automatically update the port location after the endpoints of edges are changed by a layout run.
    • include all the port information in the client-server communication.
  • Utility method getGraphMLString added to com.yworks.yfiles.server.graphml.flexio.FlexIOTools to simplify logging and/or debugging client-server communication.
  • The factory methods createParameterFromSource and createParameterFromTarget have been added to com.yworks.yfiles.server.graphml.flexio.data.RotatedSliderEdgeLabelModel and com.yworks.yfiles.server.graphml.flexio.data.RotatedSideSliderEdgeLabelModel.
  • com.yworks.yfiles.server.graphml.flexio.serializer.ReflectionBasedSerializer: method serializeContent has been extracted from serializeItem to allow for easier customizations.
  • User tags of classes which are serialized as markup extensions (e.g. view states or tables) now are written and read to / from GraphML.
  • The com.yworks.yfiles.server.graphml.flexio.data.FreeNodeLabelModel now gets mapped correctly to the corresponding java y.layout.FreeNodeLabelModel during layout roundtrips.
  • The server-side GraphML output will now recognize default values for more GraphML attributes and omit the corresponding data elements instead of writing the default value repeatedly.
  • The classes com.yworks.yfiles.server.graphml.support.GraphRoundtripSupport and Graph2DRoundtripSupport now have the base classes GraphRoundtripSupportBase and Graph2DRoundtripSupportBase, respectively, which provide roundtrip support without dependencies on a servlet API.
  • Serializing shared instances to GraphML has been improved. Per default shared styles, user tags and location model parameter for nodes, edges, labels and ports are now supported. Custom classes may implement the com.yworks.yfiles.server.graphml.support.ISharedInstanceProvider interface to provide objects that could be shared as well.
  • Added support for (de)serialization of user tags assigned to dummy edges, dummy edge ports, and dummy edge labels.

Demos

  • The new Custom Style Tutorial demonstrates how to create custom styles for nodes, labels, edges and ports that use as well a custom visualization as a customized behavior.
  • The new RenderOrderDemo shows how to use the new configuration options for the render order of model items.
  • The new MultiPageLayoutDemo shows how to use the MultiPageLayouter to break down a large graph into smaller pages. The MultiPageLayouter is part of the yFiles FLEX Client Layout Extension or of the server parts of the yFiles for Java or .NET server bundles.
  • Some z-order operations like raising and lowering model items have been added to the GraphCanvas demo.

Bugfixes

Client

  • Bug fixed that sometimes caused a wrong port candidate to be picked on edge creation.
  • Bug fixed that sometimes caused an infinite loop on serializing a folded graph that reuses master ports for its dummy edges.
  • Bug fixed that used the master graph's defaults for port style and port location model when explicitly creating a port on the view graph.
  • Bug fixed that caused group nodes, that had been reparented, to be placed behind all its new sibling nodes.
  • Bug fixed that added two separate undo units for move operations and subsequent content rect adjustment.
  • Bug fixed in com.yworks.ui.GraphCanvasComponent.morphGraph() which prevented morphing a change in the folding state of a node.
  • Bug fixed: an edge label's position was not updated after removal of a bend.
  • Bug fixed in com.yworks.graph.model.FilteredGraphWrapper which could cause edgesAtPort and edgesAtPortOwner to return incorrect edges.
  • Bug fixed in com.yworks.graph.model.FilteredGraphWrapper which could create incorrect graphs when elements are added while the predicate has changed and the graph state is not in sync with the changes.
  • Embedded SWFs that are displayed in the canvas component are now correctly printed with the CanvasComponent's print() method, or when using the CanvasPrinter. Also, when using the ImageExportHandler, the SWF's will be correctly exported to the resulting image.
  • CanvasPrinter now tries to use reasonable values if no margin or printRectangle is set. If no such values can be determined a verbose Error is thrown before printing starts.
  • Bug fixed: the com.yworks.graph.model.GraphCopier now copies the user tags of copied model items, too. This also affects clipboard operations: on cut, copy, and paste the copied items' user tags are now copied, too.
  • Bug fixed which prevented user tags on dummy bends to be kept after folding operations.
  • CSSLabelStyle: changed the default styleName from CSSLabelStyle to .CSSLabelStyle. This causes CSS properties to be applied correctly to the label text.
  • The advanced anti-aliasing properties (antiAliasType, sharpness, thickness, gridFitType) that were introduced with the Flash Text Engine (FTE) are now correctly applied to labels rendered with the SimpleLabelStyle or CSSLabelStyle.
  • Labels are now only truncated with trailing ellipses if the text does not contain HTML markup. Before, the markup was lost during truncation. HTML labels are now just clipped at the label bounds.
  • The com.yworks.remote.UploadHandler now uses the default fileFilter if no filter was set explicitly.
  • Bug fixed in com.yworks.io.graphml.reader.deserializer.AbstractTemplateStyleDeserializer which prevented Strings from being properly deserialized as styleTag in TemplateNodeStyle and TemplateLabelStyle.
  • Bug fixed in com.yworks.graph.input.CreateEdgeInputMode which indicated that the newly created edge snapped to a target node while it did not.
  • Fixed hit testing for the ShapeNodeStyle's round rectangle shape.
  • Hit testing of the SimplePortStyle now considers the stroke width.
  • The com.yworks.remote.RoundtripHandler now always dispatches the complete event when the result has been received, even if it is configured to not update the client-side graph.
  • Fixed a bug that caused the default node styles set on a folded graph to be ignored when parsing a folded graph using the com.yworks.remote.RoundtripHandler.
  • When updating a folded graph, the folding state of leaf nodes is now correctly applied.
  • Gradients are now rotated correctly when a rotation is applied to the com.yworks.canvas.drawing.YGraphics context.
  • The hasColor attribute is now considered correctly when parsing yFiles for Java GraphML input.
  • The arrow deserializer now is able to deserialize ArrowType.SIMPLE, too.
  • The com.yworks.canvas.input.MagnifierInputMode now respects its canvas's enableMouseChildren policy. This fixes a bug which prevented template components from being interactive when viewed with the magnifier.
  • Fixed snap line indicator for equal node sizes which sometimes had an incorrect size at the node which was resized.
  • Fixed a bug in com.yworks.canvas.input.MoveInputMode which prevented snapping from being re-enabled after temporarily disabling it with the CTRL-key.

Server (Java)

  • com.yworks.yfiles.server.graphml.support.GraphRoundtripSupport doesn't write folder nodes as empty group nodes anymore.
  • Empty group nodes are not parsed in as normal (non-group) nodes anymore.
  • Bug fixed in com.yworks.yfiles.server.graphml.flexio.deserializer.AbstractTemplateStyleDeserializer which prevented Strings from being properly deserialized as styleTag in TemplateNodeStyle and TemplateLabelStyle.
  • If a label uses a parameter for com.yworks.yfiles.server.graphml.flexio.data.FreeNodeLabelModel respectively com.yworks.yfiles.server.graphml.flexio.data.FreeEdgeLabelModel, this parameter is updated correctly after a new layout has been calculated for this label.

Server (.NET)

  • Bug fixed in yWorks.yFiles.Graph.Web.Style.AbstractTemplateStyleDeserializer which prevented Strings from being properly deserialized as StyleTag in TemplateNodeStyle and TemplateLabelStyle.
  • Bug fixed which caused node or edge style deserializers being invoked three times per node.

Incompatible Changes

Client

  • Most rendering code that previously used the com.yworks.canvas.drawing.IPaintable interface now uses the new com.yworks.canvas.drawing.IDisplayObjectCreator interface instead for improved rendering performance (e.g. all style renderers now implement IDisplayObjectCreator instead of IPaintable). Please see the migration guide for details on the resulting incompatibilities.
  • The minimum supported Flex SDK now is Flex 3.5, the minimum required Flash Player version is 10.
  • com.yworks.graph.input.GraphEditorInputMode now delegates label editing to an internal helper class.
  • The default rendering layers of ports, labels and edges have changed. Ports and labels are now rendered just on top of their owner instead of in a separate layer on top of all nodes and edges. Edges use the com.yworks.graph.model.EdgeLayerPolicy.SEPARATE_LAYER policy that corresponds to the previous default. The old default behavior can be reestablished by setting com.yworks.graph.model.LabelLayerPolicy.SEPARATE_LAYER as labelLayerPolicy and com.yworks.graph.model.PortLayerPolicy.SEPARATE_LAYER as portLayerPolicy in the GraphModelManager.
  • The usage of com.yworks.graph.model.GraphModelManager.drawEdgesBehindGroupedNodes is now deprecated. Instead the (default) edge layer policy com.yworks.graph.model.EdgeLayerPolicy.BEHIND_GROUP_NODES should be used.
  • When a roundtrip has been completed the com.yworks.remote.RoundtripHandler now dispatches a RoundtripEvent.ROUNDTRIP_COMPLETE event when the update property is set to false, too.
  • The private class com.yworks.graph.model.PathGeometrySelectionPaintable has been made deprecated. Uses should be replaced by com.yworks.graph.model.EdgeSelectionDisplayObjectCreator.
  • The graph implementations now dispatch com.yworks.graph.model.GraphEvent's sub classes com.yworks.graph.model.NodeEvent, EdgeEvent, LabelEvent, PortEvent, and BendEvent instead of com.yworks.graph.model.GraphEvent. As these events are sub classes of the GraphEvent, listeners to GraphEvent will continue working without changes. IGraph implementations which dispatch GraphEvents should dispatch the appropriate sub classes for the changed items.
  • com.yworks.graph.drawing.SimpleNodeStyle has been deprecated. It is recommended to use its replacement com.yworks.graph.drawing.SimpleAbstractNodeStyle instead.
  • The method createTextRenderer in com.yworks.graph.drawing.IconLabelStyleRenderer has been removed.
  • The type of property autoAdjustContentRect of class com.yworks.graph.input.GraphEditorInputMode has been changed from Boolean to com.yworks.graph.input.AdjustContentRectPolicy.
  • The com.yworks.canvas.input.ContextMenuInputMode now sets the application's contextMenu property to its own ContextMenu instance. Setting the input mode's autoRegisterAtApplication property to false prevents this behavior.
  • A new method setBendTag has been added to interface com.yworks.graph.model.IChangeDummyEdgeAppearanceCallback. Classes which implement this interface have to implement this method.
  • If no fill or stroke is set for a ShapeNodeStyle in a GraphML file, the GraphML parser will now set the corresponding style property to null instead of assigning a default stroke/fill.
  • The method iterateHits of com.yworks.graph.model.IFilteredHitTestIterator has been renamed to iterateFilteredHits.
  • The com.yworks.remote.RoundtripHandler defaults have been changed to write port location models. This increases the size of the GraphML and can be switched off if not wanted.

Server (Java)

  • Class com.yworks.yfiles.server.graphml.flexio.data.NodeScaledParameterExtension was moved to package com.yworks.yfiles.server.graphml.flexio.data.javamarkup.
  • Classes com.yworks.yfiles.server.graphml.flexio.serializer.FlexReflectionBasedSerializer and com.yworks.yfiles.server.graphml.flexio.deserializer.FlexReflectionBasedDeserializer were removed.
  • Class com.yworks.yfiles.server.graphml.flexio.LabelDeserializer now serializes only a single <y:Label> element instead of a <y:Labels> list. Class com.yworks.yfiles.server.graphml.flexio.LabelInputHandler was introduced to manage node and edge labels.
  • The methods readGraph(HttpServletRequest, Graph), sendGraph(Graph, HttpServletResponse), and sendError(String, HttpServletResponse) were removed from class com.yworks.yfiles.server.graphml.support.AbstractGraphRoundtripSupport. These methods are defined in the interface com.yworks.yfiles.server.graphml.support.ServletRoundtripSupport or its implementations GraphRoundtripSupport or Graph2DRoundtripSupport instead.

yFiles FLEX 1.6.0.2 changes since 1.6.0.1

Bugfixes

Client

  • Fixed a bug which could break com.yworks.graph.model.RotatedSliderEdgeLabelModel's getParameters() method with edges with zero length segments.
  • Fixed a potential memory leak in com.yworks.graph.input.GraphEditorInputMode.
  • Fixed incorrect size calculation for image export with insets in com.yworks.remote.ImageExportHandler.
  • Fixed com.yworks.canvas.CanvasComponent not properly dispatching mouse events if the canvas is scaled.
  • com.yworks.graph.model.GraphClipboard can handle a missing filter function now. This also fixes method paste in com.yworks.ui.GraphCanvasComponent.
  • Fixed com.yworks.graph.model.GraphClipboard's cut and copy which prevented the onElementCut and onElementCopied callbacks from being invoked in folded graphs.

Server (Java)

  • Bug in com.yworks.yfiles.server.graphml.flexio.deserializer.ReflectionBasedDeserializer fixed that sometimes caused an ArrayIndexOutOfBoundsException if the property name of a XML child node couldn't be resolved.
  • com.yworks.yfiles.server.graphml.folding.EdgeViewState now contains a tag property as on client side.

yFiles FLEX 1.6.0.1 changes since 1.6

Improvements

Client

  • Removed unnecessary DictionaryMapper instance from com.yworks.graph.model.DefaultNode
  • Edges which are created by the com.yworks.graph.input.CreateEdgeInputMode now connect from/to the topmost node of overlapping nodes.

Bugfixes

Client

  • Class com.yworks.canvas.CanvasPrinter was adjusted to work with Flex SDK 4.5.0 and higher.
  • Bug in com.yworks.graph.input.CreateEdgeInputMode fixed that sometimes broke the edge creation when used together with snapping and node ports on a node's bounds.
  • Bug fixed that sometimes caused an infinite loop on serializing a folded graph that reuses master ports for its dummy edges.
  • Bug fixed that broke interactive moving of a mixed selection containing ports.
  • The com.yworks.graph.model.GraphClipboard did not always copy all state of items that were invisible in a folded graph view.
  • Bug in com.yworks.graph.model.FoldedGraph.getRepresentative() removed, that sometimes returned non-null values for master bends and labels that in fact had no representatives at this moment.
  • Bug in com.yworks.canvas.geom.OrientedRectangle.angle fixed that returned a value that was off by PI/2.
  • Bug fixed which caused the label editor to have a transparent background with Flex SDK 4.5.0 and higher.
  • Bug fixed which caused the label editor to have an incorrect size with Flex SDK 4.5.0 and higher.
  • Bug in com.yworks.canvas.geom.GeomSupport.polyLineContains fixed that caused the method to wrongly return false.
  • Fixed potential memory leaks in com.yworks.graph.drawing.BitmapNodeStyleRenderer, com.yworks.graph.drawing.ImageNodeStyleRenderer, and com.yworks.graph.drawing.SWFNodeStyleRenderer.
  • Fixed potential null pointer in com.yworks.graph.model.FoldedGraph.
  • Fixed bug which caused an infinite loop when a list of nodes were grouped in a folded graph with multiple views which have different local roots.
  • Fixed bug which might have disabled mouse interactivity for com.yworks.graph.drawing.TemplateNodeStyle when com.yworks.canvas.CanvasComponent.enableMouseChildren was set to CanvasComponent.MOUSE_CHILDREN_AUTO
  • Fixed bug in com.yworks.graph.input.GraphEditorInputMode which committed label text changes to the wrong label when a new label was added after a label edit was cancelled on a node with an existing label.
  • Fixed possible null pointer error in com.yworks.graph.input.CreateEdgeInputMode which could occur when grid snapping was enabled.

Server (Java)

  • Bug in class com.yworks.yfiles.server.graphml.flexio.serializer.ImageSerializer fixed that prevented it from serializing java.awt.image.BufferedImage data as created e.g. by the com.yworks.yfiles.server.graphml.flexio.deserializer.ImageDeserializer.
  • Regression fixed that prevented parsing labels of com.yworks.yfiles.server.graphml.folding.NodeViewStates and com.yworks.yfiles.server.graphml.folding.EdgeViewStates.

yFiles FLEX 1.6 changes since 1.5

General

Major New Features

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.

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.
  • Method fitGraphBounds of the com.yworks.canvas.CanvasComponent now has an optional margins parameter which allows to conveniently add margins to the graph.
  • 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 performance of reflection based deserialization has been improved.
  • 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.DefaultLabelModelParameterFinder has a new property angularDeviationFactor that influences how much the angular deviation is weighted in the metric calculated for the label parameter.
  • 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.
  • The performance of reflection based deserialization has been improved.
  • 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 theIncrementalHierarchicLayouterto 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 theIncrementalHierarchicLayouterto restrict the node sequencing.
  • The SwimlaneDemo now provides functionality to move nodes to different swim lanes.
  • The new PortCandidateDemo shows howPortCandidateSets can be used withIncrementalHierarchicLayouterto 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.

yFiles FLEX 1.5 changes since 1.4.2

General

  • The GraphML extension library GraphML.jar is no longer distributed with yFiles FLEX. Instead of the GraphML extension package, the java server side now uses the yFiles for Java integrated GraphML support (available since 2.7).
  • The yFiles FLEX Client distribution's Java server library now requires yFiles for Java 2.7.

Major New Features

Interactive snapping of moved graph elements

  • So called SnapLines are collected e.g. from graph elements that describe where a moved element can snap to. Existing default implementations of com.yworks.graph.input.snapLines.ISnapLineProvider that provide snap lines for edges (com.yworks.graph.input.snapLines.EdgeSnapLineProvider) and nodes (com.yworks.graph.input.snapLines.NodeSnapLineProvider) can be extended or replaced easily and additional providers can be used as demonstrated in the CustomSnappingDemo.
  • A so called SnapResult represents a snap to a specific location. During a move gesture all possible SnapResults are collected and the best result is chosen and applied.
    Default implementations of snap result providers used during node movement (com.yworks.graph.input.snapLines.NodeSnapResultProvider) and node resizing (com.yworks.graph.input.snapLines.NodeReshapeSnapResultProvider) can be customized and the providers e.g. for bends, edges and ports can be replaced by custom implementations of the corresponding snap result provider interfaces.
  • Diverse visualizations of performed snaps show why the moved object was snapped to this location. The default implementations of the different snap result paintables provide useful data for custom snap result paintings.
  • The central class com.yworks.graph.input.snapLines.GraphSnapContext offers many properties for an easy customization of the snapping feature.
  • Snapping of graph elements to grid points and/or grid lines is integrated in the new snapping feature.

Interactive orthogonal edge creation and editing

  • Using orthogonal edge creation, all edge segments are kept orthogonal throughout the whole creation gesture.
  • Using orthogonal edge editing, dragged orthogonal edge segments are kept orthogonal.
  • Orthogonal edge creation and editing can be combined with the snapping feature so that the orthogonal segments e.g. snap to a specified distance to node borders.
  • By providing custom implementations of com.yworks.graph.input.IOrthogonalEdgeHelper the orthogonal edge behavior can be customized as demonstrated in the OrthogonalEdgesDemo.

Improved drag and drop support

  • The new com.yworks.canvas.input.DropInputMode can be used as base class for diverse drag'n'drop operations.
  • Its subclass com.yworks.graph.input.NodeDropInputMode is specialized to create nodes via drag gestures and provides a live preview of the dragged node as well as snapping support.
  • The DragNDropDemo was updated to demonstrate how to use the new drag'n'drop support.

Minor New Features

Dynamic port candidates

  • Dynamic port candidates allow to connect edges to any location inside a node instead of only some distinct port locations.
  • Having a dynamic port candidate for a node, it can be asked to return a non-dynamic port candidate for a specified position.
  • The input modes for edge creation as well as relocating ports do support dynamic port candidates and use modifiers to easily toggle if dynamic port candidates should be used or ignored.

Improvements

Client

  • com.yworks.io.graphml.DefaultGraphMLIOHandler was introduced as preconfigured GraphMLIOHandler to read and write GraphML with structural, layout, style, and label information.
  • com.yworks.canvas.drawing.GridPaintable can be used to show a configurable grid paintable as background of the com.yworks.ui.GraphCanvasComponent.
  • Restricting the interactive movement of graph elements is simplified by the new classes com.yworks.canvas.input.ConstrainedHandle and com.yworks.canvas.input.ConstrainedDragHandler.
  • New class com.yworks.graph.drawing.FilterNodeStyleDecorator supports decorating node styles with flash bitmap filters.
  • The modern com.yworks.graph.drawing.ShinyPlateNodeStyle was added.
  • Several convenience methods for working with (grouped) graphs are offered by com.yworks.graph.model.GraphUtil and com.yworks.graph.model.GroupedGraphUtil.
  • Several new arrow types that were introduced with yFiles for Java 2.7 are now supported.
  • Support for dashed-dotted com.yworks.graph.drawing.compat.LineTypes was added.
  • The com.yworks.graph.drawing.SWFNodeStyle now supports AVM1 swfs.
  • The new interface com.yworks.graph.model.IEdgePortHandleProvider offers better means to provide custom com.yworks.canvas.input.IHandle implementations for the source and target port of an edge.
  • com.yworks.io.binary.ExternalizableGraph now allows to override the createGraph method.
  • The alignment of the text of a com.yworks.graph.drawing.SimpleLabelStyle now gets (de-)serialized.
  • com.yworks.canvas.CanvasComponent has a new property enableMouseChildren that allows to set the policy whether to propagate mouse events to the children in the display list which can dramatically influence the CPU usage and Flash Player performance.
  • com.yworks.canvas.CanvasComponent has two new properties mouseWheelZoomCenteredRecognizer and mouseWheelZoomMouseLocationRecognizer that allow to customize which modifier should be used to zoom to the canvas' center or the mouse location, respectively, via the mouse wheel.
  • The callback method printCanceled was added to com.yworks.canvas.CanvasPrinter and is called if the print job couldn't be started.
  • The method cubicTo was added to com.yworks.canvas.drawing.GeneralPath and appends a cubic bezier curve to the path elements.
  • The method drawString in com.yworks.canvas.drawing.YGraphics was improved to better consider rotation when calculating the text size.
  • New static functions addInsetsToRectangle, findLineIntersection, rectanglesAreEqual and getConstrainedLocation were added to com.yworks.canvas.geom.GeomSupport.
  • A static function createFrom was added to com.yworks.canvas.geom.YPoint that takes an com.yworks.canvas.geom.IPoint as argument.
  • The event type DRAG_STARTED was added to com.yworks.canvas.input.DragEvent and is dispatched by the com.yworks.canvas.input.MoveInputMode and the com.yworks.canvas.input.HandleInputMode after the drag has been initialized.
  • New recognizers were added to com.yworks.canvas.input.EventRecognizer:
    • NO_MODIFIER_PRESSED checks if no SHIFT, ALT or CTRL key was held down in the provided com.yworks.canvas.input.CanvasMouseEvent.
    • MODIFIER_ALT checks if the ALT key was held down in the provided flash.events.KeyboardEvent, flash.events.MouseEvent or com.yworks.canvas.input.CanvasMouseEvent.
    • SPACE_PRESSED checks if the SPACE key was pressed down in the provided flash.events.KeyboardEvent.
    • SPACE_RELEASED checks if the SPACE key was released in the provided flash.events.KeyboardEvent.
    • CTRL_RELEASED checks if the CTRL key released in the provided flash.events.KeyboardEvent.
    • BACKSPACE_PRESSED checks if the BACKSPACE key was pressed down in the provided flash.events.KeyboardEvent.
  • com.yworks.canvas.input.HandleInputMode and com.yworks.canvas.input.MoveInputMode support the new snapping features which can also be temporarily disabled using the CTRL key.
  • com.yworks.canvas.input.MoveInputMode now dispatches com.yworks.canvas.input.DragEvent.DRAG_STARTED and com.yworks.canvas.input.DragEvent.DRAGGING events.
  • The method createChildInputModeContext of class com.yworks.canvas.input.MultiplexingInputMode was made public.
  • The com.yworks.canvas.input.OverviewInputMode now uses the mouse wheel zoom factor of the com.yworks.ui.GraphOverviewComponent it is used with.
  • The static factory method createReshapeableHandles in com.yworks.canvas.input.ReshapeableHandles was added that creates a default instance that provides 8 handles for each corner and side for the given rectangle.
  • The com.yworks.graph.anim.GraphMorpher now supports morphing node and edge view states. In addition the new method addReshapeable allows to add any com.yworks.canvas.geom.IReshapeable to the morphing.
  • The com.yworks.graph.drawing.CollapsibleNodeStyleDecorator now includes the collapse icon bounds in the isInside method which is relevant if the decorated style is non-rectangular. Furthermore it updates the node style as well as the collapse icon when the button's action was triggered.
  • The com.yworks.graph.drawing.DefaultPositionHandler now allows protected access to the reshapeable property.
  • Subclasses of the com.yworks.graph.drawing.DelegatingNodeStyle now have access to the wrapped style.
  • The imageClass property of com.yworks.graph.drawing.ImageNodeStyle is now accessible.
  • A property dropShadow was added to the com.yworks.graph.drawing.PanelNodeStyle to be able to disable the drop shadow that is used per default.
  • The rendering of the com.yworks.graph.drawing.ShapeNodeStyle using the type com.yworks.graph.drawing.ShapeNodeShape.rectangle3d was improved.
  • A purple stroke was added to com.yworks.graph.drawing.Strokes.
  • com.yworks.graph.input.CreateBendInputMode supports the new orthogonal edge editing feature including a recognizer to force splitting an orthogonal segment when starting to drag it.
  • The new class com.yworks.graph.input.EdgeDragInputModeBase that was added as super class of com.yworks.graph.input.CreateBendInputMode simplifies customizing edge drag behavior.
  • The com.yworks.graph.input.CreateEdgeInputMode was improved:
    • It supports the new snapping features which can also be temporarily disabled pressing the CTRL key.
    • It supports orthogonal edge creation which can be enabled using the orthogonalEdgeCreation property.
    • It supports dynamic port candidates for the source and target port as well as a modifier to toggle if the dynamic port candidates shall be used or ignored.
    • The modifier used to enforce the creation of a bend instead of setting the target (default: CTRL) can now be customized.
    • An event of the new type com.yworks.graph.input.GraphEditorEvent.EDGE_CREATION_STARTED is dispatched after initializing the edge creation.
  • com.yworks.graph.input.CroppedPortLocationModelParameterHandle now already crops the position during the move gesture not only when finishing it.
  • The com.yworks.graph.input.GraphEditorInputMode was improved:
    • An event of the new type com.yworks.graph.input.GraphEditorEvent.LABEL_CHANGED is dispatched after the text of a label was edited interactively.
    • Support for orthogonal edge editing was added.
    • Newly created nodes are snapped to grid points if a com.yworks.canvas.input.INodeGridConstraintProvider can be found in the context's lookup.
    • After pasting graph elements the contentRect property of the used com.yworks.ui.GraphCanvasComponent gets updated.
    • After grouping the selection the selection is changed to only include the newly created group node and an event of type com.yworks.graph.input.GraphEditorEvent.NODE_CREATED is dispatched
  • com.yworks.graph.input.PortLocationModelParameterHandle supports snapping and orthogonal edge editing. Furthermore its subclasses now have access to the handle's port.
  • The isValidParent method of com.yworks.graph.input.ReparentNodeHandler now checks if the newParent isn't a descendant of node and if newParent is either a group node or a collapsed folder node.
  • com.yworks.graph.model.BendDecorator now supports decorating com.yworks.graph.input.snapLines.IBendSnapResultProvider.
  • com.yworks.graph.model.EdgeDecorator supports decorating com.yworks.graph.model.IEdgePortHandleProvider, com.yworks.graph.input.IOrthogonalEdgeHelper, com.yworks.graph.input.snapLines.IEdgeSnapResultProvider and com.yworks.graph.input.snapLines.ISnapLineProvider.
  • com.yworks.graph.model.NodeDecorator supports decorating com.yworks.canvas.input.IReshapeHandler, com.yworks.canvas.model.IObstacleProvider, com.yworks.graph.input.snapLines.INodeReshapeSnapResultProvider, com.yworks.graph.input.snapLines.INodeSnapResultProvider and com.yworks.graph.input.snapLines.ISnapLineProvider.
  • com.yworks.graph.model.PortDecorator supports decorating com.yworks.graph.input.snapLines.IPortSnapResultProvider and com.yworks.graph.input.snapLines.ISnapLineProvider.
  • Providing label model parameter is now easier to customize as the method getCandidateParameters of com.yworks.graph.model.DefaultLabelModelParameterFinder first uses the label's lookup to find an ILabelModelParameterProvider.
  • com.yworks.graph.model.DefaultPortCandidate was refactored and now supports creation and usage of dynamic port candidates as well as access to the used port location model and the port style used for new ports.
  • Updating bridges during movement can be configured on the com.yworks.canvas.input.MainInputMode, com.yworks.canvas.input.HandleInputMode, and com.yworks.canvas.input.MoveInputMode using the new property bridgeUpdateMode.
  • The static method getPathToRoot was added to com.yworks.graph.model.Hierarchies and allows to conveniently get a list of the ancestors of a node.
  • com.yworks.graph.model.PortRelocationModel was refactored and now supports dynamic port candidates.
  • Flipping of rotated labels isn't influenced by the com.yworks.graph.model.RotatingEdgeLabelModel anymore but is only handled by the label style renderer.
  • The callback method onCancel was added to com.yworks.remote.ImageExportHandler, com.yworks.remote.UploadHandler and com.yworks.remote.DownloadHandler.
  • In addition the callback method onProgress was added to com.yworks.remote.DownloadHandler and the name of the last successfully downloaded file is stored in its new property fileName.
  • The color of fonts and com.yworks.graph.drawing.compat.LineTypes now gets (de-)serialized.
  • com.yworks.io.graphml.reader.AbstractInputHandler has two new static utility methods getAttributeName and getAttributeType that return the values of the attributes GraphMLConstants.ATTR_TYPE respectively GraphMLConstants.ATTR_NAME of a given XML node.
  • Added convenience methods addGraphAttribute and addRegistryGraphAttribute to com.yworks.io.graphml.GraphMLIOHandler
  • com.yworks.canvas.drawing.YGraphics now allows to nest calls to save() and restore().
  • A new class com.yworks.remote.AbstractRoundtripHandler can be used as base class for customized roundtrip handlers. com.yworks.remote.RoundtripHandler inherits from this class.
  • The com.yworks.io.graphml.writer.serializer.StrokeSerializer and com.yworks.io.graphml.reader.deserializer.StrokeDeserializer now can handle mx.graphics.SolidColorStroke.
  • com.yworks.graph.input.MoveLabelInputMode: Pressing the Ctrl key while dragging allows to move the label independently from the candidates.

Java server

  • Server side support of the new ShinyPlaneNodeStyle was added.
  • Several new arrow types that were introduced with yFiles for Java 2.7 are now supported.
  • com.yworks.yfiles.server.graphml.flexio.binary.ExternalizableGraph now allows to customize the used com.yworks.yfiles.server.graphml.support.GraphRoundtripSupport as it creates the support via the new protected method createGraphRoundtripSupport.
    The inner static class CustomGraphRoundtripSupport that is used per default is also made protected and therefore can be extended as well.
  • com.yworks.yfiles.server.graphml.flexio.compat.Stroke can be configured to be deserialized at Flex side as mx.graphics.Stroke and mx.graphics.SolidColorStroke. The com.yworks.yfiles.server.graphml.flexio.serializer.StrokeSerializer and com.yworks.yfiles.server.graphml.flexio.deserializer.StrokeDeserializer support this.

.NET server

  • The new property UseSolidColorStroke on yWorks.yFiles.Graph.Web.GraphRoundtripSupport determines whether Pens will be deserialized at Flex side as mx.graphics.Stroke and mx.graphics.SolidColorStroke.

Demos

  • The new SnapLineDemo demonstrates the effect of the different snapping settings.
  • The new CustomSnappingDemo demonstrates how to further customize snapping in multiple ways.
  • The new OrthogonalEdgesDemo demonstrates how the orthogonal edge editing can be customized.
  • All demos were updated to use the more convenient com.yworks.graph.model.GraphDecorator instead of custom com.yworks.support.IContextLookupChainLink implementations.
  • The BusinessProcessDiagramDemo was refactored to handle the resizing of swim lanes and pools during a node move gesture in an easier and more stable way.
  • The GraphCanvas demo was extended to support snapping, orthogonal edge editing, grid and dynamic port candidates.
  • The GridDemo was updated to use the new grid support.
  • The PortCandidateProviderDemo was extended to demonstrate dynamic port candidates.
  • The BridgeDemo shows the different modes for updating bridges during interactive movement of graph elements.
  • The DragNDropDemo uses the improved drag'n'drop support.

Bugfixes

Client

  • Fixed a bug that caused a null pointer exception if self loops of nodes inside collapsed nodes had been removed twice.
  • Fixed a memory leak in com.yworks.support.WeakReference which is used in the context of folding.
  • Fixed a bug in the removeInputMode method of com.yworks.canvas.CanvasComponent that prevented the passed input mode to be canceled if it couldn't be stopped before uninstalling it.
  • Fixed a bug that could cause a null pointer exception when using mx.core.ScrollPolicy.ON for the scroll bars of com.yworks.canvas.CanvasComponent.
  • Setting the horizontalScrollPosition or verticalScrollPosition property of com.yworks.canvas.CanvasComponent does now update the scroll bar handles.
  • Fixed a bug in com.yworks.canvas.CanvasComponent that sometimes prevented the scroll bars to be updated correctly. Most prominently this could occurs during a morphGraph call for a com.yworks.ui.GraphCanvasComponent.
  • Fixed a potentially negative size of a fill in com.yworks.canvas.drawing.RectangularHighlightPaintable that could be caused by rounding errors.
  • Fixed a bug in the static method pointLineDistance of com.yworks.canvas.geom.GeomSupport that sometimes returned Number.NaN if the line is vertical and the point lies on the line.
  • Fixed com.yworks.canvas.input.CompositePositionHandler's cancelDrag and dragFinished method to update its x and y properties.
  • Fixed a bug in com.yworks.canvas.input.LabelPositionHandler that could cause a null pointer exception when canceling or finishing the drag of a label.
  • Fixed com.yworks.canvas.input.MoveViewportInputMode to respect the autoDrag property of the com.yworks.canvas.CanvasComponent it is used in.
  • Fixed a bug in com.yworks.canvas.input.OverviewInputMode that caused an exception if the overview handle was dragged but no clientCanvas was set.
  • The com.yworks.canvas.model.CollectionModelManager does now remove the com.yworks.canvas.model.IModelItemDescriptors of previously added objects correctly when method clear is called on the underlying com.yworks.util.ICollectionModel.
  • Fixed a memory leak in com.yworks.canvas.model.CollectionModelManager that could occur for items that had been added to the underlying collection several times.
  • Fixed method clone of com.yworks.graph.drawing.BitmapNodeStyle which didn't transfer the style's image property.
  • Fixed a bug in the paint method of com.yworks.graph.drawing.BitmapNodeStyleRenderer that caused a null pointer exception if no com.yworks.canvas.CanvasComponent could be retrieved from the context.
  • Fixed wrong default insets in class com.yworks.graph.drawing.CollapsibleNodeStyleDecorator.
  • Fixed a bug in com.yworks.graph.drawing.NodeStyleLabelStyleRenderer that wrongly positioned the label style used as foreground of the label.
  • Fixed a bug that could be triggered when removing a bend in a compound edit for folded graphs.
  • Fixed com.yworks.graph.model.DefaultGraph throwing events of type com.yworks.graph.model.GraphEvent.GRAPH_CHANGED for new nodes, edges, labels ports and bends before these elements had been added to the undo queue.
  • Fixed a bug that prevented the removal of a mapper from the default implementation of com.yworks.graph.model.IMapperRegistry.
  • Fixed a bug that didn't prevent to set a node as leaf which still has children.
  • Fixed a memory leak that could occur with undo of edge operations in a folded graph.
  • Fixed a bug in the copy method of com.yworks.graph.model.GraphCopier that sometimes used the wrong root of the target node hierarchy.
  • Fixed a bug in com.yworks.remote.ImageExportHandler that prevented to scale the exported image up.
  • Fixed com.yworks.util.FilteredCollectionModel not reacting on a reset of the filtered collection model.
  • Cancelling a drag with a MoveInputMode created by com.yworks.canvas.input.MainInputMode.createMoveUnselectedInputMode() now places the nodes back at their original position.
  • com.com.yworks.io.binary.ExternalizableGraph doesn't lose port layouts during transfer now.
  • Fixed crash when removing IEdge that has same source and target port.
  • Many bugs have been fixed in the folding environment. All of them could only be triggered programmatically.
    • Fixed programmatic edge creation.
    • setLeaf() and set localRoot not included in Undo queue.
    • Various bugs that occurred in rare cases due to corrupted internal data structures have been fixed.

Server (Java)

  • Fixed a bug in the type converter used for insets that switched top and right insets upon converting from a string.
  • Fixed a bug in the deserializer for PanelNodeStyle that prevented reading the style's insets.
  • Fixed that deserializing an ImageIcon having a non-integer width or height value did throw an error as an integer was expected.

Demos

  • Fixed the OrgChart demo to sometimes show artifacts if the used demo.orgchart.PersonNode components were cached as bitmap.
  • Fixed the demo.businessProcessDiagram.CustomArrow used in the BusinessProcessDiagramDemo not being able to be serialized properly.

Most prominent incompatible changes

Client

  • The default recognizer in com.yworks.graph.input.CreateEdgeInputMode to remove the last bend has changed. You have to press the BACKSPACE key now instead of using <SHIFT + click>.
    Pressing the SHIFT key while hovering over the source or target node now activates resolving dynamic port candidates of these nodes.
  • The default value of the mouseWheelZoomFactor property of com.yworks.ui.GraphOverviewComponent was changed from 1.02 to 1.2.
  • Some refactoring were necessary to support dynamic ports:
    • The graph parameter was removed from all method signatures of com.yworks.graph.model.IEdgePortCandidateProvider and com.yworks.graph.model.IPortCandidateProvider. Implementations may receive the graph from the passed context via context.lookup(IGraph) as IGraph.
    • In com.yworks.graph.model.IPortCandidate the property type was replaced by a more general candidateTag which may be any Object and the property valid was replaced by validity which can also indicate a dynamic port candidate. Furthermore the method getPortCandidateAt was added to resolve dynamic port candidates and the signature of method createInstance was changed to take the context for the port candidate is created in as parameter.
  • The method groupSelection of com.yworks.graph.input.GraphEditorInputMode doesn't create an empty group node anymore if the selection didn't contain any node.

Server (Java)

  • Due to the change to the yFiles for Java integrated GraphML support a major refactoring of the I/O classes was necessary:
    • For the scopes of data key elements the enumeration class y.io.graphml.KeyScope is used instead of the constants defined in org.graphdrawing.graphml.GraphMLConstants.
    • For the types of data key elements the enumeration class y.io.graphml.KeyType is used instead of the constants defined in org.graphdrawing.graphml.attr.AttributeConstants.
    • The interface com.yworks.yfiles.graphml.flexio.ISerializer was replaced by y.io.graphml.output.SerializationHandler.
    • com.yworks.yfiles.graphml.flexio.serializer.AbstractSerializer now extends y.io.graphml.output.TypeBasedSerializer.
      Subclasses of AbstractSerializer have to implement the methods protected Class getSerializationType(GraphMLWriteContext context) and public abstract void serializeItem(Object item, XmlWriter writer, GraphMLWriteContext context) throws GraphMLWriteException (which replaced the earlier method serializeContent).
      All serializers and usages have been adjusted accordingly.
    • The interface com.yworks.yfiles.graphml.flexio.IDeserializer was replaced by y.io.graphml.input.DeserializationHandler
    • com.yworks.yfiles.graphml.flexio.deserializer.AbstractDeserializer now extends y.io.graphml.input.AbstractDeserializer.
      Subclasses of AbstractDeserializer have to implement the method public Object deserializeNode(Node xmlNode, GraphMLParseContext context) throws GraphMLParseException (which replaced the earlier method deserializeElementContent).
      All deserializers and usages have been adjusted accordingly.
    • Class com.yworks.yfiles.server.graphml.support.GraphMLLayoutGraphIOHandler was refactored and does now extend y.io.graphml.GraphMLHandler. Methods and properties having a counterpart in GraphMLHandler have been removed. In addition the following did change:
      • The property outputEncoding was removed. Instead there is now a write method that takes the encoding as an argument.
      • The properties readEmbeddedResources, writeEmbeddedResources, errorHandler, graphMLCoreNS, fileFormatString, fileNameExtension, validationEnabled and writeDTDEnabled as well as the methods canRead and canWrite are not longer supported or used and therefore have been removed.
      • The methods to add attributes have been removed. Instead appropriate InputHandler and OutputHandler have to be added directly.

Further incompatible changes

Client

  • Some recognizer in com.yworks.canvas.input.EventRecognizer were altered to use a concise naming scheme for SHIFT, CTRL and ALT modifier:
    • EventRecognizers.CTRL_PRESSED was renamed to EventRecognizers.MODIFIER_CTRL.
    • Instead a new EventRecognizers.CTRL_PRESSED function was introduced that recognizes a key down keyboard event for the CTRL key.
    • The EventRecognizers.SHIFT_PRESSED function now only returns true if the pressed key was the SHIFT key, not if any key was pressed while the SHIFT key was hold down.
    • The EventRecognizers.MODIFIER_SHIFT function now only returns true if the SHIFT key was pressed in the passed flash.events.KeyboardEvent, flash.events.MouseEvent or com.yworks.canvas.input.CanvasMouseEvent.
  • The method groupSelection of com.yworks.graph.input.GraphEditorInputMode now returns the newly created group node.
  • com.yworks.canvas.input.IHandle and com.yworks.canvas.input.IPositionHandler were refactored:
    • The method handleMove of IPositionHandler doesn't take the delta since the last call anymore. The signature of the method changed
      from handleMove( context:IInputModeContext, originalX:Number, originalY:Number, newX:Number, newY:Number, dx:Number, dy:Number ):Boolean
      to handleMove( context:IInputModeContext, originalX:Number, originalY:Number, newX:Number, newY:Number):Boolean.
      Implementations requiring this delta should store the newX and newY values passed in the last handleMove and calculate the delta in the next call.
    • Several functions of IPositionHandler have been pulled up into its new super interface com.yworks.canvas.input.IDragHandler.
    • IHandle now inherits from IDragHandler instead of IPositionHandler and therefore doesn't include the setPosition method anymore.
  • The signature of the method getHandles():Collection of the interface com.yworks.canvas.input.IHandleProvider was changed to getHandles(context:IInputModeContext):Collection which allows more flexibility when calculating the returned collection.
  • The signature of the constructor of com.yworks.canvas.model.CollectionModelManager was changed
    from public function CollectionModelManager( canvas:CanvasComponent, model:ICollectionModel=null, mapper:IMapper=null )
    to public function CollectionModelManager( canvas:CanvasComponent, model:ICollectionModel=null, mapper:DictionaryMapper=null ).
    The restriction to a com.yworks.support.DictionaryMapper was necessary to have access to all keys in the mapper.
  • The method updateDescriptor of com.yworks.canvas.model.ModelManager was changed to return whether the descriptor had any com.yworks.canvas.ICanvasObjects after the update. The signature changed
    from public function updateDescriptor( descriptor:IModelItemDescriptor ):void
    to public function updateDescriptor( descriptor:IModelItemDescriptor ):Boolean.
  • To be able to be used to visualize snap results, the signatures of the following methods of model related classes have been changed to take or return any instance of Object instead of a com.yworks.canvas.model.IModelItem:
    • The functions getCanvasObjects and getMainCanvasObject of com.yworks.canvas.model.CollectionModelManager.
    • The getter for property item of the interface com.yworks.canvas.model.IModelItemDescriptor.
    • The canInstall and installItem functions of class com.yworks.canvas.model.IModelItemInstaller.
    • The install and add functions of class com.yworks.canvas.model.ModelManager.
  • The method reparent was added to the interface com.yworks.graph.input.IReparentNodeHandler. Implementations can get the graph instance to work upon from the passed context via context.lookup(IGraph) as IGraph.
  • Further refactoring were necessary to support dynamic ports:
    • The createInstance method of com.yworks.graph.model.AbstractPortCandidateProvider now expects an com.yworks.graph.model.DefaultPortCandidate as parameter instead of any implementation of com.yworks.graph.model.IPortCandidate. In addition the method getCandidateAt that is used to resolve a dynamic port candidate into a non-dynamic one as well as the method createCallbackPortAt that can be used to create a port candidate using a suggested location and label model were added.
    • The signature of method createCandidate of com.yworks.graph.model.CurrentEdgePortsCandidateProvider was changed
      from protected function createCandidate( graph:IGraph, port:IPort ):DefaultPortCandidate
      to protected function createCandidate( context:IInputModeContext, port:IPort ):DefaultPortCandidate.
    • The signature of method addCandidateWithModelParameter of com.yworks.graph.model.PortCandidateProvider was changed
      from public function addCandidateWithModelParameter (graph:IGraph, owner:IPortOwner, portLocationModelParameter:IPortLocationModelParameter):IPortCandidate
      to public function addCandidateWithModelParameter (owner:IPortOwner, portLocationModelParameter:IPortLocationModelParameter):IPortCandidate.
    • In class com.yworks.graph.model.PortRelocationHandle the methods getClosestCandidate, setPorts and getPort take the context of the relocation gesture as additional parameter. The signature of its method getPort changed
      from protected function getPort( candidate:IPortCandidate ):IPort
      to protected function getPort(context:IInputModeContext, candidate:IPortCandidate, suggestedLocation:IPoint):IPort.
    • Class com.yworks.graph.model.PortCandidateType was removed.
  • The method createBend of com.yworks.graph.model.IBendCreator now additionally takes the context the bend shall be created in. The signature changed
    from function createBend(graph:IGraph, edge:IEdge, x:Number, y:Number):int
    to function createBend(context:IInputModeContext, graph:IGraph, edge:IEdge, x:Number, y:Number):int.
  • The constructor as well as the method getHandles of com.yworks.graph.model.InputModeController now take an additional parameter of type com.yworks.canvas.input.IInputModeContext.
  • The method createIOHandler of com.com.yworks.io.binary.ExternalizableGraph now creates a com.yworks.io.graphml.DefaultGraphMLIOHandler instead of a DotnetCompatGraphMLIOHandler.

Server (Java)

  • More refactoring due to the change to the yFiles for Java integrated GraphML support include:
    • Output handlers earlier extending yext.graphml.writer.AbstractOutputHandler do now extend y.io.graphml.output.AbstractOutputHandler.
      The classes LabelOutputHandler and SharedDataOutputHandler of package com.yworks.yfiles.server.graphml.flexio now override the method getPrecedence() instead of implementing the interface org.graphdrawing.graphml.writer.Precedence.
    • Class com.yworks.yfiles.server.graphml.flexio.StyleOutputHandler was replaced by y.io.graphml.output.ComplexDataProviderOutputHandlers using appropriate com.yworks.yfiles.server.graphml.flexio.StyleSerializer.
    • Input handlers earlier extending yext.graphml.reader.AbstractDOMInputHandler now extend the new class com.yworks.yfiles.server.graphml.flexio.AbstractInputHandlerProvider.
      The class com.yworks.yfiles.server.graphml.flexio.SharedDataInputHandler now overrides the method getPrecedence() instead of implementing the interface org.graphdrawing.graphml.reader.dom.Precedence.
    • The classes LabelInputHandler and StyleInputHandler of package com.yworks.yfiles.server.graphml.flexio were replaced by y.io.graphml.input.ComplexDataAcceptorInputHandlers using appropriate com.yworks.yfiles.server.graphml.flexio.LabelDeserializer and com.yworks.yfiles.server.graphml.flexio.StyleDeserializer, respectively.
    • The interface com.yworks.yfiles.server.graphml.flexio.SerializerRegistry was removed. Input and output handler that did use this interface to (de)serializer child elements can use the methods y.io.graphml.output.GraphMLWriteContext.serialize(Object item) and y.io.graphml.input.GraphMLParseContext.deserialize(Node targetNode) instead.
      The class com.yworks.yfiles.server.graphml.flexio.FlexIOTools offers new static support methods like public static boolean canBeSerialized(Object item, GraphMLWriteContext context) and public static boolean trySerialize(Object item, GraphMLWriteContext context) that can be used in this context as well.
    • com.yworks.yfiles.server.graphml.flexio.serializer.AbstractEdgeStyleSerializer and com.yworks.yfiles.server.graphml.flexio.deserializer.AbstractEdgeStyleDeserializer now use the (de)serialization method of the context to (de)serialize source and target arrows. Therefore their methods getArrowSerializer respectively getArrowDeserializer and deserializerArrow were removed.
    • In com.yworks.yfiles.server.graphml.support.AbstractGraphRoundtripSupport the following methods did change:
      • protected DOMInputHandler createTagInputHandler() was replaced by protected InputHandlerProvider createTagInputHandlerProvider()
      • protected DOMInputHandler getTagInputHandler() was replaced by protected InputHandlerProvider getTagInputHandlerProvider()
      • public XmlWriter createXmlWriter(OutputStream os) may now throw an GraphMLWriteException
    • In com.yworks.yfiles.server.graphml.support.GraphRoundtripSupport the following method did change:
      • protected SerializerRegistry createSerializerRegistry() was removed. Instead the method protected void addRegisteredHandlers(GraphMLHandler handler) is called by configureHandler to add SerializationHandler and DeserializationHandler to the GraphMLHandler.
      • protected SharedDataOutputHandler createSharedDataOuputHandler() was renamed to createSharedDataOutputHandler
    • In com.yworks.yfiles.server.graphml.support.Graph2DRoundtripSupport a Graph2DGraphMLHandler is used instead of GraphMLIOHandler in the methods createHandler and configureHandler.
    • The used XmlWriter moved from package org.graphdrawing.graphml.writer to y.io.graphml.output and was refactored:
      • method public void addNamespace(String URI, String prefix) was removed. Instead an y.io.graphml.output.XmlNamespaceManager can be retrieved by public XmlNamespaceManager getNamespaceManager().
      • method public XmlWriter writeCDATA(String s) was renamed to public XmlWriter writeCData(String content).
      • method public void flushDocument() throws GraphMLWriteException was added and has to be called to close the document.
      • method writeEndDocument() doesn't return the XmlWriter instance anymore.
      • method public XmlWriter writeStartDocument(String prefix, String docTag, String nsURI) throws GraphMLWriteException was changed to public XmlWriter writeStartDocument() so the first element has to be written using additional writeStartElement and writeEndElement calls.
      • the methods writeRaw, setDTD, setWriteXmlDeclaration and setEncoding have been removed.
    • The Lookup class moved from package org.graphdrawing.graphml.util. to y.io.graphml. Imports have to be adjusted accordingly.
    • com.yworks.yfiles.server.graphml.support.DotnetHierarchyGraphElementFactory now implements the interface y.io.graphml.input.GraphElementFactory instead of extending yext.graphml.compat.DotnetGraphElementFactory.
    • The class com.yworks.yfiles.server.graphml.folding.markup.Port does now implement the y.io.graphml.Port interface and has a new owner property.
    • y.geom.YInsets are now used instead of java.awt.Insets for node insets which allows to use double precision.
    • com.yworks.yfiles.server.graphml.flexio.data.DelegatingStyle now implements the interfaces INodeStyle, IEdgeStyle, ILabelStyle and IPortStyle of the same package.
  • The return type of getWidth() and getHeight() of the interface com.yworks.yfiles.server.graphml.flexio.data.IIcon was changed from int to double to be analog to the client thereby avoiding data loss during roundtrips.

yFiles FLEX 1.4.2 changes since 1.4.1.2

Improvements

Client

  • The keyboard shortcut for multi-selection can now be configured using the new GraphEditorInputMode#multiSelectionRecognizer property.
  • The default modifier for detail selection has been changed from ctrl to shift, in order to prevent clashes of detail- and multi-selection. The old behavior can be restored using the GraphEditorInputMode#detailSelectionRecognizer (see the README for details).
  • Added methods for user tag handling of "dummy elements" in folded graph views:
    • com.yworks.graph.model.IChangeDummyEdgeAppearanceCallback#setTag()
    • com.yworks.graph.model.IChangeDummyEdgeAppearanceCallback#setSourcePortTag()
    • com.yworks.graph.model.IChangeDummyEdgeAppearanceCallback#setTargetPortTag()
    • com.yworks.graph.model.IChangeLabeledItemAppearanceCallback#setLabelTag()

Bugfixes

Client

  • Fixed a memory leak which kept template components and model items styled with TemplateNodeStyle or TemplateLabelStyle in memory.
  • Fixed a bug in the default implementation of com.yworks.graph.model.IChangeDummyEdgeAppearanceCallback that caused the target port locations and styles configured using the IDummyEdgeConverter callbacks to be assigned to the source ports instead of target ports.
  • Fixed a bug that prevented correct deserialization of ports at dummy (collapsed) nodes in folded graphs. For correct deserialization, the dummy port view states are now serialized using the follwing attr.name property: attr.name="http://www.yworks.com/xml/yfiles-graphml/1.0/portviewstates". In previous yFiles FLEX versions, the attr.name for port view states was attr.name="PortViewStates".
  • Fixed multiple issues related to storing, updating, and serializing user tags of "dummy elements" in folded graph views.
  • Fixed a bug in com.yworks.canvas.input.ContextMenuInputMode which didn't remove listeners for opening context menus after uninstalling the input mode.
  • Improved calculation whether Scrollbars can be removed from the com.yworks.canvas.CanvasComponent.
  • A com.yworks.io.graphml.reader.PortStyleInputHandler is now correctly added to the com.yworks.io.graphml.GraphMLIOHandler.
  • Fixed a bug in com.yworks.io.graphml.GraphMLIOHandler which could lead to incorrect group node bounds when a folded graph with more than one managed view is read.
  • Fixed a bug in the com.yworks.canvas.CanvasComponent which prevented re-adding the mouse listeners after the canvas was removed and then again added to the display.

yFiles FLEX 1.4.1.2 changes since 1.4.1.1

Bugfixes

Client

  • Text which is not clipped is now placed correctly.

yFiles FLEX 1.4.1.1 changes since 1.4.1

Bugfixes

Client

  • The GraphCanvasComponent can now be used in the design view of Flash Builder with the Flex 4 SDK, too.
  • Removed an incorrect offset for Labels styled with the TemplateLabelStyle.
  • Labels styled with the TemplateLabelStyle now respect their style renderer's isAutoFlip() method.
  • The ImageExportHandler can now export images with elements styled with the TemplateNodeStyle or TemplateLabelStyle.
  • Text which is not left-aligned and not horizontal is now placed without incorrect offsets.
  • Edges will now be clipped correctly at nodes styled with the JavaGenericNodeStyleWrapper.
  • The FocusPaintManager can now be enabled/disabled by setting its enable property.
  • Nodes parsed from yFiles for Java compatible GraphML now will respect the hasColor attribute of their <BorderStyle> element.
  • Automatically parsed attributes (RoundtripHandler.autoReadMapperData = true) now have null values for empty data elements instread of an empty String ("").

Documentation

  • The tutorial chapters about data binding are corrected for folding enabled graphs.

yFiles FLEX 1.4.1 changes since 1.4.0.2

General

  • The filename of the Flex 3 compatible yFiles FLEX client library is now yfiles-flex-Flex3.swc. In previous yFiles FLEX releases, the filename was yfiles-flex.swc
  • Added a yFiles FLEX client library for use with the Flex 4 SDK.
  • Added separate client demo sources for Flex 4.
  • Added Flex 4 sources for the getting started guide.

Bugfixes

Client

  • Fixed a bug in the com.yworks.support.UndoEngine which prevented setting the maximum size.

Server (Java)

  • Fixed a bug in the com.yworks.yfiles.server.graphml.flexio.ObjectAttributeInputHandler which caused a NullPointerException if an empty element was read.
  • Fixed a bug in the com.yworks.yfiles.server.graphml.servlets.UploadServlet which lead to an exception if no file was uploaded and the server input stream did not support reset.

yFiles FLEX 1.4.0.2 changes since 1.4.0.1

Bugfixes

Client

  • Fixed a bug in the FoldingLayoutStage that caused an Exception when handling selfloop edges at children of collapsed nodes.
  • Fixed a bug in GraphCanvasComponent#morphGraph() that prevented correct disabling of auto adjusting group node bounds during graph layout animations of folded graphs. This sometimes resulted in incorrect group node bounds after layout animations of folded graphs.
  • Fixed a bug in FilteredGraphWrapper which caused an Error when the wrapper was initialized with a non-empty graph.
  • GraphMLIOHandler: The GraphEvent which is dispatched after reading a graph now contains the parsed graph instead of the master graph if the graph is a folded graph.
  • GraphCanvasComponent: loadGraphFromURL() doesn't replace a folded graph with its master graph anymore.
  • MagnifierInputMode: a IDisplayObjectContext is now used for rendering inside the magnifier "Lens". Items using TemplateStyle are now correctly enlarged with the magnifier.

yFiles FLEX 1.4.0.1 changes since 1.4

General

  • yFiles FLEX Client: added server side libraries for compatibility with yFiles for Java 2.6 and 2.7

Bugfixes

Client

  • Changing the port location programatically now forces a repaint of edges which start/end at that port

Java Server

  • Insets for group nodes can handle non-integer values

.NET Server

  • Insets for group nodes can handle non-integer values

Minor Improvements

  • Improved CollapsibleTreeDemo: now uses the TemplateNodeStyle
  • Improved the functionality of the AuxComponentDemo

yFiles FLEX 1.4 changes since 1.3.2

Major New Features

Support for folding operations in hierarchically grouped graphs

  • Class com.yworks.graph.model.FoldingManager can be used to establish a model-view setup where so-called managed views provide support for folding operations in a hierarchically grouped graph.
  • Interface com.yworks.graph.model.IFoldedGraph defines the contract for working with the folding-enabled graph in a managed view. It enables collapsing of group nodes and expanding of previously collapsed group nodes.
  • The various IInputMode implementations fully support working with folding-enabled graphs. Both collapsing and expanding group nodes and also navigating into and out of group nodes is covered.
  • The clipboard facility and undo engine fully support folding operations transparently.
  • A new node style decorator, com.yworks.graph.drawing.ICollapsibleNodeStyleDecorator, has been added. It is specifically designed to support the user interaction part of folding operations with group nodes by means of a collapse/expand "handle."
  • Class HierarchyTreeView provides additional folding-related support for displaying the hierarchy of a folding-enabled graph in a Tree control.

Visual Enhancements

  • Class com.yworks.canvas.model.BridgeManager provides support for so-called bridges in edge paths that resolve the visual ambiguity induced by edge crossings.

Enhanced User Interaction Support

  • A new interactive magnifying glass "tool" enables local zooming in the canvas.
  • A new navigation input mode enables users to conveniently select nodes using the cursor keys.

General

  • Distributed as bundle with a yFiles for Java or yFiles .NET server component.
  • New demo applications: FoldingDemo, BridgeDemo, LookupDecoratorDemo, JavaExportDemo.
  • Improved Getting Started tutorial.
  • The GraphML library shipped with yFiles FLEX was upgraded to version 3.1.1.

Improvements

Client

  • Port location models allow flexible handling of port locations upon node resizing.
  • Improved customizability of com.yworks.canvas.input.NodeEffectInputMode. Support for any model item kind.
  • Event com.yworks.graph.input.GraphEditorEvent reports user interaction such as creating or removing items. It also reports mouse clicks on items.
  • com.yworks.graph.model.FilteredGraphWrapper now supports grouped graphs.
  • Improved performance for node relocation in complex grouped graphs.
  • Class com.yworks.graph.model.GraphDecorator simplifies modifcations of the lookup mechanism, thus allowing convenient customization of user interaction.
  • Improved morphing between different zoom levels.
  • Bends on self loop edges are now selected when a node is selected

Server (Java)

  • Class com.yworks.yfiles.server.graphml.flexio.data.StyledLayoutGraph allows conveniently managing styles, labels and graph hierarchies at server side.
  • Class com.yworks.yfiles.server.graphml.folding.FoldedLayoutGraph allows conveniently managing graph hierarchies as expanding and collapsing group nodes at the server side.
  • IncrementalHierarchicGroupDemo does not depend any more on Graph2D.

Demos

  • Flex Builder project files allow easy import of demos into Flex Builder.
  • demo.DemoConfigTool allows flexible configuration of the web application root.
  • The IncrementalHierarchicGroupDemo works with a .NET server backend.

Bugfixes

Client

  • com.yworks.io.graphml.JavaCompatGraphMLIOHandler and com.yworks.io.graphml.DotnetCompatGraphMLIOHandler now read and write the node and edge ids (node-2-id, edge-2-id) by default.
  • Bends can now be selected with mouse clicks.
  • Java compatibility mode: embedded image resources can now be read on server side.
  • Edge creation: highlight is removed when a drag is cancelled over the source node.
  • com.yworks.io.graphml.reader.ObjectMapperAttributeInputHandler can now handle shared references.
  • Fixed dragging behavior of bends on self loop edges.
  • Fixed incorrect bend relocation when moving nodes together with bends is aborted.
  • Fixed memory leak in the graph implementation.
  • The com.yworks.graph.input.CreateEdgeInputMode resets the cursor after edge creation.
  • Fixed the viewpoint calculation for animated layouts of folded graphs

Server (.NET)

  • GraphRoundtripSupport.AttributeMapperInputHandler can now read attributes with scope graph.

Incompatible Changes

Client

  • AbstractInputMode's method install() is final now. All subclassing input modes have to refactor overriding methods public override function install( context:IInputModeContext ) to protected override functioninstallCore(context:IInputModeContext) and calls inside this method to the super implementation to super.installCore()
  • com.yworks.canvas.input.MainInputMode or com.yworks.graph.input.GraphEditorInputMode: the graphCanvas, selectionModel and collectionModel are not set at the time installing is dispatched. When initializing the input modes move all code which accesses these properties to a handler for the installed event. Note: any other customizations must still be carried out in the installing event handler.
  • Interface com.yworks.graph.model.IPortCandidate's property get location():IPoint was replaced by get locationModelParameter():IPortLocationModelParameter. Implement get locationModelParameter():IPortLocationModelParameter. To preserve the current functionality, a IPortLocationModelParameter instance can be generated from a given location by new NodeScaledPortLocationModel().createAbsoluteParameter(location.x, location.y).
  • IPortCandidate's default implementation, com.yworks.graph.model.DefaultPortCandidate, has a changed constructor signature: public function DefaultPortCandidate( owner:IPortOwner, location:IPoint=null ) was changed to public function DefaultPortCandidate( owner:IPortOwner, locationModelParameter:IPortLocationModelParameter=null ).
  • Method addPortWithParameter( portOwner:IPortOwner, modelParameter:IPortLocationModelParameter ):IPort and the defaultNodePortModelParameter property have been added to the com.yworks.graph.model.IGraph interface.
  • JavaCompatGraphMLIOHandler and DotnetCompatGraphMLIOHandler now read and write the node and edge ids (node-2-id, edge-2-id) by default. Developers who have registered node and edge attributes for these ids have to remove them.
  • GraphMoveInputMode now takes the movable items from the parent input mode if the movableItems property is set to null.
  • The interface com.yworks.support.IServiceProvider has been removed. Occurrences of this interface have been replaced by com.yworks.support.ILookup, which provides the same functionality.
  • The default value of com.yworks.canvas.CanvasComponent#mouseWheelZoom has been changed from 1.2 to 1.02.
  • The mappers which keep the node and edge IDs now use "weak" references on nodes and edges: Node and edge instances are eligible for garbage collection after they are removed from the graph and if no other reference to the instance is kept elsewhere.

Server (Java)

  • The default value of the com.yworks.yfiles.server.graphml.flexio.data.TemplateStyle's dataPropertyName has been changed to "dataObject" in order to match the corresponding default value of the client-side template style implementation.

yFiles FLEX 1.3.2 changes since 1.3.1

Major New Features

  • The yFiles FLEX client and server components now support automatic reflection based (de)serialization of custom data objects from/to GraphML.
  • New com.yworks.graph.drawing.ITemplateStyle allows to easily use custom context-aware MXML template components for node- and label visualizations.
  • Improved printing support: poster printing, easier customization using new class com.yworks.canvas.CanvasPrinter.

General

  • New demo applications: Business Process Diagram Demo, Orgchart Demo, Template Style Demo

Minor Improvements

Client

  • New com.yworks.graph.drawing.IDelegatingStyle along with abstract implementations for node-, edge-, label- and port styles allows to conveniently decorate existing styles.
  • "User tags" (user defined data objects) that are associated with graph items through the ITagOwner interface are now properly (de)serialized, if the GraphMLIOhandler's supportUserTags flag is set.
  • A font scaling incompatibility between the flex client and a .NET server component can now be adjusted through corresponding properties of the RoundtripHandler (client) or GraphRoundtripSupport (server) instance.
  • Improved label text positioning within the label bounds.
  • New com.yworks.canvas.input.MultiplexingInputMode#defaultCursor property allows to easily define a custom default cursor.
  • New property com.yworks.canvas.input.OverviewInputMode#viewPortPaintable allows to customize the view port visualization of the canvas overview.
  • Pixel hinting is now enabled for default strokes used in yFiles FLEX styles.
  • improved hit test implementation for com.yworks.graph.drawing.SimplePortStyleRenderer.
  • Client-side support for yFiles Java generic node realizers through class com.yworks.graph.drawing.compat.JavaGenericNodeStyle.
  • Content rect changes are now part of the undo/redo chain.
  • The free label models now allow to easily enable interactive label movement.
  • Interface com.yworks.graph.model.IPreferredSizeChangedListener allows to listen to any changes to a label's preferred size.
  • New class com.yworks.graph.model.TagOwnerMapper allows to easily access the tags of ITagOwners through the IMapper interface.
  • Improved handling of GraphML default values.
  • Improved read/write support for yFiles Java label models.

Server (Java)

  • Added methods for convenient user tag handling to class com.yworks.yfiles.server.graphml.flexio.FlexIOTools.

Bugfixes

Client

  • Fixed a bug that would yield duplicate line breaks in graph labels in some client/server environments.
  • Fixed possible null reference error when installing input modes.
  • Fixed possible null reference error when using com.yworks.graph.drawing.IconLabelStyleRenderer with a null context.
  • Fixed cloning of the com.yworks.graph.drawing.ImageNodeStyle's className property.
  • Fixed the com.yworks.graph.input.GraphEditorInputMode#groupSelectionAllowed and ungroupSelectionAllowed properties.
  • Changing an edge's style will now correctly dispatch the corresponding event and call the corresponding callbacks.
  • Any ISerializers and IDeserializers that have been added to a GraphMLIOHandler instance are now always used. Before, they were used only if the readStyles/writeStyles flags were set.
  • Setting a custom overviewInputMode for a com.yworks.ui.GraphOverviewComponent now works correctly.

Server (Java)

  • Fixed deserialization of the SimpleLabelStyle's clipText property.

Incompatible Changes

Server (Java)

  • com.yworks.yfiles.server.graphml.support.XmlSupport#getTextContent() now returns an empty string instead of null if no text content exists for the given node.

yFiles FLEX 1.3.1 changes since 1.3

General

  • New demo application: Grid Demo.

New features

  • Port styles are now correctly (de)serialized on the client.
  • New abstract style com.yworks.graph.drawing.SimpleNodeStyle can be used to conveniently implement a custom painted node style without having to implement a separate renderer.
  • New label style com.yworks.graph.drawing.CSSLabelStyle allows to define label style properties using css.
  • Improved MXML support:
    • Many properties provided by the yFiles FLEX that couldn't be used for data binding before are now bindable.
    • Some yFiles FLEX classes now provide a default constructor, such that they can be instantiated using MXML, e.g. GraphEditorInputMode.
  • New class com.yworks.graph.model.FilteredGraphWrapper allows to conveniently create a filtered view of a graph.
  • Improved support for the Flex Builder design view.
  • New interface com.yworks.graph.model.IPortLocationChangeListener allows to register for port location changes on the default graph using the com.yworks.graph.model.IPortLocationChangeReporter interface.
  • com.yworks.remote.RoundtripHandler#addObjectMapperAttribute() now allows to read and write complex graph item data attributes.
  • More events have been added to com.yworks.remote.RoundtripHandler that are dispatched to notify of the roundtrip process.

Improvements

Client

  • com.yworks.canvas.input.MoveInputMode#createMoveUnselectedInputMode() allows to create a move input mode that moves unselected items.
  • com.yworks.canvas.input.MoveInputMode's contextMenuModeEnabled, handleInputModeEnabled, moveModeEnabled, clickModeEnabled, marqueeSelectionModeEnabled and keyboardModeEnabled properties allow to conveniently enable/disable the various child input modes.
  • Improved com.yworks.canvas.drawing.PathCursor.
  • Improved com.yworks.canvas.drawing.YGraphics#fillRect() to support gradients.
  • com.yworks.canvas.drawing.YGraphics#drawStyledString() allows to use css styles when drawing strings.
  • com.yworks.canvas.input.AbstractInputMode now dispatches events when being installed/uninstalled.
  • Class com.yworks.canvas.input.ContextMenuInputMode now allows to configure whether the custom menu items should be removed before dispatching the context menu event, using the autoCleanCustomMenuItems property. The old behvaior was to always remove these items.
  • com.yworks.graph.drawing.BevelNodeStyle can no provide a radius handle.

Server (Java)

  • Improved support for working with grouped layout graphs using a yFiles Java server component.
  • Server-side (de)serialization for the client-side ComponentNodeStyle has been added.
  • Improved label size handling on the server.

Bugfixes

Client

  • Fixed a bug that caused a null reference error to be thrown when modifying certain graph hierarchies.
  • Fixed a bug in the undo engine that could throw a null reference error in a sequence of cut,undo,redo operations.
  • The setter of com.yworks.canvas.input.MoveInputMode's releasedRecognizer property will now correctly set the event recognizer for the release event. Also, MoveInputMode's hoverRecognizer property now allows to set a custom event recognizer that determines whether the mouse is hovering over a movable item.
  • Fixed stroke handling when drawing arrows, such that the stroke is correctly restored after the arrow has been drawn.
  • The insets of com.yworks.graph.drawing.BevelNodeStyle are now correctly considered by the drawing engine.
  • com.yworks.graph.drawing.NodeStyleLabelStyle now correctly uses the wrapped node style's insets.
  • Fixed a bug that would corrupt the state of the graph canvas when multiple graph animations were triggered simultaneously.

Incompatible Changes

Client

  • Mouse event handling of the canvas component changed: except during drag gestures, only events that occur while the mouse is hovering over the canvas are dispatched. This fixes some issues that could occur when using the yFiles FLEX canvas in a complex component hierarchy.
  • com.yworks.graph.drawing.BevelNodeStyleRenderer now doesn't require a style to be passed to the constructor anymore.
  • When a port or bend is added, the default graph implementation won't dispatch node/edge changed events anymore
  • com.yworks.graph.model.IGraph#ports now returns a collection of type ICollectionModel.

yFiles FLEX 1.3 changes since 1.3-RC-1

Bugfixes

Client

  • The undo engine will now correctly undo changes to the canvas' content rectangle.
  • Fixed a bug that prevented correct parsing of edge labels when using the yFiles Java compatibility mode.

Server (Java)

  • Fixed layout handling for labels.

Improvements

Client

  • The static shared parameter instances of com.yworks.graph.model.ExteriorLabelModel and com.yworks.graph.model.InteriorLabelModel are now unmodifiable.

yFiles FLEX 1.3-RC-1 changes since 1.3-EAP-2

Improvements

Server (Java)

  • A compatibility layer has been added to the yFiles FLEX API for Java server components that facilitates working with the yFiles FLEX client's styles and labels.
  • Added data objects for compatibility with the yFiles FLEX client to the com.yworks.yfiles.server.graphml.flexio.data package: GenericLabelModel, IconLabelStyle, and RotatingEdgeLabelModel.

Client

  • Compatibility issues with the Adobe Air library have been resolved.
  • Improved performance of the internal graph structure representation.
  • New demo application for the Adobe® AIR™ technology.
  • A com.yworks.canvas.input.IInputModeContext property was added to class com.yworks.canvas.input.ClickEvent.
  • New source-code demo application that shows how to use the ComponentNodeStyle.
  • Improved intersection calculation for com.yworks.graph.drawing.BevelNodeStyle, com.yworks.graph.drawing.ShapeNodeStyleand com.yworks.graph.drawing.GeneralPathNodeStyle.
  • New properties writeLabels and readLabels of class com.yworks.io.graphml.GraphMLIOHandler.
  • Improved handling of default values when writing GraphML output: New method isDefaultData of interface com.yworks.io.graphml.writer.IOutputHandler.
  • Insets of group nodes are now correctly transferred between client and server.

Incompatible Changes

Client

  • Class com.yworks.canvas.input.CanvasMouseEvent now extends flash.events.Event instead of flash.events.MouseEvent. This change was necessary because of a compatibility issue with the Adobe AIR framework.
  • The signature of the textProvider Function of class com.yworks.canvas.input.MouseHoverInputMode was changed: It now expects an instance of com.yworks.canvas.input.IInputModeContext instead of a com.yworks.canvas.CanvasComponent as the first argument.
  • The signature of the nodeCreator Function of class com.yworks.canvas.input.GraphEditorInputMode was changed: A parameter of type com.yworks.canvas.input.IInputModeContext was added.
  • The constructor of classes com.yworks.canvas.input.CanvasContextMenuEvent now expects an additional parameter of type com.yworks.canvas.input.IInputModeContext.
  • The "viewPortChanged" event dispatched by class com.yworks.canvas.CanvasComponent now dispatched a com.yworks.canvas.CanvasEvent.
  • Interface com.yworks.graph.drawing.IIconLabelStyle now uses an instance of class com.yworks.graph.drawing.IIcon instead of a DisplayObject as its icon.
  • com.yworks.io.graphml.reader.deserializer.ComponentNodeStyleDeserializer now passes the element node that represents the serialized component to the actual deserializer of the component, instead of its parent xml element.

Server (Java)

  • Class com.yworks.yfiles.server.graphml.support.GraphRoundtripSupport is now configured to read and write yFiles FLEX client compatibility data objects instead of xml DocumentFragments. In order to use DocumentFragments, setDocumentFragmentMode(true) can be used.

Bugfixes

Client

  • The drawing color is now correctly reset when drawing arrows with custom border colors.
  • Fixed a bug that would sometimes prevent correct parsing of shared references on the client.
  • The clipText property of class com.yworks.canvas.drawing.SimpleLabelStyle is now correctly read and written.
  • Writing of yFiles Java compatibility styles that don't have a stroke assigned won't cause a null reference error anymore.

yFiles FLEX 1.3-EAP-2 changes since 1.3-EAP-1

General

  • The developer's guide was updated to include documentation on the new features of yFiles FLEX 1.3.
  • New demo applications: DrillDown, Swimlane, PortCandidates.

Incompatible Changes

Client

  • The interface com.yworks.graph.model.IPortCandidateProvider changed. An IInputModeContext parameter was added to all methods.

yFiles FLEX 1.3-EAP-1 changes since 1.2.1

Major New Features

  • Interactive grouping
  • New grouping demo
  • Undo/Redo support
  • Clipboard functionality
  • Support for highlighting of graph items
  • New Hierarchy View component
  • New panel node style
  • Interactive port relocation

General

  • The GraphML library that comes with yFiles FLEX was upgraded to version 3.0.3.

Improvements

Client

  • New class com.yworks.canvas.input.IInputModeContext provides a context for all input modes. inputModeContext is a new property of com.yworks.canvas.CanvasComponent.
  • Improved canvas mouse event handling: Various hooks and configuration properties for mouse events were added on com.yworks.canvas.CanvasComponent.
  • Input modes can now be set directly on the com.yworks.canvas.CanvasComponent using the inputMode property and methods addInputMode(), removeInputMode().
  • com.yworks.canvas.input.ClickInputMode can now be configured to "swallow" the first mouse click event if the focus was gained with this gesture.
  • The lookup implementation now uses a com.yworks.graph.model.AbstractModelItem delegate lookup implementation that can be passed to the constructor of all graph model items or set using setLookupImplementation(). The lookup behavior of the default graph model items is now implemented in the corresponding lookup delegate implementations DefaultNodeLookup, DefaultEdgeLookup, DefaultLabelLookup, DefaultBendLookup and DefaultPortLookup.

Bugfixes

Client

  • Setting the cursor property on com.yworks.canvas.CanvasComponent will now always change the current cursor immediately, if the mouse pointer is located over the canvas.
  • com.yworks.canvas.input.ContextMenuInputMode now won't throw an Error if a context menu is opened before it was correctly installed.
  • Fixed serialization of default arrows with arrow type ArrowType.NONE. Using ArrowType.NONE could throw an Error upon deserialization before this bug was fixed.
  • Changing the selection model on an input mode will now correctly reset the selection state.

Minor Changes

Client

  • com.yworks.canvas.CanvasComponent now implements com.yworks.support.ILookup.
  • New method iterateHits of com.yworks.canvas.CanvasComponent allows to easily iterate all canvas objects that are located at a given coordinate. The canvas objects can be filtered before hit testing using a custom filter function.
  • Improved performance of com.yworks.canvas.geom.Yrectangle#reshape()
  • com.yworks.canvas.input.ReshapeableHandle and com.yworks.canvas.input.ReshapeableHandles now support a minimumEnclosedArea.
  • New com.yworks.graph.drawing.DelegatingStyle.
  • New client- and server classes for conveniently handling graph uploads.
  • Improved collections: new double-linked list com.yworks.support.YList and new HashSet implementation. com.yworks.support.ArrayList and com.yworks.support.YList now support for .. in iteration and the array access operator.

Incompatible Changes

Client

  • All input modes now use an com.yworks.canvas.input.IInputModeContext. Therefore, the interface com.yworks.canvas.input.IInputMode has changed. All inheritors of IInputMode have been adapted accordingly.
  • Interface com.yworks.canvas.input.IPositionHandler has also been changed to use com.yworks.canvas.input.IInputModeContext.
  • Dispatching of mouse events has changed for com.yworks.canvas.CanvasComponent. Please see the migrations section of the README file contained in the yFiles FLEX distribution for details.

yFiles FLEX 1.2.1 changes since 1.2

Improvements

Client

  • Support for client-side export of bitmap images through class com.yworks.remote.ImageExportHandler.
  • Improved bounds calculation for text labels.
  • Improved customizability of com.yworks.canvas.input.NodeEffectInputMode.
  • Improved com.yworks.graph.drawing.ComponentNodeStyle (cloning, (de)serialization, documentation).
  • Improved support for SWF nodes using class com.yworks.graph.drawing.SWFNodeStyle.
  • Performance optimizations related to mouse gestures.
  • Interactive relocation of labels implemented for most label models.
  • All icon resources located in the com.yworks.resources.actions package were replaced by icons created by yWorks.

Documentation

  • All yFiles FLEX Documentation can now be easily added to the Eclipse/Flex Builder help system.
  • The getting started guide now includes a .NET server section.

Demos

  • Added an example component serializer/deserializer to the callout demo.
  • Added client-side export of bitmap images to the graph canvas demo.

Bugfixes

Client

  • The CanvasComponent is now correctly updated when its size is changed interactively.
  • SWF nodes that were deserialized from base64 strings will not flicker anymore when the canvas is repainted.
  • com.yworks.canvas.input.MoveInputMode can now correctly be cancelled.
  • Fixed focus issue of text fields for interactive label editing.
  • Fixed a bug that would sometimes cause an error to be thrown while painting a ComponentNodeStyle.
  • Fixed a bug that caused arrows to be created even if not needed when parsing old GraphML format.
  • ISerializers and IDeserializers that were registered last will now correctly be used first.
  • The erroneous click offset of the hand cursor was corrected.

yFiles FLEX 1.2 changes since 1.2-RC-1

Improvements

Client

  • The com.yworks.canvas.input.GraphEditorInputMode now comes with a MoveLabelMode per default.
  • The com.yworks.graph.drawing.ImageNodeStyle was improved to allow for more ways of specifiying the image to be displayed. Also, (de)serialization of embedded bitmap images passed to the ImageNodeStyle was improved.
  • Dashed/dotted strokes are now correctly (de)serialized.

Bugfixes

Server (yFiles Java)

  • Class com.yworks.yfiles.server.graphml.support.Graph2DRoundtripSupport will now correctly configure the io handler, so no duplicate node- or edge realizers will appear in the GraphML output anymore.

Client

  • A bug in the visibility calculation of the default edge renderer was fixed that would sometimes prevent interactive bend creation at certain coordinates.
  • Setting com.yworks.io.graphml.GraphMLIOHandler#writeSharedReferences to false now actually has the desired effect.
  • Assigning an empty dash pattern array to a com.yworks.canvas.drawing.AdvancedStroke won't cause erroneous painting anymore.
  • Trying to access the clickPoint property of com.yworks.canvas.input.ClickInputMode before a click event has occured will not yield a null reference error anymore.
  • All images will now properly show up when loading multiple images at once using the com.yworks.graph.drawing.BitmapNodeStyle or com.yworks.graph.drawing.ImageNodeStyle.

Minor Changes

Client

  • The SIMPLE arrow type is not filled anymore.
  • Many improvements to the apidocs.

yFiles FLEX 1.2-RC-1 changes since 1.2-EAP-1

Summary

  • Improved double click support.
  • Improved support for enabing/disabling editing functionality for the various graph item types.
  • New FreeNodeLabelModel

Improvements

Client

  • com.yworks.canvas.input.HandleInputMode now offers an active property that toggles whether the mode is active.
  • com.yworks.canvas.input.GraphEditorInputMode now offers various properties that allow fine-grained control of graph editing functionality: marqueeSelectableItems, clickSelectableItems, selectableItems, movableItems, deletableItems, showHandleItems. In addition, callbacks shouldShowHandles, shouldBeDeleted, and shouldBeMovable were introduced.
  • com.yworks.canvas.input.CanvasMouseEvent now offers a clickCount property to distinguish between left and right clicks.
  • com.yworks.canvas.input.ClickInputMode can now also be used for double click events and offers more configuration options.
  • Added the Short, Simple, and Cross arrow types for improved compatibility with yFiles.NET.
  • New node label model com.yworks.graph.model.FreeNodeLabelModel.
  • Improved configuration options for com.yworks.graph.model.GraphModelManager.
  • The smoothing parameter of com.yworks.graph.drawing.IPolylineEdgeStyle will now be correctly (de)serialized.
  • Dashed/dotted edge strokes will now be correctly (de)serialized when using the yFiles for Java GraphML format.
  • Class com.yworks.remote.HttpServiceFactory will now append a <service-extension> parameter specified in the config file to all service urls.
  • New backgroundGroup property for com.yworks.ui.GraphCanvasComponent.

Server (yFiles.NET)

  • The default Web.Config now uses the .ashx file extension for defining http handler mappings. If no file extension is used, the web site will not work with some IIS versions.

Incompatible Changes

Server (yFiles for Java)

  • Class com.yworks.yfiles.server.graphml.support.GraphRoundtripSupport now only has a default constructor. Instead of using class GraphRoundtripSupport in Graph2D mode, the new class Graph2DRoundtripSupport should now be used.

Client

  • Instead of creating a new instance for every roundtrip, com.yworks.remote.RoundtripHandler will now reuse the inputIOHandler instance. createInputIOHandler will only be called the first time the property is accessed.

Bugfixes

Client

  • com.yworks.canvas.drawing.AdvancedStroke.drawPath now correctly transforms the path using the current graphics transformation.
  • Setting GraphEditorInputMode.handleInputMode.enabled to false won't lead to inconsistent behavior anymore.
  • com.yworks.ui.GraphCanvasComponent.morphGraph() will now correctly restore the scroll policies to their old values after the animation has finished.

yFiles FLEX 1.2-EAP-1 changes since 1.1

Summary

  • Support for custom dotted/dashed strokes
  • Overview component
  • Improved compatibility with yFiles Java
  • New styles: BevelNodeStyle, BitmapNodeStyle, ComponentNodeStyle, IconLabelStyle, NodeStyleLabelStyleAdapter, JavaShapeNodeStyle, JavaImageNodeStyle
  • New label models: InteriorStretchLabelModel, GenericLabelModel
  • Easy configuration of lookup behavior.
  • Read/write shared references in GraphML.
  • Includes a Flex library compiled for use with the Flex 3 SDK.

Improvements

Client

  • New classes com.yworks.canvas.drawing.IAdvancedStroke and AdvancedStroke for use with YGraphics allow for drawing dotted/dashed strokes or implementation of custom strokes.
  • New component com.yworks.ui.GraphOverviewComponent and class com.yworks.canvas.input.OverviewInputMode allow to easily add overview functionality to a yFiles FLEX client.
  • New class com.yworks.graph.drawing.AbstractLabelStyleRenderer allows easier implementation of custom label styles.
  • New fancy com.yworks.graph.drawing.BevelNodeStyle
  • New com.yworks.graph.drawing.BitmapNodeStyle that allows reading/writing base64-encoded bitmap data.
  • New com.yworks.graph.drawing.ComponentNodeStyle that allows to use arbitrary flex components for node visualization.
  • New com.yworks.graph.drawing.IconLabelStyle that allows to draw images in a node- or edgelabel.
  • New com.yworks.graph.drawing.NodeStyleLabelStyleAdapter allows to use node style implementations for drawing labels.
  • New yFiles for Java-compatible style implementations: com.yworks.graph.drawing.compat.JavaImageNodeStyle
    and com.yworks.graph.drawing.compat.JavaShapeNodeStyle
  • New com.yworks.graph.model.InteriorStretchLabelModel
  • New com.yworks.graph.model.GenericLabelModel
  • Lookup behavior of graph model items can now be easily customized at runtime since the default graph structure now implements com.yworks.support.ILookupDecorator.
  • GraphML reading/writing on the client now supports shared references for both the yFiles for Java and yFiles.NET GraphML formats.
  • New class com.yworks.io.graphml.reader.AbstractDeserializer makes it easier to implement custom deserializers(e.g. node styles).

Minor Changes

Client

  • The CanvasComponent won't draw a solid line at the bottom anymore.
  • New events in com.yworks.canvas.CanvasComponent: contentRectChanged, viewPortChanged and invalidated.
  • New class com.yworks.canvas.drawing.BoundsProvider provides default IBoundsProvider implementations.
  • New method com.yworks.canvas.drawing.ShapePaintable#createViewOrientedRectangle creates a paintable that draws an oriented rectangle in the view coordinate system.
  • New property com.yworks.graph.drawing.ISimpleLabelStyle#clipText that allows to specifiy whether the label text should be clipped.
  • com.yworks.graph.drawing.ShapeNodeStyleRenderer#isInside will now consider the exact shape bounds.
  • Most style implementations now offer a createClone() method for easier subclassing.
  • New flag com.yworks.graph.input.GraphEditorInputMode#nodeCreationAllowed
  • New properties com.yworks.graph.model.IGraph#defaultNodeLabelModelParameter
    and com.yworks.graph.model.IGraph#defaultEdgeLabelModelParameter

Bugfixes

Client

  • An image drawn with com.yworks.canvas.drawing.YGraphics#drawImage will now be correctly transformed using the current graphics transformation.

Server (yFiles.NET)

  • yWorks.yFiles.Graph.Web.SaveGraphHandler will now correctly decode GraphML data send from the client before writing it to the save stream.

yFiles FLEX 1.1 changes since 1.1-RC2

Bugfixes

Client

  • Fixed a bug that would cause arrows to be deserialized incorrectly when GraphML data was send from a yFiles Java server.
  • Fixed a bug that caused serialization of target arrows as source arrows.
  • Fixed a bug in com.yworks.canvas.input.MultiplexingInputMode#remove
  • Fixed a bug in com.yworks.canvas.geom.GeomSupport#setCenter that caused the RotatingEdgeLabelModel to draw calculate its geometry with an erroneous offset.
  • Reverted to a previous version of the Adobe Flex SDK libraries for building the bundled yFiles FLEX client library, since the newer libraries caused the blue box of the label editor to stay visible when the label editor was removed.

Incompatible API changes

Client

  • Removed com.yworks.support.IEnumerator and com.yworks.support.IEnumerable (use com.yworks.support.Iterator and com.yworks.support.Iterable instead).
  • com.yworks.graph.model.ILabelModelParameterProvider#getParameters now returns a com.yworks.support.Iterator.

yFiles FLEX 1.1-RC2 changes since 1.1-RC1

Improvements

General

yFiles FLEX now supports client-server compression. This feature will substantially speed up client-server communication.

Client

  • Support for client-side compression: compress property on com.yworks.remote.RoundtripSupport and com.yworks.remote.DownloadHandler
  • New edge label model: com.yworks.graph.model.FreeEdgeLabelModel.
  • New distance and edgeRelativeDistance parameters for com.yworks.graph.model.RotatingEdgeLabelModel.
  • Improved serialization of label models when the yFiles Java compatibility mode is used.

Bugfixes

Client

  • Fixed a bug that would cause arrows to be deserialized incorrectly when GraphML data was send from a yFiles Java server.
  • Fixed a bug that caused serialization of target arrows as source arrows.

Server

  • The support class com.yworks.yfiles.server.graphml.support.GraphRoundtripSupport for yFiles Java server components will now try to map client label models to yFiles Java label models, if setMapLabelModels( boolean ) is set to true (the default).
  • com.yworks.yfiles.server.graphml.support.GraphRoundtripSupport will now automatically deflate/decode the GraphML data sent from the client, using the new com.yworks.yfiles.server.graphml.support.GraphDecoder class.

yFiles FLEX 1.1-RC1 changes since 1.0.2

Improvements

General

A small .NET server library and C# source code demo applications have been included in the distribution, demonstrating the fact that yFiles FLEX can be used both with our yFiles Java and yFiles .NET libraries.

Improvements

Client

  • The GraphML file format has changed for arrows and user tag objects. Reading/writing the old format is still supported.
  • Support for reading default values in GraphML files.
  • The default arrow implementation is now able to serialize itself.
  • New backgroundAlpha property for com.yworks.canvas.CanvasComponent.
  • Added a scale parameter to the constructor of com.yworks.graph.model.DefaultArrow.
  • The client can now read/write named colors (compatible to color names in the .NET framework) to/from GraphML files.
  • com.yworks.canvas.input.MainInputMode#collectionModel is now writable.
  • When the selection model of the com.yworks.canvas.input.MainInputMode is replaced, the internal state is now correctly updated.
  • com.yworks.graph.input.CreateEdgeInputMode#getTargetPortCandidateProvider now won't be called with a null sourcePortCandidate when the first edge is created.
  • New protected method com.yworks.graph.model.AbstractPortCandidateProvider.createInstance
  • New class com.yworks.graph.model.PortCandidateProvider
  • Version information for GraphML files: New writeMajorVersion/readMajorVersion and writeMinorVersion/readMinorVersion properties of com.yworks.io.graphml.GraphMLIOHandler
  • Improved configurability of com.yworks.io.graphml.GraphMLIOHandler: New method createWriteContext, createGraphMLParser, createParseContext
  • New property initialContext on com.yworks.io.graphml.reader.GraphMLParser
  • New class com.yworks.io.graphml.reader.XmlAttributesParserAdapter
  • New utility methods for handling named colors in com.yworks.io.graphml.realizer.GraphicsSerializationToolkit
  • New read/write property initialContext, read property context and method addXMLAttributeProvider on com.yworks.io.graphml.reader.DirectGraphMLWriter
  • New class com.yworks.io.graphml.writer.XmlAttributesProviderAdapter

Incompatible API changes

Client

  • Added a context parameter to com.yworks.io.graphml.writer.ISerializer#canHandle

yFiles FLEX 1.0.2 - changes since 1.0.1

Improvements

Client

  • New Drag and Drop demo application.
  • License validation will now work correctly if the Flex Builder design mode is used.
  • The canvas now clips the displayed content more precisely.
  • Mouse coordinates are now more precise, no matter which zoom level is chosen.
  • Improved invalidation mechanism for canvas items: com.yworks.canvas.ICanvasObjects have a dirty property that can be queried using com.yworks.canvas.ICanvasObjectDescriptor#isDirty.
  • com.yworks.graph.drawing.ShapeNodeShape now supports all node shapes that are offered by the yFiles Java and yFiles.NET libraries.
  • Added more configuration options for the com.yworks.io.graphml.GraphMLIOHandler.

Server

  • The yFiles FLEX server API is now completely compatible with the Servlet Specification version 2.3.

Bugfixes

Client

  • The scrollbars are correctly updated whenever the viewpoint changes.
  • The print area is now correctly calculated for zoom levels other than 1.0.
  • The mouse cursor is now correctly updated when the mouse leaves/enters the canvas area.
  • Fixed com.yworks.canvas.drawing.GeneralPath#getTangent. The bug in the former implementation could cause misplacement of canvas items.
  • Fixed a bug that sometimes caused morphing animations to end with a wrong viewpoint/zoom level.
  • yFiles FLEX will now correctly parse GraphML data containing the false yWorks namespace URI that was exported by some older yWorks products.
  • Fixed a bug that could cause incorrect edge removal operations during graph morphing animations.
  • Fixed target zoom level calculation of empty graphs in com.yworks.ui.GraphCanvasComponent#morphGraph.

Minor API improvements

Client

  • com.yworks.canvas.CanvasComponent#forceRepaint allows to force a repaint of all items displayed in the canvas.
  • com.yworks.canvas.CanvasComponent#cursor property allows to set the cursor that is shown for the canvas component.
  • com.yworks.canvas.CanvasComponent#zoomIfCanvasHit property allows to configure when the mouse wheel triggers zooming.
  • com.yworks.graph.model.DefaultArrow#create now doesn't use a default IStroke and/or IFill anymore, if null is passed as the stroke or fill parameter. Use com.yworks.graph.model.DefaultArrow#createDefault to create an arrow with default stroke and fill.
  • The lookup implementations of com.yworks.graph.model.DefaultEdge, com.yworks.graph.model.DefaultLabel and com.yworks.graph.model.DefaultPort will now correctly delegate at first to the lookup implementations of their style renderers.

Server

  • com.yworks.yfiles.server.graphml.servlets.LoadGraphServlet and com.yworks.yfiles.server.graphml.servlets.DownloadServlet now allow to set the content type of the response header.

yFiles FLEX 1.0.1 - changes since 1.0

Bugfixes

  • Some of the IInputMode implementations that are based on StateMachineInputMode did not cancel correctly. This led to inconsistent states in the editor which in turn could lead to exceptions.
  • During the editing of a label the TextEditorInputMode's input field did not react properly to mouse events and got into a bad state once the mouse had been clicked in it.
  • The EventRecognizers.SHIFT_PRESSED function will now only return true if the event target has the focus.
  • Events consumed by the canvas component will not be propagated.

yFiles FLEX 1.0 - changes since 1.0 rc-3

Features

  • Printing support
  • Full support for (de)serialization of all default graph item styles
  • New edit mode for bend creation
  • New edge label model: SliderEdgeLabelModel
  • Graph morphing now also animates node size changes

Bugfixes

  • Context Menu Popups while creating edges now correctly cancel edge creation
  • Marquee selection now works also outside of the canvas bounds
  • Bends no longer jump to the upper left corner during graph morphing

Incompatible API changes

Client

  • Class com.yworks.canvas.geom.IReshapable was renamed to com.yworks.canvas.geom.IReshapeable
  • Removed interface com.yworks.graph.drawing.IStyle
  • Class com.yworks.graph.drawing.IPolyLineEdgeStyle was renamed to com.yworks.graph.drawing.PolylineEdgeStyle
  • Class com.yworks.graph.drawing.IPolyLineEdgeStyleRenderer was renamed to com.yworks.graph.drawing.PolylineEdgeStyleRenderer
  • Class DefaultArrow moved to package com.yworks.graph.model
  • Class com.yworks.graph.model.ExternalLabelModel moved to com.yworks.graph.model.ExteriorLabelModel
  • Class com.yworks.graph.model.ExternalLabelModelParameter moved to com.yworks.graph.model.ExteriorLabelModelParameter
  • Class com.yworks.graph.model.InternalLabelModel moved to com.yworks.graph.model.InteriorLabelModel
  • Class com.yworks.graph.model.InternalLabelModelParameter moved to com.yworks.graph.model.InteriorLabelModelParameter
  • Interface IArrow moved to package com.yworks.graph.model
  • Interface com.yworks.graph.model.IBendList no longer extends interface Collection
  • Class ILabelModelParameter was moved to package com.yworks.graph.model
  • It is no longer possible to add (de)serializers to a GraphMLIOHandler statically
  • Class com.yworks.io.graphml.realizer.PolyLineEdgeStyleRealizerSerializer was renamed to com.yworks.io.graphml.realizer.PolylineEdgeStyleRealizerSerializer
  • Package com.yworks.remote:
    Classes AbstractResultHandler, AbstractRoundTripHandler, LayoutHandler, LoadGraphHandler, LoadGraphsHandler and SetupHandler were moved to the source code demos.
  • Class com.yworks.UI.GraphCanvasComponent was moved to com.yworks.ui.GraphCanvasComponent

Server

  • Refactored most Servlet classes that existed in the release candidate libraries and released these classes as Demo sources.

yFiles FLEX 1.0 rc-3 - changes since 1.0 rc-2

Features

  • Many improvements to the client GraphML support library - now, graph structure and layout information can be tranferred to the server using graphml export functionality
  • New class com.yworks.remote.AbstractRoundTripHandler allows easy update of the server state upon change of the client state.

Incompatible API changes

  • The com.yworks.graphml package was completely refactored. Nevertheless, as few changes as possible were made to the api of com.yworks.graphml.GraphMLIOHandler.
  • com.yworks.canvas.CanvasComponent#setViewPointImpl is now private.
  • Removed the controlPoints property from com.yworks.graph.model.IEdge

yFiles FLEX 1.0 rc-2 - changes since 1.0 rc-1

Features

  • Support for exact port calculation when calculating automatic layouts on the server
  • Updated the collapsible tree demo to support all sorts of node styles
  • Improved ImageNodeStyle: load images from urls, render a delegate node style while loading an image.
  • Improved label size measurment
  • Upon graph morphing/update, all data associated with nodes or edges may optionally be updated
  • Font mapping possibility: allows users to specify how fonts specified in graphml files are mapped to fonts in flex

Bugfixes

  • Node and edge label models of new nodes/edges are correctly transfered during graph morphing
  • Edge/Node intersections are calculated correctly also when ports are located on the node boundaries
  • Port locations are correctly updated during graph morphing
  • Fixed a bug that caused some edge labels to be rendered twice

Incmpatible API changes

  • Class com.yworks.support.Util moved to com.yworks.util.Util
  • Property com.yworks.support.Iterable.iterator replaced with method com.yworks.support.Iterable.iterator()

yFiles FLEX 1.0 rc-1 - changes since 1.0 beta

Features

  • Parsing and rendering capability for additional ShapeNodeShapes.
  • Exact edge intersection calculation and hit tests for all ShapeNodeShapes.
  • New interface IGeneralPathNodeStyle and default implementations GeneralPathNodeStyle and GeneralPathNodeStyleRenderer

Bugfixes

  • Upon parsing GraphML files with nested graphs, the GraphML parser will fail with a meaningful error.
  • Parsing of GraphML files containing y:PolyLineEdge elements that lack y:Path elements won't crash the GraphML parser anymore.
  • Rendering of zero-length edges works properly.