X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/7a3c737d962ff2b2e2653fd8ed0108e92c7fe0d5..22e9258db6c11e6e0b042e142836cdb21399cc7b:/src/editor/modules/documentCanvas/canvas/wlxmlListener.js diff --git a/src/editor/modules/documentCanvas/canvas/wlxmlListener.js b/src/editor/modules/documentCanvas/canvas/wlxmlListener.js index 9269ce1..cbf8d08 100644 --- a/src/editor/modules/documentCanvas/canvas/wlxmlListener.js +++ b/src/editor/modules/documentCanvas/canvas/wlxmlListener.js @@ -29,6 +29,12 @@ $.extend(Listener.prototype, { } }); + +var _metadataEventHandler = function(event) { + var canvasNode = utils.findCanvasElement(event.meta.node); + canvasNode.exec('updateMetadata'); +}; + var handlers = { nodeAttrChange: function(event) { if(event.meta.attr === 'class') { @@ -39,11 +45,16 @@ var handlers = { nodeTagChange: function(event) { var canvasNode = utils.findCanvasElement(event.meta.node); canvasNode.setWlxmlTag(event.meta.newTagName); + canvasNode.wlxmlNode = event.meta.node; }, - nodeAdded: function(event) { + nodeAdded: function(event, checkForExistence) { + if(event.meta.node.isRoot()) { + this.canvas.reloadRoot(); + return; + } var parentElement = utils.findCanvasElement(event.meta.node.parent()), nodeIndex = event.meta.node.getIndex(), - referenceElement, referenceAction; + referenceElement, referenceAction, actionArg; if(nodeIndex === 0) { referenceElement = parentElement; @@ -53,23 +64,31 @@ var handlers = { referenceAction = 'after'; } - referenceElement[referenceAction](event.meta.node); + actionArg = (checkForExistence && utils.findCanvasElement(event.meta.node, event.meta.parent)) || event.meta.node; + referenceElement[referenceAction](actionArg); }, nodeMoved: function(event) { - return handlers.nodeAdded(event); + return handlers.nodeAdded.call(this, event, true); }, nodeDetached: function(event) { var canvasNode = utils.findCanvasElementInParent(event.meta.node, event.meta.parent); canvasNode.detach(); }, nodeTextChange: function(event) { + //console.log('wlxmlListener: ' + event.meta.node.getText()); var canvasElement = utils.findCanvasElement(event.meta.node), toSet = event.meta.node.getText(); if(toSet === '') { toSet = utils.unicode.ZWS; } - canvasElement.setText(toSet); - } + if(toSet !== canvasElement.getText()) { + canvasElement.setText(toSet); + } + }, + + metadataChanged: _metadataEventHandler, + metadataAdded: _metadataEventHandler, + metadataRemoved: _metadataEventHandler }; return {