| /** |
| * Copyright (c) 2006-2015, JGraph Ltd |
| * Copyright (c) 2006-2015, Gaudenz Alder |
| */ |
| mxCodecRegistry.register(function() |
| { |
| /** |
| * Class: mxRootChangeCodec |
| * |
| * Codec for <mxRootChange>s. This class is created and registered |
| * dynamically at load time and used implicitely via <mxCodec> and |
| * the <mxCodecRegistry>. |
| * |
| * Transient Fields: |
| * |
| * - model |
| * - previous |
| * - root |
| */ |
| var codec = new mxObjectCodec(new mxRootChange(), |
| ['model', 'previous', 'root']); |
| |
| /** |
| * Function: onEncode |
| * |
| * Encodes the child recursively. |
| */ |
| codec.afterEncode = function(enc, obj, node) |
| { |
| enc.encodeCell(obj.root, node); |
| |
| return node; |
| }; |
| |
| /** |
| * Function: beforeDecode |
| * |
| * Decodes the optional children as cells |
| * using the respective decoder. |
| */ |
| codec.beforeDecode = function(dec, node, obj) |
| { |
| if (node.firstChild != null && |
| node.firstChild.nodeType == mxConstants.NODETYPE_ELEMENT) |
| { |
| // Makes sure the original node isn't modified |
| node = node.cloneNode(true); |
| |
| var tmp = node.firstChild; |
| obj.root = dec.decodeCell(tmp, false); |
| |
| var tmp2 = tmp.nextSibling; |
| tmp.parentNode.removeChild(tmp); |
| tmp = tmp2; |
| |
| while (tmp != null) |
| { |
| tmp2 = tmp.nextSibling; |
| dec.decodeCell(tmp); |
| tmp.parentNode.removeChild(tmp); |
| tmp = tmp2; |
| } |
| } |
| |
| return node; |
| }; |
| |
| /** |
| * Function: afterDecode |
| * |
| * Restores the state by assigning the previous value. |
| */ |
| codec.afterDecode = function(dec, node, obj) |
| { |
| obj.previous = obj.root; |
| |
| return obj; |
| }; |
| |
| // Returns the codec into the registry |
| return codec; |
| |
| }()); |