list fixes: headers, invalid elements, easier ending
[fnpeditor.git] / src / editor / modules / documentCanvas / documentCanvas.js
index 3e6a209..a440bb9 100644 (file)
@@ -3,14 +3,26 @@
 define([
 'libs/jquery',
 'libs/underscore',
 define([
 'libs/jquery',
 'libs/underscore',
+'fnpjs/logging/logging',
 './canvas/canvas',
 './canvas/canvas',
-'libs/text!./template.html'], function($, _, canvas3, template) {
+'libs/text!./template.html'], function($, _, logging, canvas3, template) {
 
 'use strict';
 
 
 'use strict';
 
+
+var logger = logging.getLogger('documentCanvas');
+
 return function(sandbox) {
 
 return function(sandbox) {
 
-    var canvas = canvas3.fromXMLDocument(null);
+    var canvasElements = [];
+
+    sandbox.getPlugins().forEach(function(plugin) {
+        canvasElements = canvasElements.concat(plugin.canvasElements || []);
+    });
+
+    var canvas = canvas3.fromXMLDocument(null, canvasElements, {
+        user: sandbox.getConfig().user
+    }, sandbox);
     var canvasWrapper = $(template);
     var shownAlready = false;
     var scrollbarPosition = 0,
     var canvasWrapper = $(template);
     var shownAlready = false;
     var scrollbarPosition = 0,
@@ -60,18 +72,16 @@ return function(sandbox) {
         },
         setDocument: function(wlxmlDocument) {
             canvas.loadWlxmlDocument(wlxmlDocument);
         },
         setDocument: function(wlxmlDocument) {
             canvas.loadWlxmlDocument(wlxmlDocument);
-            canvasWrapper.find('#rng-module-documentCanvas-content').empty().append(canvas.view());
-        },
-        highlightElement: function(node) {
-            canvas.toggleElementHighlight(node, true);
-        },
-        dimElement: function(node) {
-            canvas.toggleElementHighlight(node, false);
-        },
-        jumpToElement: function(node) {
-            canvas.setCurrentElement(node);
+            canvasWrapper.find('#rng-module-documentCanvas-contentWrapper').empty().append(canvas.view());
         },
         onAfterActionExecuted: function(action, ret) {
         },
         onAfterActionExecuted: function(action, ret) {
+            if(ret && ret.isValid && ret.isValid()) {
+                logger.debug('The action returned a valid fragment');
+                return canvas.select(ret);
+            }
+
+            logger.debug('No valid fragment returned from the action');
+
             (actionHandlers[action.getPluginName()] || []).forEach(function(handler) {
                 handler(canvas, action, ret);
             });
             (actionHandlers[action.getPluginName()] || []).forEach(function(handler) {
                 handler(canvas, action, ret);
             });