}
}, this);
+ wlxmlDocument.on('operationEnd', function() {
+ this.canvas.triggerSelectionChanged();
+ }, this);
+
wlxmlDocument.on('contentSet', function() {
this.canvas.loadWlxmlDocument(wlxmlDocument);
}, this);
}
});
+
+var _metadataEventHandler = function(event) {
+ var element = utils.getElementForNode(event.meta.node);
+ element.handle(event);
+};
+
+
var handlers = {
nodeAttrChange: function(event) {
+ var element = utils.getElementForNode(event.meta.node),
+ newElement;
if(event.meta.attr === 'class') {
- var canvasNode = utils.findCanvasElement(event.meta.node);
- canvasNode.setWlxmlClass(event.meta.newVal);
+ if(element.wlxmlNode.getClass() !== event.meta.attr) {
+ if(event.meta.node.isRoot()) {
+ this.canvas.reloadRoot();
+ } else {
+ newElement = element.parent().createElement(event.meta.node);
+ element.dom.replaceWith(newElement.dom);
+ }
+ }
+
+ } else {
+ element.handle(event);
}
},
- nodeTagChange: function(event) {
- var canvasNode = utils.findCanvasElement(event.meta.node);
- canvasNode.setWlxmlTag(event.meta.newTagName);
- canvasNode.data('wlxmlNode', event.meta.node);
- },
- 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.node;
- referenceElement[referenceAction](actionArg);
- },
- nodeMoved: function(event) {
- return handlers.nodeAdded(event, true);
+ containingElement.handle(event);
},
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);
+ element.handle(event);
+ },
+
+ metadataChanged: _metadataEventHandler,
+ metadataAdded: _metadataEventHandler,
+ metadataRemoved: _metadataEventHandler
};
return {