editor: Better invalid cursor handling
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / wlxmlManagers.js
index 27b4605..6b8b5ff 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,7 @@ var DocumentElementWrapper = function(documentElement) {
         eventBus.trigger.apply(eventBus, arguments);
     };
 
+    this.node = documentElement.wlxmlNode;
 };
 
 var getDisplayStyle = function(tag, klass) {
@@ -53,6 +54,9 @@ var getDisplayStyle = function(tag, klass) {
     if(klass && klass.substr(0, 4) === 'item') {
         return null;
     }
+    if(klass === 'gap') {
+        return 'inline';
+    }
     return 'block';
 };
 
@@ -65,8 +69,6 @@ $.extend(GenericManager.prototype, {
         this.el.setDisplayStyle(getDisplayStyle(this.el.tag(), this.el.klass()));
 
         this.el.clearWidgets();
-        this.el.addWidget(widgets.labelWidget(this.el.tag(), this.el.klass()));
-
     },
     toggle: function(toggle) {
         this.el.toggle(toggle);
@@ -133,8 +135,6 @@ var ListItemManager = function(wlxmlElement) {
 $.extend(ListItemManager.prototype, {
     setup: function() {
         this.el.clearWidgets();
-        this.el.addWidget(widgets.labelWidget(this.el.tag(), this.el.klass()));
-        this.el.documentElement._container().css({display: 'list-item'});
     },
     toggleBullet: function(toggle) {
         this.el.documentElement._container().css({display : toggle ? 'list-item' : 'block'});
@@ -142,6 +142,30 @@ $.extend(ListItemManager.prototype, {
 });
 managers.set('div', 'item', ListItemManager);
 
+
+var CommentManager = function(wlxmlElement) {
+    this.el = wlxmlElement;
+};
+
+$.extend(CommentManager.prototype, {
+    setup: function() {
+        this.el.clearWidgets();
+
+        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);