mxGraph 0.9.9.10 adds the communications layer and diagram sharing to the .NET back-end server example, bringing it up to the same functionality as the Java back-end. Also provided is a full round-trip example using this back-end including the ability for multiple clients to simultaneously edit the same diagram. Label positioning when edges are dragged has been improved. The option to add a background to a label and a label border has been added for edge labels. Fixes have been made to the orgchart example for Internet Explorer and a linefeed issue in the Java back-end example has been resolved.
This release adds Java and .NET backend examples to the existing PHP example, including diagram sharing and I/O in the Java example. The key handler has been changed to not consume all key events for the page, only key events from the graph container are processed. The automatic tree layout now positions the layout correctly in the visible area. The in-place editor position is now wherever the label is and no longer jumps around. A "snapshot" action has been added to request that the current back-end produce and transfer a static image of the current graph.
The mxEditor constructor now takes parameters describing the session, the initialisation URL, the sending URL and receiving URL. The function mxSession.post is now named notify and the post event is also renamed to notify. mxSession.urlPost has been renamed to Session.urlNotify. The preview action for CSS links in VML has been corrected. Tooltips on palette items in Firefox were not displaying correctly for icons used for drag and drop. This has now been corrected.
It is now possible to insert a custom conditions in actions in the XML config file so popup menus can be configured just in this configuration file. mxGraph.addEdge has been added so that the event fired correctly describes the addition of the edge. mxGraph.isCellVisible and isCellCollapsed have been added so that they might be overridden to call something other than the model, for example, the view, to implement a filter.
The CSS overflow property is now properly handled across all browsers for hidden, visible and auto modes. When both terminals of an edge are selected and moved, previously the control points were reset. This is no longer the case, since the behaviour did not make sense. The mxEditor.getUrlPost method has been added, which may replace the variable, for greater flexibility with dynamic URLs.
isEnabled in the handlers has been renamed to enabled for consistency and the isEnabled() and setEnabled() methods have been added to access them. An additional click was required to activate tooltips in Internet Explorer, this is now fixed. mxTooltipHandler.isEnabled has been renamed to enabled and accessor methods added for it. mxObjectCodec has been refactored to reduce the method sizes.
Cell ID types are now strings in strongly typed back-ends, like Java and .NET. mxGraphSelection.doAddCell and doClear have been renamed to tryAddCell and tryClear. mxCell.transient has been renamed to mxCell.mxTransient. Clearing the selection in IE only happens now if the event is handled in mxGraph, previously, events outside of the container cleared the selection.
isValidDropTarget has divided its functionality so that dropping onto edges and dropping onto parent groups can be treated separately. mxRectangle has been added for API consistency with the back-ends and so mxUtils.createBounds has been removed now that there is a specific object for rectangles. And the same idea applies to mxPoint and mxUtils.createPoint. The old mxRectangle object that described a shape has been renamed to mxRectangleShape to make the naming more consistent. The mxPath object has been added to describe an arbitrary shape. This abstracts the SVG and VML descriptions of shapes so that you now only need to describe the shape in the mxPath object and the library will draw it correctly on supported browsers.
mxUndoManager and mxUndoableEdit have been moved into the util package. The argument of the add event is an array, instead of a single cell. Previously, there was an add event per cell added and this did not properly reflect multiple cell addition. All events have a new parameter, sender, that specifies where the event was produced, the graph, the model, the view, the overlay or the editor. The mxCell.swimlane property has been removed from the client and all back-ends since it is a view specific property. Previously, the spacing only applied to the left hand side of vertices, now it applies to all sides. STYLE_INDICATOR_SPACING_TOP has been renamed to STYLE_INDICATOR_SPACING. SPACING_LEFT, _RIGHT, _TOP and _BOTTOM have been added to indicate label positioning. STYLE_IMAGE_ALIGN, _VERTICAL_ALIGN were added for aligning labels relative to images in mxLabel. The spacing for the image in mxLabel is now correctly resolved also.
The right alignment of the in-place editor positioning was a number of pixels out, this has been resolved. There were some instances of labels being cropped in VML and HTML when the labels were outside the vertices, this is fixed. The constructor of the mxText object has a number of new arguments for spacing. mxEventSource.dispatchEvent can now have any number of arguments for flexibility. The mxGraph.addCell signature has changed to not have a source and target edge, since adding a cell should not imply connecting it, so a setTerminals call is required if connection is required.
mxGraph.createVertex, createEdge, addVertex, addEdge have all been removed to simplify the API and make it clearer where cells are added. mxGraphModel.addEdge, addVertex are two helper methods that create the mx cell for you also, but cannot be used with custom cells and are not part of the interface. The panning handler now only makes a selection if the graph is enabled. The PHP back-end has been cleaned up and repackaged. A .NET back-end was added with the same structure as the PHP back-end. mxEdgeStyle has been moved into the view package from the layout package. The get prefix on function names in mxPerimeter has been removed and the names in mxEdgeStyle have been capitalized.
STYLE_BORDER has been renamed to STYLE_PERIMETER_SPACING. The mxBasePath and mxLanguage global initialisation parameters have been added so paths and languages can be setup before the client is run. mxClient.imageBasePath now requires a trailing slash. An issue in Firefox 1.5.0.x where if you moved a shape with a label, the label was always one step behind the shape, has been fixed. Firefox 2.0 has resolved this issue, though. Some methods in mxEdgeStyle and mxPerimeter have changed their signature. mxCellRenderer.createDefaultShapes has been added to enable you to define all the possible cell shapes so that new graph instances do not need to be setup with the shapes each time.
When windows are scrolled and icons were dragged from the toolbar the preview appeared in the wrong place because of the scrolling, this is now fixed. mxGraph.setBackgroundImage, mxGraph.getSelectionCount, setSelectionCell(s) and getSelectionCell(s) have been added, performing the expected functions. Double clicking on an insertion tool resets the toolbar selection to the default, this can also be achieved by pre
This release fixes the majority of important outstanding bugs due for the 1.0 release. mxGraph is feature complete for the first stable release with a few outstanding bugs. Assuming no showstoppers are reported the next release will be the 1.0 final. Also of note, a new mxDraw example has been added, which demonstrates a generic drawing application.
Some unification of method and class names was performed, resulting in the following changes:
* mxXMLRequest -> mxXmlRequest
* mxUtils.createXMLDocument -> mxUtils.createXmlDocument
* mxUtils.getInnerHTML -> mxUtils.getInnerHtml
* mxUtils.parseXML -> mxUtils.parseXml
* mxUtils.getXML -> mxUtils.getXml
* mxShape.createSVGGroup -> mxShape.createSvgGroup
* mxShape.createSVGShadow -> mxShape.createSvgShadow
* mxShape.createSVGGradient -> mxShape.createSvgGradient
* mxShape.configureHTMLShape -> mxShape.configureHtmlShape
* mxShape.configureVMLShape -> mxShape.configureVmlShape
* mxShape.configureSVGShape -> mxShape.configureSvgShape
* mxShape.updateHTMLShape -> mxShape.updateHtmlShape
* mxShape.updateVMLShape -> mxShape.updateVmlShape
* mxShape.updateSVGShape -> mxShape.updateSvgShape
mxEdior and mxSession have had added linefeed encoding parameters so that the linefeed used by the back-end may be set. The popup menu had a bug fixed where the popup position was not taking in account whether a window was scrolled. The creation of strings for VML and SVG have been factored out in mxCylinder so it is easier to customize the shape. mxShape.apply now accounts for the state of a shape rather than just the style. Pressing control and clicking in Firefox has the default behaviour in the browser to open images in a new window. mxGraph now overrides this behaviour to prevent it happening.
mxGraphModel has a new method getNearestCommonAncestor which determines the first common ancestor in a tree for two nodes. mxGraph has the helper methods getChildren and getCurrentRoot added. getCurrentRoot obtains the root node of the view (i.e. the root node of the display). Shift-click has been added as a popup menu trigger for Mac browsers and Opera. The gradient rendering of mxCylinder in IE using VML has been fixed.
mxUtils has a new method, htmlEntities, which replaces the greater than, the less than and quotes symbols for you. The event processing of edge labels has been corrected. Previously you had to double click on the edge to edit a label, now the event correctly fires on the actual edge label. You can also grab edges by their labels. mxGraph.selectCells used to select group cells, but now only leaves are returned. The method mxGraph.filterCells has been moved to mxGraphModel.getCells.
The gradient rendering for swimlane titles in IE (using VML) used to just show the colour, not the gradient, this is resolved. mxGraph.getSwimlaneAt now returns the innermost swimlane of the position, rather than the topmost that matched. The mxEditor.connect method has been added to assist with starting a new session. Two URLs are accepted as parameters, one is the initialisation URL and the other is the URL used to maintain communications with the backend for this session. The session object for the session created is then returned.
The default value for mxGraph.isSwimlaneNesting is to now set to true. The methods selectVertices and selectEdges have been added as action types in mxEditor. The line breaks from mxUtils.link, linkInvoke, linkAction were removed to enable the method to be used for more general purposes. Many of the default values in mxEditor have been set to false, this is to ensure you do not get implicit behaviours you are not expecting, without having explicitly enabled them.
The new mxEditor.isMovePropertiesDialog defines whether or not the properties dialog is moved when invoked at another position whilst the dialog is open somewhere else. The methods mxWindow getX and getY have been added to obtain the window position. The perimeter of vertices has been changed to take into account any spacing due to a STYLE_BORDER being set on the vertex. mxClient.langua
This is the latest stable JGraph release, fixing an important bug in the ordering of the model. Sometimes when removing cells or changing the visibility of cells it was possible for the model ordering to be lost. This is fixed, the change will also go into JGraph 5.10 beta 3. A couple of other minor changes were made, there is a flag on DefaultGraphModel providing the option to switch off deletion of empty groups after their children had all been deleted. Also, a link attribute was added to GraphConstants, this is mainly aimed at associating a URL with a cell. There is no specific support for this core library for links currently, this feature is more for the native SVG export functionality in JGraph Layout Pro 1.4.
This release provides a significant improvement in application start-up time through the utilization of compression techniques. A real-time feedback example has been added to demonstrate the principle of updating the display based on back-end state. Double click handling of edges in Internet Explorer is fixed. It improves the event handling architecture and the usability of popup menus, panning and edge connections. A read-only example has been added that demonstrates a non-editable graph but with interactivity such as highlighting and tooltips.
This release adds experimental support for Opera 9.x. A bug has been resolved that caused a stack overflow due to a possible infinite loop. Another bug involving newlines parsing in the XML files has also been fixed. Warnings have been added to the console output and various additions to the API specification and tutorial documentation have been made.
ZURICH, SWITZERLAND - September 27, 2006 -- mxGraph
(http://www.mxgraph.com) is a diagramming library that enables
Web developers to provide a rich user experience in a native
Web browser. From now on, every Web page can explain their
story in pictures and allow the readers to fully interact. Most
importantly, it requires no plug-ins to operate. With XML
configuration, the look and feel of the drawing application
means that the ability to program Javascript is not required to
produce rich customized-looking diagramming applications in a
Web page.
"Our customers have already seen the clear advantages of fast
browser-based drawing without any need to wait for a server on
the network to send updates." said David Benson of JGraph. "In
addition, working with browsers without plug-ins means you know
every user can, in essence, draw on your Web page. Even though
this is a beta release, we've been deluged by pre-orders for
the product. With this much functionality in the beta, and a
packed development schedule over the coming years, I can see
mxGraph fast becoming the de-facto standard for online
diagramming."
Steve Wood of high-tech company Informavores, found mxGraph's
capability to be a perfect fit in his product requirements -
"The ability to edit complex diagrams within a Web browser is
the final solution we need to move our entire application to a
thin client architecture. mxGraph is a critical component for
rich Web applications. There's nothing like it on the market
today."
"We have worked hard to make mxGraph intuitive, yet powerful",
said Gaudenz Alder, lead architect of the mxGraph component,
"I think developers will be pleasantly surprised by how easily
they can produce a powerful Web-based diagramming application
and I hope they will test it out for themselves online at the
Web site."
JGraph Ltd is based in the U.K. and Switzerland and has been
producing diagramming toolkits for developers since 2000.
CONTACT:
David Benson
Business Development Manager
JGraph Ltd
+44 (0)20 7871 2332
http://www.jgraph.com
This release fixes incorrect border widths for heavyweight cells when scaled. It also allows diagram properties to be removed in configureDiagramPane(). Repainting on Mac OS X is fixed to avoid artifacts on the screen and huge memory usage when dragging and resizing cells. The performance of the double buffering mechanism is also improved to speed up redrawing.
This release makes a number of, currently, experimental changes that mean it is not assured to be stable and that Java 1.3 can no longer be used. The double buffering support has been developed so that the buffered image is retained constantly making panning and scroll much faster and reducing the time taken to start a drag or resize in a large graph. The option to request that graphics hardware acceleration is used for the double buffering is available, but switched off by default. Also added is the concept of a buffered overlay image for transparent drawing on the foreground without having to redraw the static buffered graph.
A bug has been fixed where removing the user object did not action correctly. This has been fixed with an additional check in handleAttributes() in DefaultGraphModel. Also added is the getInsertionOffset() hook in GraphTransferHandler to enable positioning of cloned cells without copying the entire importData() method. Finally, a possible NPE in EdgeRenderer.getLabelPosition() has been enclosed in all the necessary null checks.
Double buffering in JGraph previously consisted of off-screen buffers created in the root handles and size handles to buffer drag-and-resize previews on a per-case basis. However, the review buffered the entire graph image, so recreating the buffer on each operation was expensive in CPU terms. The off-screen buffer and off-screen graphics that are the graphics object of the buffer have been moved to the JGraph class. Also, the cachedLabelBounds and cachedExtraLabelBounds variables in EdgeView were never set (since getLabelBounds() and getExtraLabelBounds() were never called) and have been removed.
In addition to supporting an image on the background, a Component may now be drawn as the JGraph background for applications such as mapping. Some performance improvements have been made in the GraphLayoutCache relating to making cells invisible. In the model there have also been performance improvements around the functionality that removes cells.
A number of examples have been added to the free distribution. They comprise a selection of applications demonstrating various features from JGraph, like serialization, database connectivity and high-performance JGraph usage.
The main change for this release is native support for VML in Internet Explorer. This means IE is supported natively without the requirement for the Adobe SVG plugin.
Serialization of the WeakHashMap in the GraphLayoutCache has been resolved by adding custom write and read methods. Scaling the graph now is centered correctly and a new setScale method is available to zoom to a custom point. The edgeLabelMovable switch was added to the JGraph class to allow dragging of edge labels to be optionally disabled. There were a number of other minor bug fixes.
The graph variable in EdgeRenderer has been replaced with a weak reference to ensure that static edge renderers release their reference to the current graph when all other objects do. Also, an example showing the use of a custom cell view factory and an example showing a selection model being synchronized between a graph and a tree were added to the examples package.
The JGraph User Manual is now freely available in its complete form. We hope that community members will suggest and contribute new material in order to provide the complete reference to JGraph in one place.
We have released our first technology preview of MxGraph. Using Javascript to provide the interactivity, MxGraph attempts to get as much graph toolkit functionality as it possibly can in an SVG-enabled browser. Currently only IE 5.5+ with the Adobe 3 SVG plugin and Firefox 1.5+ are supported, but Opera and Sarafi will follow shortly. We're looking for beta testers willing to report issues who have a serious application for the technology. The plan is to make as much of the software as possible free for personal and academic use, in terms of beta dates we're still in the tidy-up process. There's also a brief tutorial available on how to use the demo. The tutorial is posted on the new forum dedicated to MxGraph