integration wip: setting/handling contentSet event (source/canvas)
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / wlxmlListener.js
1 define([
2 'libs/jquery',
3 'modules/documentCanvas/canvas/utils',
4 ], function($, utils) {
5     
6 'use strict';
7
8 var Listener = function(canvas) {
9     this.canvas = canvas;
10 };
11
12 $.extend(Listener.prototype, {
13     listenTo: function(wlxmlDocument) {
14         if(wlxmlDocument === this.wlxmlDocument) {
15             return;
16         }
17
18         wlxmlDocument.on('change', function(event) {
19             var handler = handlers[event.type];
20             if(handler) {
21                 handler.bind(this)(event);
22             }
23         }, this);
24
25         wlxmlDocument.on('contentSet', function() {
26             this.canvas.loadWlxmlDocument(wlxmlDocument);
27         }, this);
28     }
29 });
30
31 var handlers = {
32     nodeAttrChange: function(event) {
33         if(event.meta.attr === 'class') {
34             var canvasNode = utils.findCanvasElement(event.meta.node);
35             canvasNode.setWlxmlClass(event.meta.newVal);
36         }
37     },
38     nodeTagChange: function(event) {
39         var canvasNode = utils.findCanvasElement(event.meta.node);
40         canvasNode.setWlxmlTag(event.meta.newTagName);
41     }
42 };
43
44 return {
45     create: function(canvas) {
46         return new Listener(canvas);
47     }
48 };
49
50 });