X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/fc54b1e72b7ed4992bbc4a2ef3ae7f02393d174d..0bea7025f60aa5cc2ed89eed72da0d616f3574ef:/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 7d19e94..faee6c8 100644 --- a/src/editor/modules/documentCanvas/canvas/wlxmlListener.js +++ b/src/editor/modules/documentCanvas/canvas/wlxmlListener.js @@ -35,54 +35,45 @@ $.extend(Listener.prototype, { var _metadataEventHandler = function(event) { - var canvasNode = utils.findCanvasElement(event.meta.node); - canvasNode.exec('updateMetadata'); + var element = utils.getElementForNode(event.meta.node); + element.handle(event); }; + var handlers = { nodeAttrChange: function(event) { + var element = utils.getElementForNode(event.meta.node), + objectChanged; if(event.meta.attr === 'class') { - var canvasNode = utils.findCanvasElement(event.meta.node); - canvasNode.setWlxmlClass(event.meta.newVal); + objectChanged = element.updateObject(); + } + + if(!objectChanged) { + element.handle(event); } }, - nodeAdded: function(event, checkForExistence) { + nodeAdded: function(event) { if(event.meta.node.isRoot()) { this.canvas.reloadRoot(); return; } - var parentElement = utils.findCanvasElement(event.meta.node.parent()), - nodeIndex = event.meta.node.getIndex(), - referenceElement, referenceAction, actionArg; - if(nodeIndex === 0) { - referenceElement = parentElement; - referenceAction = 'prepend'; - } else { - referenceElement = parentElement.children()[nodeIndex-1]; - referenceAction = 'after'; - } + var containingNode = event.meta.node.parent(), + containingElement = utils.getElementForNode(containingNode); - actionArg = (checkForExistence && utils.findCanvasElement(event.meta.node, event.meta.parent)) || event.meta.node; - referenceElement[referenceAction](actionArg); + containingElement.handle(event); }, nodeMoved: function(event) { - return handlers.nodeAdded.call(this, event, true); + return handlers.nodeAdded.call(this, event, true); // + // }, nodeDetached: function(event) { - var canvasNode = utils.findCanvasElementInParent(event.meta.node, event.meta.parent); - canvasNode.detach(); + var element = utils.getElementForDetachedNode(event.meta.node, event.meta.parent); + element.handle(event); }, 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; - } - if(toSet !== canvasElement.getText()) { - canvasElement.setText(toSet); - } + var element = utils.getElementForNode(event.meta.node.parent()); + element.handle(event); }, metadataChanged: _metadataEventHandler,