smartxml: Automatically rollback transaction on error thrown
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / wlxmlManagers.js
index c643a88..a35c079 100644 (file)
@@ -11,7 +11,7 @@ var DocumentElementWrapper = function(documentElement) {
     this.documentElement = documentElement;
 
     this.addWidget = function(widget) {
-        documentElement.dom().children('.canvas-widgets').append(widget);
+        documentElement.dom().children('.canvas-widgets').append(widget.DOM ? widget.DOM : widget);
     };
 
     this.clearWidgets = function() {
@@ -41,6 +41,8 @@ var DocumentElementWrapper = function(documentElement) {
         eventBus.trigger.apply(eventBus, arguments);
     };
 
+    this.node = documentElement.data('wlxmlNode');
+
 };
 
 var getDisplayStyle = function(tag, klass) {
@@ -50,9 +52,12 @@ var getDisplayStyle = function(tag, klass) {
     if(tag === 'span') {
         return 'inline';
     }
-    if(klass === 'item') {
+    if(klass && klass.substr(0, 4) === 'item') {
         return null;
     }
+    if(klass === 'gap') {
+        return 'inline';
+    }
     return 'block';
 };
 
@@ -142,6 +147,31 @@ $.extend(ListItemManager.prototype, {
 });
 managers.set('div', 'item', ListItemManager);
 
+
+var CommentManager = function(wlxmlElement) {
+    this.el = wlxmlElement;
+};
+
+$.extend(CommentManager.prototype, {
+    setup: function() {
+        this.el.clearWidgets();
+        this.el.addWidget(widgets.labelWidget(this.el.tag(), this.el.klass()));
+
+        this.widget = widgets.commentAdnotation(this.el.node);
+        this.el.addWidget(this.widget);
+        this.widget.DOM.show();
+    },
+    updateMetadata: function() {
+        // var parts = [];
+        // this.el.node.getMetadata().forEach(function(row) {
+        //     parts.push(row.getValue());
+        // }, 'creator');
+        // this.widget.text(parts.join(', '));
+        this.widget.update(this.el.node);
+    }
+});
+managers.set('aside', 'comment', CommentManager);
+
 return {
     getFor: function(documentElement) {
         var wlxmlElement = new DocumentElementWrapper(documentElement);