This file documents the feature enhancements and API changes to previous yFiles FLEX versions.
com.yworks.yfiles.server.graphml.flexio.FlexIOToolsfixed that broke committing the edge label layout for labels using a
FreeEdgeLabelModelas part of an
com.yworks.canvas.ViewportLimitercan be used to restrict the region that is viewable in the canvas. The following convenience methods using
ViewportLimiterhave been added to class
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.
IncrementalHierarchicLayouter. Different edge routing styles can be specified using class
PreferredPlacementDescriptor: A new descriptor that allows to specify advanced preferred placement information for edge labels.
PreferredLabelPlacementDemoshows how to configure the
PreferredPlacementDescriptorof 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.
com.yworks.ui.GraphCanvasComponent#morphGraphfunction 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
demo/resources/Iconscontaining new icons for buttons.
com.yworks.canvas.input.MultiplexingInputModes from correctly disabling their child modes when the
enabledproperty is set to
com.yworks.canvas.CanvasComponent#updateContentRectto be added to the resulting content rect twice.
com.yworks.graph.drawing.CollapsibleNodeStyleDecoratorto handle UIComponents correctly.
com.yworks.graph.input.NodeDropInputModeto resize group nodes and table nodes correctly when a node is dropped.
<y:LineType>elements. RGB colors are not read as ARGB anymore.
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.
RangeErrorwhen trailing line breaks were removed by truncation.
HandleInputModewasn't available as
IInputModeContext.parentInputModein the input mode context it passes to
com.yworks.graph.drawing.ShinyPlateNodeStyleRendererthrew error when the style's fill was
edge-2-idmaps are now parsed as
com.yworks.io.graphml.realizer.ProxyNodeRealizerSerializercan now handle other realizers than
GroupNodeRealizersas inner realizers.
com.yworks.canvas.HandleInputModenow can be canceled by other input modes.
com.yworks.ui.GraphCanvasComponent#morphGraphdidn't update the folding state if it changed during a roundtrip.
com.yworks.graph.drawing.CollapsibleNodeStyleDecoratorRenderer: parent nodes were not resized after expanding a child folder node.
flashx.textLayout.formats.TextLayoutFormatnow is properly serialized and deserialized.
com.yworks.ui.GraphCanvasComponent.morphGraph()that could produce errors when using folding with a
com.yworks.graph.model.Tableprovides extensive support for tabular presentation of subgraphs which is well suited for the visual presentation of swimlane layouts. Flexible visualization for table elements by means of existing node styles is provided by implementations of the
com.yworks.graph.input.TableEditorInputModewhich can be used either standalone or as a child mode of
com.yworks.graph.input.GraphEditorInputModeand which provides support for user interaction specific to the tabular data representation of an associated node.
TableLayoutDemodemonstrate the capabilities of table visualization editing, as well as automatic layout of swimlane diagrams.
toBack()methods of the
com.yworks.graph.model.IZOrderSupporthas been added and is used to manage the z-order of the model items.
com.yworks.graph.drawing.SimpleAbstractLabelStylecan 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.
com.yworks.graph.model.EdgeSelectionDisplayObjectCreatorcan be used to conveniently customize the visualization of selected edges.
com.yworks.remote.LoadHandlersupports loading GraphML files directly from the client's file system. This class complements the
com.yworks.remote.UploadHandlerwith a server independent variant.
com.yworks.remote.SaveHandlersupports saving GraphML files directly to the client's file system. This class complements the
com.yworks.remote.DownloadHandlerwith a server independent variant.
com.yworks.remote.ImageSaveHandlersupports exporting the canvas as bitmap image directly to the client's file system. This class complements the
com.yworks.remote.ImageExportHandlerwith a server independent variant.
com.yworks.graph.drawing.TLFLabelStylecan be used to draw labels with the Flex Text Engine and the Text Layout Framework.
clone()method to return a clone of themselves.
MultiplexingInputModes themselves can now be sub modes of another multiplexing input mode.
com.yworks.graph.input.GraphEditorInputModehas a new
shouldLabelBeEdited()callback to allow to specify which labels can be edited.
com.yworks.support.ILookuphas been added to all methods of
com.yworks.support.ITypeConverter. It can be used to gather additional information for the conversion.
com.yworks.canvas.drawing.GeneralPathhas been improved to allow for fuzzy hit testing.
clickHitTestOrderwas added to
com.yworks.graph.input.GraphEditorInputMode. This property allows to configure the priority of graph items which are selected upon mouse clicks.
getGroupedGraphwas added to
com.yworks.graph.model.GroupedGraphUtil. It simplifies retrieving the
IGroupedGraphinstance from a passed
getTextSizewas added to
com.yworks.canvas.drawing.YGraphicsand calculates the size a text String would need in a
TextFieldif a specified
TextFormatwas used. It can be used e.g. in custom label style implementations to position the text.
com.yworks.canvas.drawing.YGraphicswas changed. It now accepts two optional parameter
originthat 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.
com.yworks.graph.input.GraphEditorInputModenow dispatches an event of type
com.yworks.graph.input.GraphEditorHierarchyEvent.NODE_REPARENTEDif a node was reparented interactively.
com.yworks.graph.drawing.TemplateStyleDataContext) now implements
com.yworks.support.LookupChainnow dispatches a
com.yworks.support.LookupChainEventwhen a chain link was added or removed.
com.yworks.util.ColorStructclass now has getter for the red, green and blue part of the set color.
com.yworks.remote.RoundtripHandlernow always dispatches a
RoundtripEvent.ROUNDTRIP_COMPLETEevent, no matter whether the
updateproperty is set to
com.yworks.graph.model.FilteredGraphWrappercan now be used as master graph for a
com.yworks.graph.model.GraphEvent's sub classes
com.yworks.graph.model.GraphEvent. The new events provide access to the item's former owner after the element has been removed.
getSegmentCountwas added to
com.yworks.canvas.drawing.GeneralPathand returns the number of
closeoperations in this path.
actionButtonProviderDecoratorhas been added to
com.yworks.graph.model.ItemDecoratorto allow for easier decoration of the
polyLineIntersectswas added to
com.yworks.canvas.geom.GeomSupportand checks if a polygonal line intersects a rectangle.
calculateSegmentTangentwas added to
com.yworks.canvas.geom.GeomSupportand calculates the tangent point and vector on a polygonal path at a given segment and ratio.
dragNodeCreatorwas added to
com.yworks.graph.input.NodeDropInputModeto make customizing the input mode easier.
com.yworks.graph.input.StripeDropInputModesupport has been added to hide the drag image while the node or stripe preview is displayed.
com.yworks.graph.input.GraphEditorInputMode: the property
clickableItemsand the callbacks
shouldBeMarqueeSelectablewere added to provide more control over selection and event dispatching. The callback
shouldBeMarqueeSelectablewas added to the
SWFclasses by the
com.yworks.graph.drawing.ImageNodeStylehas been improved so that cloned style instances reload the SWF data correctly.
com.yworks.graph.drawing.ImageNodeStylenow can handle FXG images, too (Flex 4 only).
com.yworks.remote.RoundtripHandlerhas a new property
requestTimeoutwhich allows to set a timeout for server requests.
com.yworks.graph.input.GraphEditorInputModeoffers more settings for auto adjustment of the content rect after user operations.
com.yworks.canvas.CanvasPrinteras well as the
com.yworks.remote.ImageExportHandlernow accept an optional
Spriteparameter that can be used to pass a customized sprite instance for printing/export.
com.yworks.canvas.input.ContextMenuInputModehas a new
autoRegisterAtApplicationproperty that per default sets the application's
contextMenuproperty to its own
com.yworks.canvas.drawing.YGraphics.applyFillnow applies its transformation matrix to given gradient fills.
TemplateNodeStyle: The paint support doesn't create an extra sprite anymore.
CanvasComponentto facilitate customization of the canvas scrolling behavior:
fitContentCore()method is now available on
fitContentCore()for execution during the next validation, the fit content behavior can now be adjusted by overriding
IShapeNodeStyleelement in a GraphML file, the GraphML parser will now correctly set the corresponding style property to
nullinstead of assigning a default stroke/fill.
CSSLabelStyle: Added setters for
com.yworks.util.FilteredCollectionModelcan now be used in for each loops.
com.yworks.graph.model.IBendimplementation using the
com.yworks.graph.input.CreateEdgeInputModenow uses the
com.yworks.graph.model.IHitTestIteratorretrieved from the context when trying to find a node at a given position.
com.yworks.graph.input.GraphEditorInputMode#createMoveUnselectedInputMode()now supports undo/redo functionality.
com.yworks.support.AbstractUndoUnit, the parameter is now used as the name for both the undo and the redo operation.
com.yworks.graph.input.NodeDropInputModewill now copy the user tag of the dragged node to the node created by the drag operation.
com.yworks.graph.drawing.TemplateNodeStylecomponents can now define a
completeproperty and dispatch a complete event when using asynchronous resources to make sure that these resources are included for printing and image export.
com.yworks.graph.drawing.ImageNodeStylenow also supports loading and displaying remote SWFs. ImageNodeStyle should now be used for all image-based node visualizations.
com.yworks.graph.drawing.SWFNodeStyleis now deprecated.
com.yworks.util.ImageLoadernow supports loading embedded and remote SWFs.
com.yworks.io.graphml.reader.deserializer.PrimitivesDeserializerhave been added to
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.ui.GraphCanvasComponenthave a new property
mouseIntervalSetting this property to values > 0 lets the canvas discard some mouse events which don't have a visible effect. This can improve performance.
com.yworks.graph.input.SimpleEdgePositionHandlercan be added to the edge's lookup to let the bends of selected edges be moved with the edge.
com.yworks.yfiles.server.graphml.flexio.FlexIOToolsto simplify logging and/or debugging client-server communication.
createParameterFromTargethave been added to
serializeContenthas been extracted from
serializeItemto allow for easier customizations.
com.yworks.yfiles.server.graphml.flexio.data.FreeNodeLabelModelnow gets mapped correctly to the corresponding java
y.layout.FreeNodeLabelModelduring layout roundtrips.
Graph2DRoundtripSupportnow have the base classes
Graph2DRoundtripSupportBase, respectively, which provide roundtrip support without dependencies on a servlet API.
com.yworks.yfiles.server.graphml.support.ISharedInstanceProviderinterface to provide objects that could be shared as well.
Custom Style Tutorialdemonstrates how to create custom styles for nodes, labels, edges and ports that use as well a custom visualization as a customized behavior.
RenderOrderDemoshows how to use the new configuration options for the render order of model items.
MultiPageLayoutDemoshows how to use the
MultiPageLayouterto break down a large graph into smaller pages. The
MultiPageLayouteris part of the yFiles FLEX Client Layout Extension or of the server parts of the yFiles for Java or .NET server bundles.
com.yworks.ui.GraphCanvasComponent.morphGraph()which prevented morphing a change in the folding state of a node.
com.yworks.graph.model.FilteredGraphWrapperwhich could cause
edgesAtPortOwnerto return incorrect edges.
com.yworks.graph.model.FilteredGraphWrapperwhich could create incorrect graphs when elements are added while the predicate has changed and the graph state is not in sync with the changes.
print()method, or when using the
CanvasPrinter. Also, when using the
ImageExportHandler, the SWF's will be correctly exported to the resulting image.
CanvasPrinternow tries to use reasonable values if no
printRectangleis set. If no such values can be determined a verbose Error is thrown before printing starts.
com.yworks.graph.model.GraphCopiernow 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.
CSSLabelStyle: changed the default
.CSSLabelStyle. This causes CSS properties to be applied correctly to the label text.
gridFitType) that were introduced with the Flash Text Engine (FTE) are now correctly applied to labels rendered with the
com.yworks.remote.UploadHandlernow uses the default
fileFilterif no filter was set explicitly.
com.yworks.io.graphml.reader.deserializer.AbstractTemplateStyleDeserializerwhich prevented Strings from being properly deserialized as
com.yworks.graph.input.CreateEdgeInputModewhich indicated that the newly created edge snapped to a target node while it did not.
ShapeNodeStyle's round rectangle shape.
SimplePortStylenow considers the stroke width.
com.yworks.remote.RoundtripHandlernow always dispatches the complete event when the result has been received, even if it is configured to not update the client-side graph.
hasColorattribute is now considered correctly when parsing yFiles for Java GraphML input.
com.yworks.canvas.input.MagnifierInputModenow respects its canvas's
enableMouseChildrenpolicy. This fixes a bug which prevented template components from being interactive when viewed with the magnifier.
com.yworks.canvas.input.MoveInputModewhich prevented snapping from being re-enabled after temporarily disabling it with the CTRL-key.
com.yworks.yfiles.server.graphml.support.GraphRoundtripSupportdoesn't write folder nodes as empty group nodes anymore.
com.yworks.yfiles.server.graphml.flexio.deserializer.AbstractTemplateStyleDeserializerwhich prevented Strings from being properly deserialized as
com.yworks.yfiles.server.graphml.flexio.data.FreeEdgeLabelModel, this parameter is updated correctly after a new layout has been calculated for this label.
yWorks.yFiles.Graph.Web.Style.AbstractTemplateStyleDeserializerwhich prevented Strings from being properly deserialized as
com.yworks.canvas.drawing.IPaintableinterface now uses the new
com.yworks.canvas.drawing.IDisplayObjectCreatorinterface instead for improved rendering performance (e.g. all style renderers now implement
IPaintable). Please see the migration guide for details on the resulting incompatibilities.
com.yworks.graph.input.GraphEditorInputModenow delegates label editing to an internal helper class.
com.yworks.graph.model.EdgeLayerPolicy.SEPARATE_LAYERpolicy that corresponds to the previous default. The old default behavior can be reestablished by setting
com.yworks.graph.model.GraphModelManager.drawEdgesBehindGroupedNodesis now deprecated. Instead the (default) edge layer policy
com.yworks.graph.model.EdgeLayerPolicy.BEHIND_GROUP_NODESshould be used.
com.yworks.remote.RoundtripHandlernow dispatches a
RoundtripEvent.ROUNDTRIP_COMPLETEevent when the
updateproperty is set to
com.yworks.graph.model.PathGeometrySelectionPaintablehas been made deprecated. Uses should be replaced by
com.yworks.graph.model.GraphEvent's sub classes
com.yworks.graph.model.GraphEvent. As these events are sub classes of the
GraphEvent, listeners to
GraphEventwill continue working without changes.
IGraphimplementations which dispatch
GraphEventsshould dispatch the appropriate sub classes for the changed items.
com.yworks.graph.drawing.SimpleNodeStylehas been deprecated. It is recommended to use its replacement
com.yworks.graph.drawing.IconLabelStyleRendererhas been removed.
com.yworks.graph.input.GraphEditorInputModehas been changed from
com.yworks.canvas.input.ContextMenuInputModenow sets the application's
contextMenuproperty to its own
ContextMenuinstance. Setting the input mode's
falseprevents this behavior.
setBendTaghas been added to interface
com.yworks.graph.model.IChangeDummyEdgeAppearanceCallback. Classes which implement this interface have to implement this method.
ShapeNodeStylein a GraphML file, the GraphML parser will now set the corresponding style property to
nullinstead of assigning a default stroke/fill.
com.yworks.graph.model.IFilteredHitTestIteratorhas been renamed to
com.yworks.remote.RoundtripHandlerdefaults have been changed to write port location models. This increases the size of the GraphML and can be switched off if not wanted.
com.yworks.yfiles.server.graphml.flexio.data.NodeScaledParameterExtensionwas moved to package
com.yworks.yfiles.server.graphml.flexio.LabelDeserializernow serializes only a single
<y:Label>element instead of a
com.yworks.yfiles.server.graphml.flexio.LabelInputHandlerwas introduced to manage node and edge labels.
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.ServletRoundtripSupportor its implementations
getParameters()method with edges with zero length segments.
com.yworks.canvas.CanvasComponentnot properly dispatching mouse events if the canvas is scaled.
com.yworks.graph.model.GraphClipboardcan handle a missing filter function now. This also fixes method
copywhich prevented the
onElementCopiedcallbacks from being invoked in folded graphs.
com.yworks.yfiles.server.graphml.flexio.deserializer.ReflectionBasedDeserializerfixed that sometimes caused an
ArrayIndexOutOfBoundsExceptionif the property name of a XML child node couldn't be resolved.
com.yworks.yfiles.server.graphml.folding.EdgeViewStatenow contains a
tagproperty as on client side.
com.yworks.graph.input.CreateEdgeInputModenow connect from/to the topmost node of overlapping nodes.
com.yworks.canvas.CanvasPrinterwas adjusted to work with Flex SDK 4.5.0 and higher.
com.yworks.graph.input.CreateEdgeInputModefixed that sometimes broke the edge creation when used together with snapping and node ports on a node's bounds.
com.yworks.graph.model.GraphClipboarddid not always copy all state of items that were invisible in a folded graph view.
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.
com.yworks.canvas.geom.OrientedRectangle.anglefixed that returned a value that was off by PI/2.
com.yworks.canvas.geom.GeomSupport.polyLineContainsfixed that caused the method to wrongly return
com.yworks.canvas.CanvasComponent.enableMouseChildrenwas set to
com.yworks.graph.input.GraphEditorInputModewhich 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.
com.yworks.graph.input.CreateEdgeInputModewhich could occur when grid snapping was enabled.
com.yworks.yfiles.server.graphml.flexio.serializer.ImageSerializerfixed that prevented it from serializing
java.awt.image.BufferedImagedata as created e.g. by the
com.yworks.graph.model.RotatedSliderEdgeLabelModelhas been added that combines the advantages of the old
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.
com.yworks.graph.model.RotatedSideSliderEdgeLabelModeloffers a behavior similar to the
RotatedSliderEdgeLabelModelbut provides label positions on both sides of the edge path.
com.yworks.graph.model.CompositeLabelModeladded 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.
com.yworks.graph.model.DescriptorWrapperLabelModelcan be used to wrap an existing edge or node label model and decorate it with an
ILabelModelParameters that can be used by automatic labeling algorithms.
getSnapLineshas been added to the
com.yworks.graph.input.snapLines.NodeReshapeSnapResultProviderto simplify the customization of snapping during a node resize gesture. It is used to provide the snap lines that shall be checked for valid snap results.
com.yworks.graph.model.DefaultLabelModelParameterFinderthat returns the label model parameter from a given iterator that best matches a given label layout.
edgeRelativeDistancehave been added to the constructor of
autoFlipproperty added to the
com.yworks.graph.drawing.SimpleLabelStylethat allows to disable the automatic flipping of the label text if it would be upside-down.
com.yworks.canvas.TagChangedInvalidatorallows to automatically trigger a repaint when the user object assigned to model item changes.
com.yworks.canvas.CanvasComponentallows to conveniently adjust the view port to show a given rectangle in world coordinates. The optional parameter
maxZoomallows to specify a maximum zoom level that shall be used by this operation.
com.yworks.canvas.CanvasComponentnow has an optional
marginsparameter which allows to conveniently add margins to the graph.
com.yworks.canvas.input.HitTestUtiloffers the static method
getClosestHits()that filters those hits from a given list of
IModelItemss that are closest to the given location.
com.yworks.graph.anim.GraphMorphErrorEventis dispatched by
com.yworks.ui.GraphCanvasComponentif an error occurs during a morph operation.
IModelIteminside the hit radius if no
IModelItemis hit directly. Previously the distance from the location hasn't been considered as long as it didn't exceed the hit radius.
com.yworks.io.graphml.reader.deserializer.ReflectionBasedDeserializernow always prefers to use the
com.yworks.support.MarkupExtensionof a class over instantiating the class directly. Particularly this is now the case if the class and its extension are in different packages but these packages are mapped to the same namespace in 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.
com.yworks.graph.input.snapLines.NodeReshapeSnapResultProviderthat is used by default to provide snap results for node resize gestures now supports snapping to the additional snap lines provided by the
getAdditionalSnapLinesmethod of the
com.yworks.graph.model.DefaultLabelModelParameterFinderhas a new property
angularDeviationFactorthat influences how much the angular deviation is weighted in the metric calculated for the label parameter.
com.yworks.graph.model.GenericLabelModelnow supports to pass an
com.yworks.graph.model.ILabelCandidateDescriptorwhen adding a label model parameter. This descriptor is returned if the context retrieved via the
getContext()method is queried for a
com.yworks.graph.input.GraphEditorInputModenow only adds an undo unit to the undo queue if the content rectangle changed.
mx.collections.ArrayCollectioninstead of implementing
mx.core.IMXMLObjectitself. This was necessary to work around an incompatible API change of the Adobe FLEX 4.5 SDK.
inputModeproperty is now the default property of
com.yworks.yfiles.server.graphml.flexio.deserializer.ReflectionBasedDeserializernow always prefers to use the
com.yworks.support.MarkupExtensionof a class over instantiating the class directly.
com.yworks.yfiles.server.graphml.flexio.data.ShapeNodeStylenow provides constants for all shapes which are supported by the client.
yWorks.yFiles.Graph.Web.Style.Markup.CollapsibleNodeStyleDecoratornow are taken into account for layouts.
TemplateNodeStyleto visualize swim lanes and pools.
EdgeLabelingDemoshows how to configure different edge label models as well as how to apply the generic edge labeling algorithm.
IncrementalHierarchicLayouterDemoshows how the IncrementalHierarchicLayouter can be used together with custom user interaction functionality.
LayerConstraintsDemoshows how to use layer constraints with the IncrementalHierarchicLayouterto restrict the node layering.
MixedLayoutDemoshows how to apply different layouts to group nodes and their contents.
SequenceConstraintsDemoshows how to use sequence constraints with the IncrementalHierarchicLayouterto restrict the node sequencing.
SwimlaneDemonow provides functionality to move nodes to different swim lanes.
PortCandidateDemoshows how PortCandidateSets can be used with IncrementalHierarchicLayouterto control from what side edges connect to certain node types in the automatic layout process.
demo.components.IconButtoncan now be used with scalable icons like SVG.
com.yworks.io.graphml.realizer.CompatResourceInputHandlerremoved that prevented the input handler to accept any key.
com.yworks.graph.input.CreateEdgeInputModenow cancels the edge creation if the graph structure changes during the edge creation gesture which lead to illegal states.
INodeSnapResultProvidercould be found in the node's lookup.
com.yworks.graph.drawing.IconLabelStyleRendererremoved that could break the rendering when it was used as renderer of an
com.yworks.graph.model.IHitTestIteratorwas added to the lookup chain.
com.yworks.graph.input.NodeDropInputModenow handles ports correctly.
com.yworks.remote.RoundtripHandlerhaving simple type have always been parsed and set as
Stringvalues instead of their specified type (like
com.yworks.io.graphml.writer.serializer.LineTypeSerializernow supports dashed-dotted
com.yworks.graph.model.FoldedGraphnow throws a meaningful error when it is queried for a node which is not in the master graph.
com.yworks.io.graphml.reader.deserializer.ReflectionBasedDeserializernow handles properties of the type
com.yworks.canvas.geom.GeomSupport.rectangleIntersectsOriented()that caused wrong results.
GraphEditorInputModewas installed too late.
com.yworks.remote.RoundtripHandler.addMapperAttribute()replaces missing names with tag now.
com.yworks.graph.input.snapLines.GraphSnapContextthat caused its property
collectPortSnapLinesto be ignored.
syncLabels(y.base.Edge edge, boolean createIfNotExisting)in
com.yworks.yfiles.server.graphml.flexio.FlexIOToolsremoved that sometimes prevented existing edge layouts to be synchronized with the location described by the corresponding label model parameter.
yWorks.yFiles.Graph.Web.GraphRoundtripSupportwhich prevented handling node insets if folding was enabled.
getContext(label:ILabel, parameter:ILabelModelParameter):ILookupwas added to the
com.yworks.graph.model.ILabelModelinterface to provide a lookup context for a combination of label and parameter. This method is used to lookup an
com.yworks.graph.model.ILabelCandidateDescriptorfor such a combination. Custom implementations may return
com.yworks.support.Lookups.EMPTYif they don't want to provide a label candidate descriptor.
com.yworks.remote.RoundtripHandlerfor values of simple type, these values have wrongly been parsed and set as
Stringvalues instead of parsing these
Strings to the set type (like
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.
com.yworks.io.graphml.reader.IAttributeFactorythe type of the
valueparameter of the method
createAttributehas been changed from
*to fix the bug mentioned above.
com.yworks.io.graphml.reader.AttributeInputHandlerhas been changed to
public function AttributeInputHandler(attrName:String, scopeType:String, contentType:String, attributeFactory:IAttributeFactory).
com.yworks.graph.drawing.ComponentNodeStyleshould be replaced by the more flexible and better supported
com.yworks.graph.model.RotatingEdgeLabelModelshould be replaced by one of the new label models
com.yworks.graph.model.RotatedSideSliderEdgeLabelModelwhich combine the features of the old edge label models.
com.yworks.graph.input.snapLines.ISnapLineProviderthat 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
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.
com.yworks.graph.input.snapLines.GraphSnapContextoffers many properties for an easy customization of the snapping feature.
com.yworks.graph.input.IOrthogonalEdgeHelperthe orthogonal edge behavior can be customized as demonstrated in the
com.yworks.canvas.input.DropInputModecan be used as base class for diverse drag'n'drop operations.
com.yworks.graph.input.NodeDropInputModeis specialized to create nodes via drag gestures and provides a live preview of the dragged node as well as snapping support.
DragNDropDemowas updated to demonstrate how to use the new drag'n'drop support.
com.yworks.io.graphml.DefaultGraphMLIOHandlerwas introduced as preconfigured
GraphMLIOHandlerto read and write GraphML with structural, layout, style, and label information.
com.yworks.canvas.drawing.GridPaintablecan be used to show a configurable grid paintable as background of the
com.yworks.graph.drawing.FilterNodeStyleDecoratorsupports decorating node styles with flash bitmap filters.
com.yworks.graph.drawing.compat.LineTypes was added.
com.yworks.graph.drawing.SWFNodeStylenow supports AVM1 swfs.
com.yworks.graph.model.IEdgePortHandleProvideroffers better means to provide custom
com.yworks.canvas.input.IHandleimplementations for the source and target port of an edge.
com.yworks.io.binary.ExternalizableGraphnow allows to override the
com.yworks.graph.drawing.SimpleLabelStylenow gets (de-)serialized.
com.yworks.canvas.CanvasComponenthas a new property
enableMouseChildrenthat 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.CanvasComponenthas two new properties
mouseWheelZoomMouseLocationRecognizerthat allow to customize which modifier should be used to zoom to the canvas' center or the mouse location, respectively, via the mouse wheel.
printCanceledwas added to
com.yworks.canvas.CanvasPrinterand is called if the print job couldn't be started.
cubicTowas added to
com.yworks.canvas.drawing.GeneralPathand appends a cubic bezier curve to the path elements.
com.yworks.canvas.drawing.YGraphicswas improved to better consider rotation when calculating the text size.
getConstrainedLocationwere added to
createFromwas added to
com.yworks.canvas.geom.YPointthat takes an
DRAG_STARTEDwas added to
com.yworks.canvas.input.DragEventand is dispatched by the
com.yworks.canvas.input.HandleInputModeafter the drag has been initialized.
NO_MODIFIER_PRESSEDchecks if no SHIFT, ALT or CTRL key was held down in the provided
MODIFIER_ALTchecks if the ALT key was held down in the provided
SPACE_PRESSEDchecks if the SPACE key was pressed down in the provided
SPACE_RELEASEDchecks if the SPACE key was released in the provided
CTRL_RELEASEDchecks if the CTRL key released in the provided
BACKSPACE_PRESSEDchecks if the BACKSPACE key was pressed down in the provided
com.yworks.canvas.input.MoveInputModesupport the new snapping features which can also be temporarily disabled using the CTRL key.
com.yworks.canvas.input.MultiplexingInputModewas made public.
com.yworks.canvas.input.OverviewInputModenow uses the mouse wheel zoom factor of the
com.yworks.ui.GraphOverviewComponentit is used with.
com.yworks.canvas.input.ReshapeableHandleswas added that creates a default instance that provides 8 handles for each corner and side for the given rectangle.
com.yworks.graph.anim.GraphMorphernow supports morphing node and edge view states. In addition the new method
addReshapeableallows to add any
com.yworks.canvas.geom.IReshapeableto the morphing.
com.yworks.graph.drawing.CollapsibleNodeStyleDecoratornow includes the collapse icon bounds in the
isInsidemethod 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.
com.yworks.graph.drawing.DefaultPositionHandlernow allows protected access to the
com.yworks.graph.drawing.DelegatingNodeStylenow have access to the wrapped style.
com.yworks.graph.drawing.ImageNodeStyleis now accessible.
dropShadowwas added to the
com.yworks.graph.drawing.PanelNodeStyleto be able to disable the drop shadow that is used per default.
com.yworks.graph.drawing.ShapeNodeStyleusing the type
com.yworks.graph.input.CreateBendInputModesupports the new orthogonal edge editing feature including a recognizer to force splitting an orthogonal segment when starting to drag it.
com.yworks.graph.input.EdgeDragInputModeBasethat was added as super class of
com.yworks.graph.input.CreateBendInputModesimplifies customizing edge drag behavior.
com.yworks.graph.input.GraphEditorEvent.EDGE_CREATION_STARTEDis dispatched after initializing the edge creation.
com.yworks.graph.input.CroppedPortLocationModelParameterHandlenow already crops the position during the move gesture not only when finishing it.
com.yworks.graph.input.GraphEditorEvent.LABEL_CHANGEDis dispatched after the text of a label was edited interactively.
com.yworks.canvas.input.INodeGridConstraintProvidercan be found in the context's lookup.
contentRectproperty of the used
com.yworks.graph.input.PortLocationModelParameterHandlesupports snapping and orthogonal edge editing. Furthermore its subclasses now have access to the handle's port.
com.yworks.graph.input.ReparentNodeHandlernow checks if the
newParentisn't a descendant of
newParentis either a group node or a collapsed folder node.
com.yworks.graph.model.BendDecoratornow supports decorating
com.yworks.graph.model.DefaultLabelModelParameterFinderfirst uses the label's lookup to find an
com.yworks.graph.model.DefaultPortCandidatewas 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.
com.yworks.canvas.input.MoveInputModeusing the new property
getPathToRootwas added to
com.yworks.graph.model.Hierarchiesand allows to conveniently get a list of the ancestors of a node.
com.yworks.graph.model.PortRelocationModelwas refactored and now supports dynamic port candidates.
com.yworks.graph.model.RotatingEdgeLabelModelanymore but is only handled by the label style renderer.
onCancelwas added to
onProgresswas added to
com.yworks.remote.DownloadHandlerand the name of the last successfully downloaded file is stored in its new property
com.yworks.graph.drawing.compat.LineTypes now gets (de-)serialized.
com.yworks.io.graphml.reader.AbstractInputHandlerhas two new static utility methods
getAttributeTypethat return the values of the attributes
GraphMLConstants.ATTR_NAMEof a given XML node.
com.yworks.canvas.drawing.YGraphicsnow allows to nest calls to
com.yworks.remote.AbstractRoundtripHandlercan be used as base class for customized roundtrip handlers.
com.yworks.remote.RoundtripHandlerinherits from this class.
com.yworks.io.graphml.reader.deserializer.StrokeDeserializernow can handle
com.yworks.graph.input.MoveLabelInputMode: Pressing the Ctrl key while dragging allows to move the label independently from the candidates.
com.yworks.yfiles.server.graphml.flexio.binary.ExternalizableGraphnow allows to customize the used
com.yworks.yfiles.server.graphml.support.GraphRoundtripSupportas it creates the support via the new protected method
CustomGraphRoundtripSupportthat is used per default is also made protected and therefore can be extended as well.
com.yworks.yfiles.server.graphml.flexio.compat.Strokecan be configured to be deserialized at Flex side as
Pens will be deserialized at Flex side as
SnapLineDemodemonstrates the effect of the different snapping settings.
CustomSnappingDemodemonstrates how to further customize snapping in multiple ways.
OrthogonalEdgesDemodemonstrates how the orthogonal edge editing can be customized.
com.yworks.graph.model.GraphDecoratorinstead of custom
BusinessProcessDiagramDemowas refactored to handle the resizing of swim lanes and pools during a node move gesture in an easier and more stable way.
GraphCanvasdemo was extended to support snapping, orthogonal edge editing, grid and dynamic port candidates.
GridDemowas updated to use the new grid support.
PortCandidateProviderDemowas extended to demonstrate dynamic port candidates.
BridgeDemoshows the different modes for updating bridges during interactive movement of graph elements.
DragNDropDemouses the improved drag'n'drop support.
com.yworks.support.WeakReferencewhich is used in the context of folding.
com.yworks.canvas.CanvasComponentthat prevented the passed input mode to be canceled if it couldn't be stopped before uninstalling it.
mx.core.ScrollPolicy.ONfor the scroll bars of
com.yworks.canvas.CanvasComponentdoes now update the scroll bar handles.
com.yworks.canvas.CanvasComponentthat sometimes prevented the scroll bars to be updated correctly. Most prominently this could occurs during a
morphGraphcall for a
com.yworks.canvas.drawing.RectangularHighlightPaintablethat could be caused by rounding errors.
com.yworks.canvas.geom.GeomSupportthat sometimes returned
Number.NaNif the line is vertical and the point lies on the line.
dragFinishedmethod to update its x and y properties.
com.yworks.canvas.input.LabelPositionHandlerthat could cause a null pointer exception when canceling or finishing the drag of a label.
com.yworks.canvas.input.MoveViewportInputModeto respect the
autoDragproperty of the
com.yworks.canvas.CanvasComponentit is used in.
com.yworks.canvas.input.OverviewInputModethat caused an exception if the overview handle was dragged but no
com.yworks.canvas.model.CollectionModelManagerdoes now remove the
com.yworks.canvas.model.IModelItemDescriptors of previously added objects correctly when method
clearis called on the underlying
com.yworks.canvas.model.CollectionModelManagerthat could occur for items that had been added to the underlying collection several times.
com.yworks.graph.drawing.BitmapNodeStylewhich didn't transfer the style's image property.
com.yworks.graph.drawing.BitmapNodeStyleRendererthat caused a null pointer exception if no
com.yworks.canvas.CanvasComponentcould be retrieved from the context.
com.yworks.graph.drawing.NodeStyleLabelStyleRendererthat wrongly positioned the label style used as foreground of the label.
com.yworks.graph.model.DefaultGraphthrowing events of type
com.yworks.graph.model.GraphEvent.GRAPH_CHANGEDfor new nodes, edges, labels ports and bends before these elements had been added to the undo queue.
com.yworks.graph.model.GraphCopierthat sometimes used the wrong root of the target node hierarchy.
com.yworks.remote.ImageExportHandlerthat prevented to scale the exported image up.
com.yworks.util.FilteredCollectionModelnot reacting on a reset of the filtered collection model.
com.yworks.canvas.input.MainInputMode.createMoveUnselectedInputMode()now places the nodes back at their original position.
com.com.yworks.io.binary.ExternalizableGraphdoesn't lose port layouts during transfer now.
IEdgethat has same source and target port.
localRootnot included in Undo queue.
ImageIconhaving a non-integer width or height value did throw an error as an integer was expected.
OrgChartdemo to sometimes show artifacts if the used
demo.orgchart.PersonNodecomponents were cached as bitmap.
demo.businessProcessDiagram.CustomArrowused in the
BusinessProcessDiagramDemonot being able to be serialized properly.
com.yworks.graph.input.CreateEdgeInputModeto remove the last bend has changed. You have to press the BACKSPACE key now instead of using <SHIFT + click>.
com.yworks.ui.GraphOverviewComponentwas changed from 1.02 to 1.2.
graphparameter was removed from all method signatures of
com.yworks.graph.model.IPortCandidateProvider. Implementations may receive the graph from the passed context via
context.lookup(IGraph) as IGraph.
typewas replaced by a more general
candidateTagwhich may be any
Objectand the property
validwas replaced by
validitywhich can also indicate a dynamic port candidate. Furthermore the method
getPortCandidateAtwas added to resolve dynamic port candidates and the signature of method
createInstancewas changed to take the context for the port candidate is created in as parameter.
com.yworks.graph.input.GraphEditorInputModedoesn't create an empty group node anymore if the selection didn't contain any node.
y.io.graphml.KeyScopeis used instead of the constants defined in
y.io.graphml.KeyTypeis used instead of the constants defined in
com.yworks.yfiles.graphml.flexio.ISerializerwas replaced by
AbstractSerializerhave 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
com.yworks.yfiles.graphml.flexio.IDeserializerwas replaced by
AbstractDeserializerhave to implement the method
public Object deserializeNode(Node xmlNode, GraphMLParseContext context) throws GraphMLParseException(which replaced the earlier method
com.yworks.yfiles.server.graphml.support.GraphMLLayoutGraphIOHandlerwas refactored and does now extend
y.io.graphml.GraphMLHandler. Methods and properties having a counterpart in
GraphMLHandlerhave been removed. In addition the following did change:
outputEncodingwas removed. Instead there is now a
writemethod that takes the encoding as an argument.
writeDTDEnabledas well as the methods
canWriteare not longer supported or used and therefore have been removed.
OutputHandlerhave to be added directly.
com.yworks.canvas.input.EventRecognizerwere altered to use a concise naming scheme for SHIFT, CTRL and ALT modifier:
EventRecognizers.CTRL_PRESSEDwas renamed to
EventRecognizers.CTRL_PRESSEDfunction was introduced that recognizes a key down keyboard event for the CTRL key.
EventRecognizers.SHIFT_PRESSEDfunction now only returns
trueif the pressed key was the SHIFT key, not if any key was pressed while the SHIFT key was hold down.
EventRecognizers.MODIFIER_SHIFTfunction now only returns
trueif the SHIFT key was pressed in the passed
com.yworks.graph.input.GraphEditorInputModenow returns the newly created group node.
IPositionHandlerdoesn't take the delta since the last call anymore. The signature of the method changed
handleMove( context:IInputModeContext, originalX:Number, originalY:Number, newX:Number, newY:Number, dx:Number, dy:Number ):Boolean
handleMove( context:IInputModeContext, originalX:Number, originalY:Number, newX:Number, newY:Number):Boolean.
newYvalues passed in the last
handleMoveand calculate the delta in the next call.
IPositionHandlerhave been pulled up into its new super interface
IHandlenow inherits from
IPositionHandlerand therefore doesn't include the
getHandles():Collectionof the interface
com.yworks.canvas.input.IHandleProviderwas changed to
getHandles(context:IInputModeContext):Collectionwhich allows more flexibility when calculating the returned collection.
public function CollectionModelManager( canvas:CanvasComponent, model:ICollectionModel=null, mapper:IMapper=null )
public function CollectionModelManager( canvas:CanvasComponent, model:ICollectionModel=null, mapper:DictionaryMapper=null ).
com.yworks.support.DictionaryMapperwas necessary to have access to all keys in the mapper.
com.yworks.canvas.model.ModelManagerwas changed to return whether the descriptor had any
com.yworks.canvas.ICanvasObjectsafter the update. The signature changed
public function updateDescriptor( descriptor:IModelItemDescriptor ):void
public function updateDescriptor( descriptor:IModelItemDescriptor ):Boolean.
Objectinstead of a
itemof the interface
installItemfunctions of class
addfunctions of class
reparentwas 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.
com.yworks.graph.model.AbstractPortCandidateProvidernow expects an
com.yworks.graph.model.DefaultPortCandidateas parameter instead of any implementation of
com.yworks.graph.model.IPortCandidate. In addition the method
getCandidateAtthat is used to resolve a dynamic port candidate into a non-dynamic one as well as the method
createCallbackPortAtthat can be used to create a port candidate using a suggested location and label model were added.
protected function createCandidate( graph:IGraph, port:IPort ):DefaultPortCandidate
protected function createCandidate( context:IInputModeContext, port:IPort ):DefaultPortCandidate.
public function addCandidateWithModelParameter (graph:IGraph, owner:IPortOwner, portLocationModelParameter:IPortLocationModelParameter):IPortCandidate
public function addCandidateWithModelParameter (owner:IPortOwner, portLocationModelParameter:IPortLocationModelParameter):IPortCandidate.
getPorttake the context of the relocation gesture as additional parameter. The signature of its method
protected function getPort( candidate:IPortCandidate ):IPort
protected function getPort(context:IInputModeContext, candidate:IPortCandidate, suggestedLocation:IPoint):IPort.
com.yworks.graph.model.IBendCreatornow additionally takes the context the bend shall be created in. The signature changed
function createBend(graph:IGraph, edge:IEdge, x:Number, y:Number):int
function createBend(context:IInputModeContext, graph:IGraph, edge:IEdge, x:Number, y:Number):int.
com.yworks.graph.model.InputModeControllernow take an additional parameter of type
com.com.yworks.io.binary.ExternalizableGraphnow creates a
com.yworks.io.graphml.DefaultGraphMLIOHandlerinstead of a
yext.graphml.writer.AbstractOutputHandlerdo now extend
com.yworks.yfiles.server.graphml.flexionow override the method
getPrecedence()instead of implementing the interface
com.yworks.yfiles.server.graphml.flexio.StyleOutputHandlerwas replaced by
y.io.graphml.output.ComplexDataProviderOutputHandlers using appropriate
yext.graphml.reader.AbstractDOMInputHandlernow extend the new class
com.yworks.yfiles.server.graphml.flexio.SharedDataInputHandlernow overrides the method
getPrecedence()instead of implementing the interface
com.yworks.yfiles.server.graphml.flexiowere replaced by
y.io.graphml.input.ComplexDataAcceptorInputHandlers using appropriate
com.yworks.yfiles.server.graphml.flexio.SerializerRegistrywas removed. Input and output handler that did use this interface to (de)serializer child elements can use the methods
com.yworks.yfiles.server.graphml.flexio.FlexIOToolsoffers 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.deserializer.AbstractEdgeStyleDeserializernow use the (de)serialization method of the context to (de)serialize source and target arrows. Therefore their methods
com.yworks.yfiles.server.graphml.support.AbstractGraphRoundtripSupportthe 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
com.yworks.yfiles.server.graphml.support.GraphRoundtripSupportthe following method did change:
protected SerializerRegistry createSerializerRegistry()was removed. Instead the method
protected void addRegisteredHandlers(GraphMLHandler handler)is called by
protected SharedDataOutputHandler createSharedDataOuputHandler()was renamed to
Graph2DGraphMLHandleris used instead of
GraphMLIOHandlerin the methods
XmlWritermoved from package
y.io.graphml.outputand was refactored:
public void addNamespace(String URI, String prefix)was removed. Instead an
y.io.graphml.output.XmlNamespaceManagercan be retrieved by
public XmlNamespaceManager getNamespaceManager().
public XmlWriter writeCDATA(String s)was renamed to
public XmlWriter writeCData(String content).
public void flushDocument() throws GraphMLWriteExceptionwas added and has to be called to close the document.
writeEndDocument()doesn't return the
public XmlWriter writeStartDocument(String prefix, String docTag, String nsURI) throws GraphMLWriteExceptionwas changed to
public XmlWriter writeStartDocument()so the first element has to be written using additional
setEncodinghave been removed.
Lookupclass moved from package
y.io.graphml. Imports have to be adjusted accordingly.
com.yworks.yfiles.server.graphml.support.DotnetHierarchyGraphElementFactorynow implements the interface
y.io.graphml.input.GraphElementFactoryinstead of extending
com.yworks.yfiles.server.graphml.folding.markup.Portdoes now implement the
y.io.graphml.Portinterface and has a new
y.geom.YInsetsare now used instead of
java.awt.Insetsfor node insets which allows to use double precision.
com.yworks.yfiles.server.graphml.flexio.data.DelegatingStylenow implements the interfaces
IPortStyleof the same package.
getHeight()of the interface
com.yworks.yfiles.server.graphml.flexio.data.IIconwas changed from
doubleto be analog to the client thereby avoiding data loss during roundtrips.
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).
com.yworks.graph.model.IChangeDummyEdgeAppearanceCallbackthat caused the target port locations and styles configured using the
IDummyEdgeConvertercallbacks to be assigned to the source ports instead of target ports.
attr.name="http://www.yworks.com/xml/yfiles-graphml/1.0/portviewstates". In previous yFiles FLEX versions, the
attr.namefor port view states was
com.yworks.canvas.input.ContextMenuInputModewhich didn't remove listeners for opening context menus after uninstalling the input mode.
com.yworks.io.graphml.reader.PortStyleInputHandleris now correctly added to the
com.yworks.io.graphml.GraphMLIOHandlerwhich could lead to incorrect group node bounds when a folded graph with more than one managed view is read.
com.yworks.canvas.CanvasComponentwhich prevented re-adding the mouse listeners after the canvas was removed and then again added to the display.
GraphCanvasComponentcan now be used in the design view of Flash Builder with the Flex 4 SDK, too.
TemplateLabelStylenow respect their style renderer's
ImageExportHandlercan now export images with elements styled with the
FocusPaintManagercan now be enabled/disabled by setting its
hasColorattribute of their
RoundtripHandler.autoReadMapperData = true) now have
nullvalues for empty data elements instread of an empty String ("").
yfiles-flex-Flex3.swc. In previous yFiles FLEX releases, the filename was
com.yworks.support.UndoEnginewhich prevented setting the maximum
com.yworks.yfiles.server.graphml.flexio.ObjectAttributeInputHandlerwhich caused a NullPointerException if an empty element was read.
com.yworks.yfiles.server.graphml.servlets.UploadServletwhich lead to an exception if no file was uploaded and the server input stream did not support reset.
FoldingLayoutStagethat caused an Exception when handling selfloop edges at children of collapsed nodes.
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.
FilteredGraphWrapperwhich caused an Error when the wrapper was initialized with a non-empty graph.
GraphEventwhich is dispatched after reading a graph now contains the parsed graph instead of the master graph if the graph is a folded graph.
loadGraphFromURL()doesn't replace a folded graph with its master graph anymore.
IDisplayObjectContextis now used for rendering inside the magnifier "Lens". Items using TemplateStyle are now correctly enlarged with the magnifier.
com.yworks.graph.model.FoldingManagercan be used to establish a model-view setup where so-called managed views provide support for folding operations in a hierarchically grouped graph.
com.yworks.graph.model.IFoldedGraphdefines 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.
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."
com.yworks.canvas.model.BridgeManagerprovides support for so-called bridges in edge paths that resolve the visual ambiguity induced by edge crossings.
com.yworks.canvas.input.NodeEffectInputMode. Support for any model item kind.
com.yworks.graph.input.GraphEditorEventreports user interaction such as creating or removing items. It also reports mouse clicks on items.
com.yworks.graph.model.FilteredGraphWrappernow supports grouped graphs.
com.yworks.graph.model.GraphDecoratorsimplifies modifcations of the lookup mechanism, thus allowing convenient customization of user interaction.
com.yworks.yfiles.server.graphml.flexio.data.StyledLayoutGraphallows conveniently managing styles, labels and graph hierarchies at server side.
com.yworks.yfiles.server.graphml.folding.FoldedLayoutGraphallows conveniently managing graph hierarchies as expanding and collapsing group nodes at the server side.
demo.DemoConfigToolallows flexible configuration of the web application root.
com.yworks.io.graphml.DotnetCompatGraphMLIOHandlernow read and write the node and edge ids (node-2-id, edge-2-id) by default.
com.yworks.io.graphml.reader.ObjectMapperAttributeInputHandlercan now handle shared references.
com.yworks.graph.input.CreateEdgeInputModeresets the cursor after edge creation.
GraphRoundtripSupport.AttributeMapperInputHandlercan now read attributes with scope graph.
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
collectionModelare not set at the time
installingis dispatched. When initializing the input modes move all code which accesses these properties to a handler for the
installedevent. Note: any other customizations must still be carried out in the
get location():IPointwas replaced by
get locationModelParameter():IPortLocationModelParameter. Implement
get locationModelParameter():IPortLocationModelParameter. To preserve the current functionality, a
IPortLocationModelParameterinstance 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 ).
addPortWithParameter( portOwner:IPortOwner, modelParameter:IPortLocationModelParameter ):IPortand the
defaultNodePortModelParameterproperty have been added to the
DotnetCompatGraphMLIOHandlernow 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.
GraphMoveInputModenow takes the movable items from the parent input mode if the
movableItemsproperty is set to
com.yworks.support.IServiceProviderhas been removed. Occurrences of this interface have been replaced by
com.yworks.support.ILookup, which provides the same functionality.
com.yworks.canvas.CanvasComponent#mouseWheelZoomhas been changed from
dataPropertyNamehas been changed to "
dataObject" in order to match the corresponding default value of the client-side template style implementation.
com.yworks.graph.drawing.ITemplateStyleallows to easily use custom context-aware
MXMLtemplate components for node- and label visualizations.
com.yworks.graph.drawing.IDelegatingStylealong with abstract implementations for node-, edge-, label- and port styles allows to conveniently decorate existing styles.
ITagOwnerinterface are now properly (de)serialized, if the
supportUserTagsflag is set.
com.yworks.canvas.input.MultiplexingInputMode#defaultCursorproperty allows to easily define a custom default cursor.
com.yworks.canvas.input.OverviewInputMode#viewPortPaintableallows to customize the view port visualization of the canvas overview.
com.yworks.graph.model.IPreferredSizeChangedListenerallows to listen to any changes to a label's preferred size.
com.yworks.graph.model.TagOwnerMapperallows to easily access the tags of
ITagOwners through the
com.yworks.graph.drawing.IconLabelStyleRendererwith a null context.
IDeserializers that have been added to a
GraphMLIOHandlerinstance are now always used. Before, they were used only if the
writeStylesflags were set.
com.yworks.ui.GraphOverviewComponentnow works correctly.
com.yworks.yfiles.server.graphml.support.XmlSupport#getTextContent()now returns an empty string instead of
nullif no text content exists for the given node.
com.yworks.graph.drawing.SimpleNodeStylecan be used to conveniently implement a custom painted node style without having to implement a separate renderer.
com.yworks.graph.drawing.CSSLabelStyleallows to define label style properties using css.
com.yworks.graph.model.FilteredGraphWrapperallows to conveniently create a filtered view of a graph.
com.yworks.graph.model.IPortLocationChangeListenerallows to register for port location changes on the default graph using the
com.yworks.remote.RoundtripHandler#addObjectMapperAttribute()now allows to read and write complex graph item data attributes.
com.yworks.remote.RoundtripHandlerthat are dispatched to notify of the roundtrip process.
com.yworks.canvas.input.MoveInputMode#createMoveUnselectedInputMode()allows to create a move input mode that moves unselected items.
contextMenuModeEnabled, handleInputModeEnabled, moveModeEnabled, clickModeEnabled, marqueeSelectionModeEnabledand
keyboardModeEnabledproperties allow to conveniently enable/disable the various child input modes.
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.AbstractInputModenow dispatches events when being installed/uninstalled.
com.yworks.canvas.input.ContextMenuInputModenow allows to configure whether the custom menu items should be removed before dispatching the context menu event, using the
autoCleanCustomMenuItemsproperty. The old behvaior was to always remove these items.
com.yworks.graph.drawing.BevelNodeStylecan no provide a radius handle.
ComponentNodeStylehas been added.
releasedRecognizerproperty will now correctly set the event recognizer for the release event. Also,
hoverRecognizerproperty now allows to set a custom event recognizer that determines whether the mouse is hovering over a movable item.
com.yworks.graph.drawing.BevelNodeStyleare now correctly considered by the drawing engine.
com.yworks.graph.drawing.NodeStyleLabelStylenow correctly uses the wrapped node style's insets.
com.yworks.graph.drawing.BevelNodeStyleRenderernow doesn't require a style to be passed to the constructor anymore.
com.yworks.graph.model.IGraph#portsnow returns a collection of type
com.yworks.graph.model.InteriorLabelModelare now unmodifiable.
com.yworks.canvas.input.IInputModeContextproperty was added to class
readLabelsof class com.yworks.io.graphml.GraphMLIOHandler.
flash.events.MouseEvent. This change was necessary because of a compatibility issue with the Adobe AIR framework.
textProviderFunction of class
com.yworks.canvas.input.MouseHoverInputModewas changed: It now expects an instance of
com.yworks.canvas.input.IInputModeContextinstead of a
com.yworks.canvas.CanvasComponentas the first argument.
nodeCreatorFunction of class
com.yworks.canvas.input.GraphEditorInputModewas changed: A parameter of type
com.yworks.canvas.input.CanvasContextMenuEventnow expects an additional parameter of type
com.yworks.canvas.CanvasComponentnow dispatched a
com.yworks.graph.drawing.IIconLabelStylenow uses an instance of class
com.yworks.graph.drawing.IIconinstead of a
DisplayObjectas its icon.
com.yworks.io.graphml.reader.deserializer.ComponentNodeStyleDeserializernow passes the element node that represents the serialized component to the actual deserializer of the component, instead of its parent xml element.
com.yworks.yfiles.server.graphml.support.GraphRoundtripSupportis 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.
clipTextproperty of class
com.yworks.canvas.drawing.SimpleLabelStyleis now correctly read and written.
IInputModeContextparameter was added to all methods.
com.yworks.canvas.input.IInputModeContextprovides a context for all input modes.
inputModeContextis a new property of
inputModeproperty and methods
com.yworks.canvas.input.ClickInputModecan now be configured to "swallow" the first mouse click event if the focus was gained with this gesture.
com.yworks.graph.model.AbstractModelItemdelegate 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
com.yworks.canvas.CanvasComponentwill now always change the current cursor immediately, if the mouse pointer is located over the canvas.
com.yworks.canvas.input.ContextMenuInputModenow won't throw an Error if a context menu is opened before it was correctly installed.
ArrowType.NONE. Using ArrowType.NONE could throw an Error upon deserialization before this bug was fixed.
com.yworks.canvas.CanvasComponentallows 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.
com.yworks.canvas.input.ReshapeableHandlesnow support a
com.yworks.support.YListand new HashSet implementation.
for .. initeration and the array access operator.
com.yworks.canvas.input.IInputModeContext. Therefore, the interface
com.yworks.canvas.input.IInputModehas changed. All inheritors of
IInputModehave been adapted accordingly.
com.yworks.canvas.input.IPositionHandlerhas also been changed to use
com.yworks.canvas.CanvasComponent. Please see the migrations section of the README file contained in the yFiles FLEX distribution for details.
com.yworks.graph.drawing.ComponentNodeStyle(cloning, (de)serialization, documentation).
com.yworks.resources.actionspackage were replaced by icons created by yWorks.
CanvasComponentis now correctly updated when its size is changed interactively.
com.yworks.canvas.input.MoveInputModecan now correctly be cancelled.
IDeserializers that were registered last will now correctly be used first.
com.yworks.canvas.input.GraphEditorInputModenow comes with a
com.yworks.graph.drawing.ImageNodeStylewas 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.
com.yworks.yfiles.server.graphml.support.Graph2DRoundtripSupportwill now correctly configure the io handler, so no duplicate node- or edge realizers will appear in the GraphML output anymore.
falsenow actually has the desired effect.
com.yworks.canvas.drawing.AdvancedStrokewon't cause erroneous painting anymore.
com.yworks.canvas.input.ClickInputModebefore a click event has occured will not yield a null reference error anymore.
SIMPLEarrow type is not filled anymore.
com.yworks.canvas.input.HandleInputModenow offers an
activeproperty that toggles whether the mode is active.
com.yworks.canvas.input.GraphEditorInputModenow offers various properties that allow fine-grained control of graph editing functionality:
marqueeSelectableItems, clickSelectableItems, selectableItems, movableItems, deletableItems, showHandleItems. In addition, callbacks
com.yworks.canvas.input.CanvasMouseEventnow offers a
clickCountproperty to distinguish between left and right clicks.
com.yworks.canvas.input.ClickInputModecan now also be used for double click events and offers more configuration options.
Short, Simple, and Crossarrow types for improved compatibility with yFiles.NET.
com.yworks.graph.drawing.IPolylineEdgeStylewill now be correctly (de)serialized.
com.yworks.remote.HttpServiceFactorywill now append a <service-extension> parameter specified in the config file to all service urls.
com.yworks.yfiles.server.graphml.support.GraphRoundtripSupportnow only has a default constructor. Instead of using class GraphRoundtripSupport in Graph2D mode, the new class Graph2DRoundtripSupport should now be used.
com.yworks.remote.RoundtripHandlerwill now reuse the
createInputIOHandlerwill only be called the first time the property is accessed.
com.yworks.canvas.drawing.AdvancedStroke.drawPathnow correctly transforms the path using the current graphics transformation.
falsewon'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.
AdvancedStrokefor use with
YGraphicsallow for drawing dotted/dashed strokes or implementation of custom strokes.
com.yworks.canvas.input.OverviewInputModeallow to easily add overview functionality to a yFiles FLEX client.
com.yworks.graph.drawing.AbstractLabelStyleRendererallows easier implementation of custom label styles.
com.yworks.graph.drawing.BitmapNodeStylethat allows reading/writing base64-encoded bitmap data.
com.yworks.graph.drawing.ComponentNodeStylethat allows to use arbitrary flex components for node visualization.
com.yworks.graph.drawing.IconLabelStylethat allows to draw images in a node- or edgelabel.
com.yworks.graph.drawing.NodeStyleLabelStyleAdapterallows to use node style implementations for drawing labels.
com.yworks.io.graphml.reader.AbstractDeserializermakes it easier to implement custom deserializers(e.g. node styles).
com.yworks.canvas.drawing.ShapePaintable#createViewOrientedRectanglecreates a paintable that draws an oriented rectangle in the view coordinate system.
com.yworks.graph.drawing.ISimpleLabelStyle#clipTextthat allows to specifiy whether the label text should be clipped.
com.yworks.graph.drawing.ShapeNodeStyleRenderer#isInsidewill now consider the exact shape bounds.
createClone()method for easier subclassing.
yFiles FLEX now supports client-server compression. This feature will substantially speed up client-server communication.
com.yworks.yfiles.server.graphml.support.GraphRoundtripSupportfor 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.GraphRoundtripSupportwill now automatically deflate/decode the GraphML data sent from the client, using the new
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.
nullsourcePortCandidate when the first edge is created.
com.yworks.canvas.ICanvasObjects have a
dirtyproperty that can be queried using
nullis passed as the stroke or fill parameter. Use com.yworks.graph.model.DefaultArrow#createDefault to create an arrow with default stroke and fill.
trueif the event target has the focus.
IGeneralPathNodeStyleand default implementations
y:PolyLineEdgeelements that lack
y:Pathelements won't crash the GraphML parser anymore.