yFiles FLEX Changelog
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 aFreeEdgeLabelModel
as part of anCompositeEdgeLabelModel
.
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 usingViewportLimiter
have been added to classCanvasComponent
: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 classRoutingStyle
. 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 thePreferredPlacementDescriptor
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 thecom.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.MultiplexingInputMode
s from correctly disabling their child modes when theenabled
property is set tofalse
. - 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
'supdateDisplayObject
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 asIInputModeContext.parentInputMode
in the input mode context it passes toGraphSnapContext.initializeDrag
. - Fixed:
com.yworks.graph.drawing.ShinyPlateNodeStyleRenderer
threw error when the style's fill wasnull
. - Fixed GraphML parsing: empty entries in the
node-2-id
andedge-2-id
maps are now parsed asnull
. - 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 thanGroupNodeRealizers
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
andcom.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 acom.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
'sdoLayout
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 thecom.yworks.graph.drawing.ITableNodeStyle
interface. - New dedicated InputMode
com.yworks.graph.input.TableEditorInputMode
which can be used either standalone or as a child mode ofcom.yworks.graph.input.GraphEditorInputMode
and which provides support for user interaction specific to the tabular data representation of an associated node. - The
TableEditorDemo
andTableLayoutDemo
demonstrate the capabilities of table visualization editing, as well as automatic layout of swimlane diagrams.
- New model class
- 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()
andtoBack()
methods of thecom.yworks.ui.GraphCanvasComponent
'scom.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
andcom.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 thecom.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 thecom.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 thecom.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 implementscom.yworks.canvas.input.IConcurrentInputMode
. Thus,MultiplexingInputMode
s themselves can now be sub modes of another multiplexing input mode.- Label editing: the
com.yworks.graph.input.GraphEditorInputMode
has a newlabelEditableItems
property andshouldLabelBeEdited()
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 ofcom.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 tocom.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 tocom.yworks.graph.model.GroupedGraphUtil
. It simplifies retrieving theIGroupedGraph
instance from a passedIInputModeContext
. - The utility method
getTextSize
was added tocom.yworks.canvas.drawing.YGraphics
and calculates the size a text String would need in aTextField
if a specifiedTextFormat
was used. It can be used e.g. in custom label style implementations to position the text. - The signature of the
applyStroke
method ofcom.yworks.canvas.drawing.YGraphics
was changed. It now accepts two optional parameterbounds
andorigin
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 typecom.yworks.graph.input.GraphEditorHierarchyEvent.NODE_REPARENTED
if a node was reparented interactively. - The context for template styles (
com.yworks.graph.drawing.TemplateStyleDataContext
) now implementscom.yworks.support.ILookup
. - A
com.yworks.support.LookupChain
now dispatches acom.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 aRoundtripEvent.ROUNDTRIP_COMPLETE
event, no matter whether theupdate
property is set tofalse
ortrue
. - The
com.yworks.graph.model.FilteredGraphWrapper
can now be used as master graph for aFoldingManager
. - The graph implementations now dispatch
com.yworks.graph.model.GraphEvent
's sub classescom.yworks.graph.model.NodeEvent
,EdgeEvent
,LabelEvent
,PortEvent
, andBendEvent
instead ofcom.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 tocom.yworks.canvas.drawing.GeneralPath
and returns the number oflineTo
andclose
operations in this path. - The property
actionButtonProviderDecorator
has been added tocom.yworks.graph.model.ItemDecorator
to allow for easier decoration of thecom.yworks.graph.input.IActionButtonProvider
interface. - The static utility method
polyLineIntersects
was added tocom.yworks.canvas.geom.GeomSupport
and checks if a polygonal line intersects a rectangle. - The static utility method
calculateSegmentTangent
was added tocom.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 tocom.yworks.graph.input.NodeDropInputMode
to make customizing the input mode easier. - For
com.yworks.graph.input.NodeDropInputMode
andcom.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 propertyclickableItems
and the callbacksshouldBeClickable
,shouldBeClickSelectable
, andshouldBeMarqueeSelectable
were added to provide more control over selection and event dispatching. The callbackshouldBeMarqueeSelectable
was added to thecom.yworks.canvas.input.MainInputMode
as well.- The handling of embedded
SWF
classes by thecom.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 propertyrequestTimeout
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 ofcom.yworks.canvas.CanvasComponent
andcom.yworks.canvas.CanvasPrinter
as well as theexport
method ofcom.yworks.remote.ImageExportHandler
now accept an optionalSprite
parameter that can be used to pass a customized sprite instance for printing/export. - The
com.yworks.canvas.input.ContextMenuInputMode
has a newautoRegisterAtApplication
property that per default sets the application'scontextMenu
property to its ownContextMenu
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 onCanvasComponent
. AsfitContent()
just queuesfitContentCore()
for execution during the next validation, the fit content behavior can now be adjusted by overridingfitContentCore()
. - 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 tonull
instead of assigning a default stroke/fill. CSSLabelStyle
: Added setters forbackgroundStroke
,backgroundFill
, andclipText
.- 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 thecom.yworks.support.ITagOwner
functionality. - The
com.yworks.graph.input.CreateEdgeInputMode
now uses thecom.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 acomplete
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
andcom.yworks.io.graphml.reader.deserializer.PrimitivesDeserializer
have been added toDefaultGraphMLIOHandler
's andRoundtripHandler
'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
andcom.yworks.ui.GraphCanvasComponent
have a new propertymouseInterval
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 tocom.yworks.yfiles.server.graphml.flexio.FlexIOTools
to simplify logging and/or debugging client-server communication. - The factory methods
createParameterFromSource
andcreateParameterFromTarget
have been added tocom.yworks.yfiles.server.graphml.flexio.data.RotatedSliderEdgeLabelModel
andcom.yworks.yfiles.server.graphml.flexio.data.RotatedSideSliderEdgeLabelModel
. com.yworks.yfiles.server.graphml.flexio.serializer.ReflectionBasedSerializer
: methodserializeContent
has been extracted fromserializeItem
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 javay.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
andGraph2DRoundtripSupport
now have the base classesGraphRoundtripSupportBase
andGraph2DRoundtripSupportBase
, 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 theMultiPageLayouter
to break down a large graph into smaller pages. TheMultiPageLayouter
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 causeedgesAtPort
andedgesAtPortOwner
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
'sprint()
method, or when using theCanvasPrinter
. Also, when using theImageExportHandler
, the SWF's will be correctly exported to the resulting image. CanvasPrinter
now tries to use reasonable values if nomargin
orprintRectangle
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 defaultstyleName
fromCSSLabelStyle
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 theSimpleLabelStyle
orCSSLabelStyle
. - 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 defaultfileFilter
if no filter was set explicitly. - Bug fixed in
com.yworks.io.graphml.reader.deserializer.AbstractTemplateStyleDeserializer
which prevented Strings from being properly deserialized asstyleTag
inTemplateNodeStyle
andTemplateLabelStyle
. - 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'senableMouseChildren
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 asstyleTag
inTemplateNodeStyle
andTemplateLabelStyle
. - If a label uses a parameter for
com.yworks.yfiles.server.graphml.flexio.data.FreeNodeLabelModel
respectivelycom.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 asStyleTag
inTemplateNodeStyle
andTemplateLabelStyle
. - 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 newcom.yworks.canvas.drawing.IDisplayObjectCreator
interface instead for improved rendering performance (e.g. all style renderers now implementIDisplayObjectCreator
instead ofIPaintable
). 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 settingcom.yworks.graph.model.LabelLayerPolicy.SEPARATE_LAYER
aslabelLayerPolicy
andcom.yworks.graph.model.PortLayerPolicy.SEPARATE_LAYER
asportLayerPolicy
in theGraphModelManager
. - The usage of
com.yworks.graph.model.GraphModelManager.drawEdgesBehindGroupedNodes
is now deprecated. Instead the (default) edge layer policycom.yworks.graph.model.EdgeLayerPolicy.BEHIND_GROUP_NODES
should be used. - When a roundtrip has been completed the
com.yworks.remote.RoundtripHandler
now dispatches aRoundtripEvent.ROUNDTRIP_COMPLETE
event when theupdate
property is set tofalse
, too. - The private class
com.yworks.graph.model.PathGeometrySelectionPaintable
has been made deprecated. Uses should be replaced bycom.yworks.graph.model.EdgeSelectionDisplayObjectCreator
. - The graph implementations now dispatch
com.yworks.graph.model.GraphEvent
's sub classescom.yworks.graph.model.NodeEvent
,EdgeEvent
,LabelEvent
,PortEvent
, andBendEvent
instead ofcom.yworks.graph.model.GraphEvent
. As these events are sub classes of theGraphEvent
, listeners toGraphEvent
will continue working without changes.IGraph
implementations which dispatchGraphEvents
should dispatch the appropriate sub classes for the changed items. com.yworks.graph.drawing.SimpleNodeStyle
has been deprecated. It is recommended to use its replacementcom.yworks.graph.drawing.SimpleAbstractNodeStyle
instead.- The method
createTextRenderer
incom.yworks.graph.drawing.IconLabelStyleRenderer
has been removed. - The type of property
autoAdjustContentRect
of classcom.yworks.graph.input.GraphEditorInputMode
has been changed fromBoolean
tocom.yworks.graph.input.AdjustContentRectPolicy
. - The
com.yworks.canvas.input.ContextMenuInputMode
now sets the application'scontextMenu
property to its ownContextMenu
instance. Setting the input mode'sautoRegisterAtApplication
property tofalse
prevents this behavior. - A new method
setBendTag
has been added to interfacecom.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 tonull
instead of assigning a default stroke/fill. - The method
iterateHits
ofcom.yworks.graph.model.IFilteredHitTestIterator
has been renamed toiterateFilteredHits
. - 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 packagecom.yworks.yfiles.server.graphml.flexio.data.javamarkup
. - Classes
com.yworks.yfiles.server.graphml.flexio.serializer.FlexReflectionBasedSerializer
andcom.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. Classcom.yworks.yfiles.server.graphml.flexio.LabelInputHandler
was introduced to manage node and edge labels. - The methods
readGraph(HttpServletRequest, Graph)
,sendGraph(Graph, HttpServletResponse)
, andsendError(String, HttpServletResponse)
were removed from classcom.yworks.yfiles.server.graphml.support.AbstractGraphRoundtripSupport
. These methods are defined in the interfacecom.yworks.yfiles.server.graphml.support.ServletRoundtripSupport
or its implementationsGraphRoundtripSupport
orGraph2DRoundtripSupport
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
'sgetParameters()
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 methodpaste
incom.yworks.ui.GraphCanvasComponent
.- Fixed
com.yworks.graph.model.GraphClipboard
'scut
andcopy
which prevented theonElementCut
andonElementCopied
callbacks from being invoked in folded graphs.
Server (Java)
- Bug in
com.yworks.yfiles.server.graphml.flexio.deserializer.ReflectionBasedDeserializer
fixed that sometimes caused anArrayIndexOutOfBoundsException
if the property name of a XML child node couldn't be resolved. com.yworks.yfiles.server.graphml.folding.EdgeViewState
now contains atag
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 returnfalse
. - Fixed potential memory leaks in
com.yworks.graph.drawing.BitmapNodeStyleRenderer
,com.yworks.graph.drawing.ImageNodeStyleRenderer
, andcom.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
whencom.yworks.canvas.CanvasComponent.enableMouseChildren
was set toCanvasComponent.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 serializingjava.awt.image.BufferedImage
data as created e.g. by thecom.yworks.yfiles.server.graphml.flexio.deserializer.ImageDeserializer
. - Regression fixed that prevented parsing labels of
com.yworks.yfiles.server.graphml.folding.NodeViewState
s andcom.yworks.yfiles.server.graphml.folding.EdgeViewState
s.
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 oldcom.yworks.graph.model.SliderEdgeLabelModel
and thecom.yworks.graph.model.RotatingEdgeLabelModel
. It provides label positions either centered on the edge path or at a specified distance on either of its sides. The rotation angle of the label can be defined as absolute value or as relative to the closest edge segment. - Java server side support for RotatedSliderEdgeLabelModel has been added including a mapping mechanism to the
y.layout.RotatedSliderEdgeLabelModel
. - The new edge label model
com.yworks.graph.model.RotatedSideSliderEdgeLabelModel
offers a behavior similar to theRotatedSliderEdgeLabelModel
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 othercom.yworks.graph.model.ILabelModel
s, 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 ancom.yworks.graph.model.ILabelCandidateDescriptor
. - The concept of label candidate descriptors has been added that allows to describe additional properties of candidate
ILabelModelParameter
s that can be used by automatic labeling algorithms. - Convenience methods
setCenter
,getBounds
andcreateFromOrientedRectangle
added tocom.yworks.canvas.geom.OrientedRectangle
. - Static convenience methods
distanceBetweenRectangles
andpointsAreEqual
added tocom.yworks.canvas.geom.GeomSupport
. - The method
getSnapLines
has been added to thecom.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 tocom.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
andedgeRelativeDistance
have been added to the constructor ofcom.yworks.graph.model.RotatingEdgeLabelModel
. autoFlip
property added to thecom.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
ofcom.yworks.canvas.CanvasComponent
allows to conveniently adjust the view port to show a given rectangle in world coordinates. The optional parametermaxZoom
allows to specify a maximum zoom level that shall be used by this operation. - Method
fitGraphBounds
of thecom.yworks.canvas.CanvasComponent
now has an optionalmargins
parameter which allows to conveniently add margins to the graph. - The new utility class
com.yworks.canvas.input.HitTestUtil
offers the static methodgetClosestHits()
that filters those hits from a given list ofIModelItems
s that are closest to the given location. - The new error event
com.yworks.graph.anim.GraphMorphErrorEvent
is dispatched bycom.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 noIModelItem
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 thecom.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 thecom.yworks.io.SymbolicPackageNameRegistry
. Furthermore it is more tolerant when the attribute or property names of the parsed XML node and the target class only differ in upper and lower case. - The 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 thegetAdditionalSnapLines
method of thecom.yworks.graph.input.snapLines.GraphSnapContext
. - The
com.yworks.graph.model.DefaultLabelModelParameterFinder
has a new propertyangularDeviationFactor
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 ancom.yworks.graph.model.ILabelCandidateDescriptor
when adding a label model parameter. This descriptor is returned if the context retrieved via theGenericLabelModel
'sgetContext()
method is queried for aILabelCandidateDescriptor
. - Method
adjustContentRect
of thecom.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 extendsmx.collections.ArrayCollection
instead of implementingmx.collections.ICollectionView
andmx.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 ofcom.yworks.ui.GraphCanvasComponent
. - The domain check in the license validation has been made case insensitive.
Server (Java)
- Improved support for (de)serialization via MarkupExtensions.
- The
com.yworks.yfiles.server.graphml.flexio.deserializer.ReflectionBasedDeserializer
now always prefers to use thecom.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 noINodeSnapResultProvider
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 ancom.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
orcom.yworks.remote.RoundtripHandler
having simple type have always been parsed and set asString
values instead of their specified type (likeBoolean
orint
). - The
com.yworks.io.graphml.writer.serializer.LineTypeSerializer
now supports dashed-dottedLineType
s. - Fixed a possible null pointer error in
com.yworks.io.graphml.reader.EdgeViewStateInputHandler
. - Method
isExpanded
of thecom.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 typecom.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 propertycollectPortSnapLines
to be ignored.
Server (Java)
- Bug in method
syncLabels(y.base.Edge edge, boolean createIfNotExisting)
incom.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 thecom.yworks.graph.model.ILabelModel
interface to provide a lookup context for a combination of label and parameter. This method is used to lookup ancom.yworks.graph.model.ILabelCandidateDescriptor
for such a combination. Custom implementations may returncom.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
orcom.yworks.remote.RoundtripHandler
for values of simple type, these values have wrongly been parsed and set asString
values instead of parsing theseString
s to the set type (likeBoolean
orint
). Custom code that works around this bug by looking up the values asString
s and converting them to the correct type itself can now be changed to directly lookup the values as e.g.Boolean
orint
. - In the interface
com.yworks.io.graphml.reader.IAttributeFactory
the type of thevalue
parameter of the methodcreateAttribute
has been changed fromString
to*
to fix the bug mentioned above. - The signature of the constructor of
com.yworks.io.graphml.reader.AttributeInputHandler
has been changed topublic function AttributeInputHandler(attrName:String, scopeType:String, contentType:String, attributeFactory:IAttributeFactory)
.
Server (.NET)
- The reflection based serialization classes have been moved into the yFilesViewer assembly. Thus, the namespace of the XmlnsDefinition and XmlnsPrefix attributes has been changed from
yWorks.yFiles.Graph.Web.GraphML.Compat.Support
toyWorks.Canvas.Support
.
The following classes are now deprecated
com.yworks.graph.drawing.ComponentNodeStyle
should be replaced by the more flexible and better supportedcom.yworks.graph.drawing.TemplateNodeStyle
.com.yworks.graph.model.SliderEdgeLabelModel
andcom.yworks.graph.model.RotatingEdgeLabelModel
should be replaced by one of the new label modelscom.yworks.graph.model.RotatedSliderEdgeLabelModel
orcom.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 theCustomSnappingDemo
. - 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 theOrthogonalEdgesDemo
.
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 preconfiguredGraphMLIOHandler
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 thecom.yworks.ui.GraphCanvasComponent
.- Restricting the interactive movement of graph elements is simplified by the new classes
com.yworks.canvas.input.ConstrainedHandle
andcom.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
andcom.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.LineType
s 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 customcom.yworks.canvas.input.IHandle
implementations for the source and target port of an edge. com.yworks.io.binary.ExternalizableGraph
now allows to override thecreateGraph
method.- The alignment of the text of a
com.yworks.graph.drawing.SimpleLabelStyle
now gets (de-)serialized. com.yworks.canvas.CanvasComponent
has a new propertyenableMouseChildren
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 propertiesmouseWheelZoomCenteredRecognizer
andmouseWheelZoomMouseLocationRecognizer
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 tocom.yworks.canvas.CanvasPrinter
and is called if the print job couldn't be started. - The method
cubicTo
was added tocom.yworks.canvas.drawing.GeneralPath
and appends a cubic bezier curve to the path elements. - The method
drawString
incom.yworks.canvas.drawing.YGraphics
was improved to better consider rotation when calculating the text size. - New static functions
addInsetsToRectangle
,findLineIntersection
,rectanglesAreEqual
andgetConstrainedLocation
were added tocom.yworks.canvas.geom.GeomSupport.
- A static function
createFrom
was added tocom.yworks.canvas.geom.YPoint
that takes ancom.yworks.canvas.geom.IPoint
as argument. - The event type
DRAG_STARTED
was added tocom.yworks.canvas.input.DragEvent
and is dispatched by thecom.yworks.canvas.input.MoveInputMode
and thecom.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 providedcom.yworks.canvas.input.CanvasMouseEvent
.MODIFIER_ALT
checks if the ALT key was held down in the providedflash.events.KeyboardEvent
,flash.events.MouseEvent
orcom.yworks.canvas.input.CanvasMouseEvent
.SPACE_PRESSED
checks if the SPACE key was pressed down in the providedflash.events.KeyboardEvent
.SPACE_RELEASED
checks if the SPACE key was released in the providedflash.events.KeyboardEvent
.CTRL_RELEASED
checks if the CTRL key released in the providedflash.events.KeyboardEvent
.BACKSPACE_PRESSED
checks if the BACKSPACE key was pressed down in the providedflash.events.KeyboardEvent
.
com.yworks.canvas.input.HandleInputMode
andcom.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 dispatchescom.yworks.canvas.input.DragEvent.DRAG_STARTED
andcom.yworks.canvas.input.DragEvent.DRAGGING
events.- The method
createChildInputModeContext
of classcom.yworks.canvas.input.MultiplexingInputMode
was made public. - The
com.yworks.canvas.input.OverviewInputMode
now uses the mouse wheel zoom factor of thecom.yworks.ui.GraphOverviewComponent
it is used with. - The static factory method
createReshapeableHandles
incom.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 methodaddReshapeable
allows to add anycom.yworks.canvas.geom.IReshapeable
to the morphing. - The
com.yworks.graph.drawing.CollapsibleNodeStyleDecorator
now includes the collapse icon bounds in theisInside
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 thereshapeable
property. - Subclasses of the
com.yworks.graph.drawing.DelegatingNodeStyle
now have access to the wrapped style. - The
imageClass
property ofcom.yworks.graph.drawing.ImageNodeStyle
is now accessible. - A property
dropShadow
was added to thecom.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 typecom.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 ofcom.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 usedcom.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
- An event of the new type
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 ofcom.yworks.graph.input.ReparentNodeHandler
now checks if thenewParent
isn't a descendant ofnode
and ifnewParent
is either a group node or a collapsed folder node. com.yworks.graph.model.BendDecorator
now supports decoratingcom.yworks.graph.input.snapLines.IBendSnapResultProvider
.com.yworks.graph.model.EdgeDecorator
supports decoratingcom.yworks.graph.model.IEdgePortHandleProvider
,com.yworks.graph.input.IOrthogonalEdgeHelper
,com.yworks.graph.input.snapLines.IEdgeSnapResultProvider
andcom.yworks.graph.input.snapLines.ISnapLineProvider
.com.yworks.graph.model.NodeDecorator
supports decoratingcom.yworks.canvas.input.IReshapeHandler
,com.yworks.canvas.model.IObstacleProvider
,com.yworks.graph.input.snapLines.INodeReshapeSnapResultProvider
,com.yworks.graph.input.snapLines.INodeSnapResultProvider
andcom.yworks.graph.input.snapLines.ISnapLineProvider
.com.yworks.graph.model.PortDecorator
supports decoratingcom.yworks.graph.input.snapLines.IPortSnapResultProvider
andcom.yworks.graph.input.snapLines.ISnapLineProvider
.- Providing label model parameter is now easier to customize as the method
getCandidateParameters
ofcom.yworks.graph.model.DefaultLabelModelParameterFinder
first uses the label's lookup to find anILabelModelParameterProvider
. 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
, andcom.yworks.canvas.input.MoveInputMode
using the new propertybridgeUpdateMode
. - The static method
getPathToRoot
was added tocom.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 tocom.yworks.remote.ImageExportHandler
,com.yworks.remote.UploadHandler
andcom.yworks.remote.DownloadHandler
. - In addition the callback method
onProgress
was added tocom.yworks.remote.DownloadHandler
and the name of the last successfully downloaded file is stored in its new propertyfileName
. - The color of fonts and
com.yworks.graph.drawing.compat.LineType
s now gets (de-)serialized. com.yworks.io.graphml.reader.AbstractInputHandler
has two new static utility methodsgetAttributeName
andgetAttributeType
that return the values of the attributesGraphMLConstants.ATTR_TYPE
respectivelyGraphMLConstants.ATTR_NAME
of a given XML node.- Added convenience methods
addGraphAttribute
andaddRegistryGraphAttribute
tocom.yworks.io.graphml.GraphMLIOHandler
com.yworks.canvas.drawing.YGraphics
now allows to nest calls tosave()
andrestore()
.- 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
andcom.yworks.io.graphml.reader.deserializer.StrokeDeserializer
now can handlemx.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 usedcom.yworks.yfiles.server.graphml.support.GraphRoundtripSupport
as it creates the support via the new protected methodcreateGraphRoundtripSupport
.
The inner static classCustomGraphRoundtripSupport
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 asmx.graphics.Stroke
andmx.graphics.SolidColorStroke
. Thecom.yworks.yfiles.server.graphml.flexio.serializer.StrokeSerializer
andcom.yworks.yfiles.server.graphml.flexio.deserializer.StrokeDeserializer
support this.
.NET server
- The new property
UseSolidColorStroke
onyWorks.yFiles.Graph.Web.GraphRoundtripSupport
determines whetherPen
s will be deserialized at Flex side asmx.graphics.Stroke
andmx.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 customcom.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 ofcom.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 ofcom.yworks.canvas.CanvasComponent
. - Setting the
horizontalScrollPosition
orverticalScrollPosition
property ofcom.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 amorphGraph
call for acom.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
ofcom.yworks.canvas.geom.GeomSupport
that sometimes returnedNumber.NaN
if the line is vertical and the point lies on the line. - Fixed
com.yworks.canvas.input.CompositePositionHandler
'scancelDrag
anddragFinished
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 theautoDrag
property of thecom.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 noclientCanvas
was set. - The
com.yworks.canvas.model.CollectionModelManager
does now remove thecom.yworks.canvas.model.IModelItemDescriptor
s of previously added objects correctly when methodclear
is called on the underlyingcom.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
ofcom.yworks.graph.drawing.BitmapNodeStyle
which didn't transfer the style's image property. - Fixed a bug in the
paint
method ofcom.yworks.graph.drawing.BitmapNodeStyleRenderer
that caused a null pointer exception if nocom.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 typecom.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 ofcom.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 bycom.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 setlocalRoot
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 useddemo.orgchart.PersonNode
components were cached as bitmap. - Fixed the
demo.businessProcessDiagram.CustomArrow
used in theBusinessProcessDiagramDemo
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 ofcom.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 ofcom.yworks.graph.model.IEdgePortCandidateProvider
andcom.yworks.graph.model.IPortCandidateProvider
. Implementations may receive the graph from the passed context viacontext.lookup(IGraph) as IGraph
. - In
com.yworks.graph.model.IPortCandidate
the propertytype
was replaced by a more generalcandidateTag
which may be anyObject
and the propertyvalid
was replaced byvalidity
which can also indicate a dynamic port candidate. Furthermore the methodgetPortCandidateAt
was added to resolve dynamic port candidates and the signature of methodcreateInstance
was changed to take the context for the port candidate is created in as parameter.
- The
- The method
groupSelection
ofcom.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 inorg.graphdrawing.graphml.GraphMLConstants
. - For the types of data key elements the enumeration class
y.io.graphml.KeyType
is used instead of the constants defined inorg.graphdrawing.graphml.attr.AttributeConstants
. - The interface
com.yworks.yfiles.graphml.flexio.ISerializer
was replaced byy.io.graphml.output.SerializationHandler
. com.yworks.yfiles.graphml.flexio.serializer.AbstractSerializer
now extendsy.io.graphml.output.TypeBasedSerializer
.
Subclasses ofAbstractSerializer
have to implement the methodsprotected Class getSerializationType(GraphMLWriteContext context)
andpublic abstract void serializeItem(Object item, XmlWriter writer, GraphMLWriteContext context) throws GraphMLWriteException
(which replaced the earlier methodserializeContent
).
All serializers and usages have been adjusted accordingly.- The interface
com.yworks.yfiles.graphml.flexio.IDeserializer
was replaced byy.io.graphml.input.DeserializationHandler
com.yworks.yfiles.graphml.flexio.deserializer.AbstractDeserializer
now extendsy.io.graphml.input.AbstractDeserializer
.
Subclasses ofAbstractDeserializer
have to implement the methodpublic Object deserializeNode(Node xmlNode, GraphMLParseContext context) throws GraphMLParseException
(which replaced the earlier methoddeserializeElementContent
).
All deserializers and usages have been adjusted accordingly.- Class
com.yworks.yfiles.server.graphml.support.GraphMLLayoutGraphIOHandler
was refactored and does now extendy.io.graphml.GraphMLHandler
. Methods and properties having a counterpart inGraphMLHandler
have been removed. In addition the following did change:- The property
outputEncoding
was removed. Instead there is now awrite
method that takes the encoding as an argument. - The properties
readEmbeddedResources
,writeEmbeddedResources
,errorHandler
,graphMLCoreNS
,fileFormatString
,fileNameExtension
,validationEnabled
andwriteDTDEnabled
as well as the methodscanRead
andcanWrite
are not longer supported or used and therefore have been removed. - The methods to add attributes have been removed. Instead appropriate
InputHandler
andOutputHandler
have to be added directly.
- The property
- For the scopes of data key elements the enumeration class
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 toEventRecognizers.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 returnstrue
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 returnstrue
if the SHIFT key was pressed in the passedflash.events.KeyboardEvent
,flash.events.MouseEvent
orcom.yworks.canvas.input.CanvasMouseEvent
.
- The method
groupSelection
ofcom.yworks.graph.input.GraphEditorInputMode
now returns the newly created group node. com.yworks.canvas.input.IHandle
andcom.yworks.canvas.input.IPositionHandler
were refactored:- The method
handleMove
ofIPositionHandler
doesn't take the delta since the last call anymore. The signature of the method changed
fromhandleMove( context:IInputModeContext, originalX:Number, originalY:Number, newX:Number, newY:Number, dx:Number, dy:Number ):Boolean
tohandleMove( context:IInputModeContext, originalX:Number, originalY:Number, newX:Number, newY:Number):Boolean
.
Implementations requiring this delta should store thenewX
andnewY
values passed in the lasthandleMove
and calculate the delta in the next call. - Several functions of
IPositionHandler
have been pulled up into its new super interfacecom.yworks.canvas.input.IDragHandler
. IHandle
now inherits fromIDragHandler
instead ofIPositionHandler
and therefore doesn't include thesetPosition
method anymore.
- The method
- The signature of the method
getHandles():Collection
of the interfacecom.yworks.canvas.input.IHandleProvider
was changed togetHandles(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
frompublic function CollectionModelManager( canvas:CanvasComponent, model:ICollectionModel=null, mapper:IMapper=null )
topublic function CollectionModelManager( canvas:CanvasComponent, model:ICollectionModel=null, mapper:DictionaryMapper=null )
.
The restriction to acom.yworks.support.DictionaryMapper
was necessary to have access to all keys in the mapper. - The method
updateDescriptor
ofcom.yworks.canvas.model.ModelManager
was changed to return whether the descriptor had anycom.yworks.canvas.ICanvasObjects
after the update. The signature changed
frompublic function updateDescriptor( descriptor:IModelItemDescriptor ):void
topublic 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 acom.yworks.canvas.model.IModelItem
:- The functions
getCanvasObjects
andgetMainCanvasObject
ofcom.yworks.canvas.model.CollectionModelManager
. - The getter for property
item
of the interfacecom.yworks.canvas.model.IModelItemDescriptor
. - The
canInstall
andinstallItem
functions of classcom.yworks.canvas.model.IModelItemInstaller
. - The
install
andadd
functions of classcom.yworks.canvas.model.ModelManager
.
- The functions
- The method
reparent
was added to the interfacecom.yworks.graph.input.IReparentNodeHandler
. Implementations can get the graph instance to work upon from the passed context viacontext.lookup(IGraph) as IGraph
. - Further refactoring were necessary to support dynamic ports:
- The
createInstance
method ofcom.yworks.graph.model.AbstractPortCandidateProvider
now expects ancom.yworks.graph.model.DefaultPortCandidate
as parameter instead of any implementation ofcom.yworks.graph.model.IPortCandidate
. In addition the methodgetCandidateAt
that is used to resolve a dynamic port candidate into a non-dynamic one as well as the methodcreateCallbackPortAt
that can be used to create a port candidate using a suggested location and label model were added. - The signature of method
createCandidate
ofcom.yworks.graph.model.CurrentEdgePortsCandidateProvider
was changed
fromprotected function createCandidate( graph:IGraph, port:IPort ):DefaultPortCandidate
toprotected function createCandidate( context:IInputModeContext, port:IPort ):DefaultPortCandidate
. - The signature of method
addCandidateWithModelParameter
ofcom.yworks.graph.model.PortCandidateProvider
was changed
frompublic function addCandidateWithModelParameter (graph:IGraph, owner:IPortOwner, portLocationModelParameter:IPortLocationModelParameter):IPortCandidate
topublic function addCandidateWithModelParameter (owner:IPortOwner, portLocationModelParameter:IPortLocationModelParameter):IPortCandidate
. - In class
com.yworks.graph.model.PortRelocationHandle
the methodsgetClosestCandidate
,setPorts
andgetPort
take the context of the relocation gesture as additional parameter. The signature of its methodgetPort
changed
fromprotected function getPort( candidate:IPortCandidate ):IPort
toprotected function getPort(context:IInputModeContext, candidate:IPortCandidate, suggestedLocation:IPoint):IPort
. - Class
com.yworks.graph.model.PortCandidateType
was removed.
- The
- The method
createBend
ofcom.yworks.graph.model.IBendCreator
now additionally takes the context the bend shall be created in. The signature changed
fromfunction createBend(graph:IGraph, edge:IEdge, x:Number, y:Number):int
tofunction createBend(context:IInputModeContext, graph:IGraph, edge:IEdge, x:Number, y:Number):int
. - The constructor as well as the method
getHandles
ofcom.yworks.graph.model.InputModeController
now take an additional parameter of typecom.yworks.canvas.input.IInputModeContext
. - The method
createIOHandler
ofcom.com.yworks.io.binary.ExternalizableGraph
now creates acom.yworks.io.graphml.DefaultGraphMLIOHandler
instead of aDotnetCompatGraphMLIOHandler
.
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 extendy.io.graphml.output.AbstractOutputHandler
.
The classesLabelOutputHandler
andSharedDataOutputHandler
of packagecom.yworks.yfiles.server.graphml.flexio
now override the methodgetPrecedence()
instead of implementing the interfaceorg.graphdrawing.graphml.writer.Precedence
. - Class
com.yworks.yfiles.server.graphml.flexio.StyleOutputHandler
was replaced byy.io.graphml.output.ComplexDataProviderOutputHandler
s using appropriatecom.yworks.yfiles.server.graphml.flexio.StyleSerializer
. - Input handlers earlier extending
yext.graphml.reader.AbstractDOMInputHandler
now extend the new classcom.yworks.yfiles.server.graphml.flexio.AbstractInputHandlerProvider
.
The classcom.yworks.yfiles.server.graphml.flexio.SharedDataInputHandler
now overrides the methodgetPrecedence()
instead of implementing the interfaceorg.graphdrawing.graphml.reader.dom.Precedence
. - The classes
LabelInputHandler
andStyleInputHandler
of packagecom.yworks.yfiles.server.graphml.flexio
were replaced byy.io.graphml.input.ComplexDataAcceptorInputHandler
s using appropriatecom.yworks.yfiles.server.graphml.flexio.LabelDeserializer
andcom.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 methodsy.io.graphml.output.GraphMLWriteContext.serialize(Object item)
andy.io.graphml.input.GraphMLParseContext.deserialize(Node targetNode)
instead.
The classcom.yworks.yfiles.server.graphml.flexio.FlexIOTools
offers new static support methods likepublic static boolean canBeSerialized(Object item, GraphMLWriteContext context)
andpublic static boolean trySerialize(Object item, GraphMLWriteContext context)
that can be used in this context as well. com.yworks.yfiles.server.graphml.flexio.serializer.AbstractEdgeStyleSerializer
andcom.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 methodsgetArrowSerializer
respectivelygetArrowDeserializer
anddeserializerArrow
were removed.- In
com.yworks.yfiles.server.graphml.support.AbstractGraphRoundtripSupport
the following methods did change:protected DOMInputHandler createTagInputHandler()
was replaced byprotected InputHandlerProvider createTagInputHandlerProvider()
protected DOMInputHandler getTagInputHandler()
was replaced byprotected InputHandlerProvider getTagInputHandlerProvider()
public XmlWriter createXmlWriter(OutputStream os)
may now throw anGraphMLWriteException
- In
com.yworks.yfiles.server.graphml.support.GraphRoundtripSupport
the following method did change:protected SerializerRegistry createSerializerRegistry()
was removed. Instead the methodprotected void addRegisteredHandlers(GraphMLHandler handler)
is called byconfigureHandler
to addSerializationHandler
andDeserializationHandler
to theGraphMLHandler
.protected SharedDataOutputHandler createSharedDataOuputHandler()
was renamed tocreateSharedDataOutputHandler
- In
com.yworks.yfiles.server.graphml.support.Graph2DRoundtripSupport
aGraph2DGraphMLHandler
is used instead ofGraphMLIOHandler
in the methodscreateHandler
andconfigureHandler
. - The used
XmlWriter
moved from packageorg.graphdrawing.graphml.writer
toy.io.graphml.output
and was refactored:- method
public void addNamespace(String URI, String prefix)
was removed. Instead any.io.graphml.output.XmlNamespaceManager
can be retrieved bypublic XmlNamespaceManager getNamespaceManager()
. - method
public XmlWriter writeCDATA(String s)
was renamed topublic 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 theXmlWriter
instance anymore. - method
public XmlWriter writeStartDocument(String prefix, String docTag, String nsURI) throws GraphMLWriteException
was changed topublic XmlWriter writeStartDocument()
so the first element has to be written using additionalwriteStartElement
andwriteEndElement
calls. - the methods
writeRaw
,setDTD
,setWriteXmlDeclaration
andsetEncoding
have been removed.
- method
- The
Lookup
class moved from packageorg.graphdrawing.graphml.util.
toy.io.graphml
. Imports have to be adjusted accordingly. com.yworks.yfiles.server.graphml.support.DotnetHierarchyGraphElementFactory
now implements the interfacey.io.graphml.input.GraphElementFactory
instead of extendingyext.graphml.compat.DotnetGraphElementFactory
.- The class
com.yworks.yfiles.server.graphml.folding.markup.Port
does now implement they.io.graphml.Port
interface and has a newowner
property. y.geom.YInsets
are now used instead ofjava.awt.Insets
for node insets which allows to use double precision.com.yworks.yfiles.server.graphml.flexio.data.DelegatingStyle
now implements the interfacesINodeStyle
,IEdgeStyle
,ILabelStyle
andIPortStyle
of the same package.
- Output handlers earlier extending
- The return type of
getWidth()
andgetHeight()
of the interfacecom.yworks.yfiles.server.graphml.flexio.data.IIcon
was changed fromint
todouble
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
toshift
, in order to prevent clashes of detail- and multi-selection. The old behavior can be restored using theGraphEditorInputMode#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
orTemplateLabelStyle
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 theIDummyEdgeConverter
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, theattr.name
for port view states wasattr.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 thecom.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'sisAutoFlip()
method. - The
ImageExportHandler
can now export images with elements styled with theTemplateNodeStyle
orTemplateLabelStyle
. - 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 itsenable
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 havenull
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 wasyfiles-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 maximumsize
.
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
: TheGraphEvent
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
: aIDisplayObjectContext
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
andcom.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 methodinstall()
is final now. All subclassing input modes have to refactor overriding methodspublic override function install( context:IInputModeContext )
toprotected override functioninstallCore(context:IInputModeContext)
and calls inside this method to the super implementation tosuper.installCore()
com.yworks.canvas.input.MainInputMode
orcom.yworks.graph.input.GraphEditorInputMode
: thegraphCanvas
,selectionModel
andcollectionModel
are not set at the timeinstalling
is dispatched. When initializing the input modes move all code which accesses these properties to a handler for theinstalled
event. Note: any other customizations must still be carried out in theinstalling
event handler.- Interface
com.yworks.graph.model.IPortCandidate
's propertyget location():IPoint
was replaced byget locationModelParameter():IPortLocationModelParameter
. Implementget locationModelParameter():IPortLocationModelParameter
. To preserve the current functionality, aIPortLocationModelParameter
instance can be generated from a given location bynew 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 topublic function DefaultPortCandidate( owner:IPortOwner, locationModelParameter:IPortLocationModelParameter=null )
.- Method
addPortWithParameter( portOwner:IPortOwner, modelParameter:IPortLocationModelParameter ):IPort
and thedefaultNodePortModelParameter
property have been added to thecom.yworks.graph.model.IGraph
interface. JavaCompatGraphMLIOHandler
andDotnetCompatGraphMLIOHandler
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 themovableItems
property is set tonull
.- The interface
com.yworks.support.IServiceProvider
has been removed. Occurrences of this interface have been replaced bycom.yworks.support.ILookup
, which provides the same functionality. - The default value of
com.yworks.canvas.CanvasComponent#mouseWheelZoom
has been changed from1.2
to1.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
'sdataPropertyName
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-awareMXML
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 theGraphMLIOhandler
'ssupportUserTags
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) orGraphRoundtripSupport
(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 ofITagOwner
s through theIMapper
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
'sclassName
property. - Fixed the
com.yworks.graph.input.GraphEditorInputMode#groupSelectionAllowed
andungroupSelectionAllowed
properties. - Changing an edge's style will now correctly dispatch the corresponding event and call the corresponding callbacks.
- Any
ISerializer
s andIDeserializer
s that have been added to aGraphMLIOHandler
instance are now always used. Before, they were used only if thereadStyles
/writeStyles
flags were set. - Setting a custom
overviewInputMode
for acom.yworks.ui.GraphOverviewComponent
now works correctly.
Server (Java)
- Fixed deserialization of the
SimpleLabelStyle
'sclipText
property.
Incompatible Changes
Server (Java)
com.yworks.yfiles.server.graphml.support.XmlSupport#getTextContent()
now returns an empty string instead ofnull
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 thecom.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
'scontextMenuModeEnabled, handleInputModeEnabled, moveModeEnabled, clickModeEnabled, marqueeSelectionModeEnabled
andkeyboardModeEnabled
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 theautoCleanCustomMenuItems
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
'sreleasedRecognizer
property will now correctly set the event recognizer for the release event. Also,MoveInputMode
'shoverRecognizer
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 typeICollectionModel
.
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
andcom.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
, andRotatingEdgeLabelModel
.
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 classcom.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.ShapeNodeStyle
andcom.yworks.graph.drawing.GeneralPathNodeStyle
. - New properties
writeLabels
andreadLabels
of class com.yworks.io.graphml.GraphMLIOHandler. - Improved handling of default values when writing GraphML output: New method
isDefaultData
of interfacecom.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 extendsflash.events.Event
instead offlash.events.MouseEvent
. This change was necessary because of a compatibility issue with the Adobe AIR framework. - The signature of the
textProvider
Function of classcom.yworks.canvas.input.MouseHoverInputMode
was changed: It now expects an instance ofcom.yworks.canvas.input.IInputModeContext
instead of acom.yworks.canvas.CanvasComponent
as the first argument. - The signature of the
nodeCreator
Function of classcom.yworks.canvas.input.GraphEditorInputMode
was changed: A parameter of typecom.yworks.canvas.input.IInputModeContext
was added. - The constructor of classes
com.yworks.canvas.input.CanvasContextMenuEvent
now expects an additional parameter of typecom.yworks.canvas.input.IInputModeContext
. - The "viewPortChanged" event dispatched by class
com.yworks.canvas.CanvasComponent
now dispatched acom.yworks.canvas.CanvasEvent
. - Interface
com.yworks.graph.drawing.IIconLabelStyle
now uses an instance of classcom.yworks.graph.drawing.IIcon
instead of aDisplayObject
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 xmlDocumentFragment
s. 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 classcom.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. AnIInputModeContext
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 ofcom.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 theinputMode
property and methodsaddInputMode()
,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 usingsetLookupImplementation()
. The lookup behavior of the default graph model items is now implemented in the corresponding lookup delegate implementationsDefaultNodeLookup
,DefaultEdgeLookup
,DefaultLabelLookup
,DefaultBendLookup
andDefaultPortLookup
.
Bugfixes
Client
- Setting the
cursor
property oncom.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 implementscom.yworks.support.ILookup
.- New method
iterateHits
ofcom.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
andcom.yworks.canvas.input.ReshapeableHandles
now support aminimumEnclosedArea
.- 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
andcom.yworks.support.YList
now supportfor .. in
iteration and the array access operator.
Incompatible Changes
Client
- All input modes now use an
com.yworks.canvas.input.IInputModeContext
. Therefore, the interfacecom.yworks.canvas.input.IInputMode
has changed. All inheritors ofIInputMode
have been adapted accordingly. - Interface
com.yworks.canvas.input.IPositionHandler
has also been changed to usecom.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.
ISerializer
s andIDeserializer
s 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 aMoveLabelMode
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
tofalse
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 ofcom.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
orcom.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 anactive
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, callbacksshouldShowHandles
,shouldBeDeleted
, andshouldBeMovable
were introduced.com.yworks.canvas.input.CanvasMouseEvent
now offers aclickCount
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 ofcom.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 forcom.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 theinputIOHandler
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
tofalse
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
andAdvancedStroke
for use withYGraphics
allow for drawing dotted/dashed strokes or implementation of custom strokes. - New component
com.yworks.ui.GraphOverviewComponent
and classcom.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
andcom.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
andinvalidated
. - New class
com.yworks.canvas.drawing.BoundsProvider
provides defaultIBoundsProvider
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
andcom.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 oncom.yworks.remote.RoundtripSupport
andcom.yworks.remote.DownloadHandler
- New edge label model:
com.yworks.graph.model.FreeEdgeLabelModel
. - New
distance
andedgeRelativeDistance
parameters forcom.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, ifsetMapLabelModels( 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 newcom.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.ICanvasObject
s have adirty
property that can be queried usingcom.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
ShapeNodeShape
s. - Exact edge intersection calculation and hit tests for all
ShapeNodeShape
s. - New interface
IGeneralPathNodeStyle
and default implementationsGeneralPathNodeStyle
andGeneralPathNodeStyleRenderer
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 lacky:Path
elements won't crash the GraphML parser anymore. - Rendering of zero-length edges works properly.