3 'modules/documentCanvas/canvas/utils',
4 ], function($, utils) {
8 var Listener = function(canvas) {
12 $.extend(Listener.prototype, {
13 listenTo: function(wlxmlDocument) {
14 if(wlxmlDocument === this.wlxmlDocument) {
17 this.wlxmlDocument = wlxmlDocument;
19 wlxmlDocument.on('change', function(event) {
20 var handler = handlers[event.type];
22 handler.bind(this)(event);
26 wlxmlDocument.on('operationEnd', function() {
27 this.canvas.triggerSelectionChanged();
30 wlxmlDocument.on('contentSet', function() {
31 this.canvas.loadWlxmlDocument(wlxmlDocument);
37 var _metadataEventHandler = function(event) {
38 var element = utils.getElementForNode(event.meta.node);
39 element.handle(event);
44 nodeAttrChange: function(event) {
45 var element = utils.getElementForNode(event.meta.node),
47 if(event.meta.attr === 'class') {
48 objectChanged = element.updateObject();
52 element.handle(event);
55 nodeAdded: function(event) {
56 if(event.meta.node.isRoot()) {
57 this.canvas.reloadRoot();
61 var containingNode = event.meta.node.parent(),
62 containingElement = utils.getElementForNode(containingNode);
64 containingElement.handle(event);
66 nodeMoved: function(event) {
67 return handlers.nodeAdded.call(this, event, true); //
70 nodeDetached: function(event) {
71 var element = utils.getElementForDetachedNode(event.meta.node, event.meta.parent);
72 element.handle(event);
74 nodeTextChange: function(event) {
75 var element = utils.getElementForNode(event.meta.node.parent());
76 element.handle(event);
79 metadataChanged: _metadataEventHandler,
80 metadataAdded: _metadataEventHandler,
81 metadataRemoved: _metadataEventHandler
85 create: function(canvas) {
86 return new Listener(canvas);