editor: actions implementation
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / wlxmlListener.js
index ae1cee1..7d19e94 100644 (file)
@@ -23,12 +23,22 @@ $.extend(Listener.prototype, {
             }
         }, this);
 
+        wlxmlDocument.on('operationEnd', function() {
+            this.canvas.triggerSelectionChanged();
+        }, this);
+
         wlxmlDocument.on('contentSet', function() {
             this.canvas.loadWlxmlDocument(wlxmlDocument);
         }, this);
     }
 });
 
+
+var _metadataEventHandler = function(event) {
+    var canvasNode = utils.findCanvasElement(event.meta.node);
+    canvasNode.exec('updateMetadata');
+};
+
 var handlers = {
     nodeAttrChange: function(event) {
         if(event.meta.attr === 'class') {
@@ -36,11 +46,6 @@ var handlers = {
             canvasNode.setWlxmlClass(event.meta.newVal);
         }
     },
-    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) {
         if(event.meta.node.isRoot()) {
             this.canvas.reloadRoot();
@@ -58,11 +63,11 @@ var handlers = {
             referenceAction = 'after';
         }
 
-        actionArg = (checkForExistence && utils.findCanvasElement(event.meta.node)) || 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, true);
+        return handlers.nodeAdded.call(this, event, true);
     },
     nodeDetached: function(event) {
         var canvasNode = utils.findCanvasElementInParent(event.meta.node, event.meta.parent);
@@ -78,7 +83,11 @@ var handlers = {
         if(toSet !== canvasElement.getText()) {
             canvasElement.setText(toSet);
         }
-    }
+    },
+
+    metadataChanged: _metadataEventHandler,
+    metadataAdded: _metadataEventHandler,
+    metadataRemoved: _metadataEventHandler
 };
 
 return {