integration wip: nodePane, familyTree, breadcrumbs
[fnpeditor.git] / modules / documentCanvas / documentCanvas.js
1 // Module that implements main WYSIWIG edit area
2
3 define([
4 'libs/underscore-min',
5 './transformations', 
6 './canvas',
7 './canvasManager',
8 './canvas/canvas',
9 'libs/text!./template.html'], function(_, transformations, Canvas, CanvasManager, canvas3, template) {
10
11 'use strict';
12
13 return function(sandbox) {
14
15     var canvas = canvas3.fromXML('', sandbox.publish); //canvasCanvas.create();
16     var manager;
17     var canvasWrapper = $(template);
18
19     /* public api */
20     return {
21         start: function() { sandbox.publish('ready'); },
22         getView: function() { 
23             return canvasWrapper;
24         },
25         setDocument: function(xml) {
26             canvas.loadWlxml(xml); //canvas.setHTML(transformations.fromXML.getHTMLTree(xml));
27             canvasWrapper.find('#rng-module-documentCanvas-content').empty().append(canvas.view());
28             manager = new CanvasManager(canvas, sandbox);
29             sandbox.publish('documentSet');
30         },
31         getDocument: function() {
32             return transformations.toXML.getXML(canvas.getContent());
33         },
34         modifyCurrentNodeElement: function(attr, value) {
35             if(attr === 'class' || attr === 'tag') {
36                 canvas.getCurrentNodeElement()['setWlxml'+(attr[0].toUpperCase() + attr.substring(1))](value);    
37             }
38         },
39         highlightElement: function(element) {
40             canvas.highlightElement(element);
41         },
42         dimElement: function(element) {
43             canvas.dimElement(element);
44         },
45         jumpToElement: function(element) {
46             canvas.setCurrentElement(element);
47         },
48         command: function(command, params) {
49             manager.command(command, params);
50         }
51     };
52     
53 };
54
55 });