Switching to explicit inheritance for canvas elements
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / genericElement.js
index 7d5d986..d11cbd1 100644 (file)
@@ -2,7 +2,8 @@ define(function(require) {
     
 'use strict';
 
-var documentElement = require('./documentElement'),
+var $ = require('libs/jquery'),
+    documentElement = require('./documentElement'),
     utils = require('./utils'),
     wlxmlUtils = require('utils/wlxml');
 
@@ -13,8 +14,11 @@ var labelWidget = function(tag, klass) {
 };
 void(labelWidget); // for linters; labelWidget is unused on purpose for now
 
+var DocumentNodeElement = documentElement.DocumentNodeElement;
 
-var generic = {
+var generic = Object.create(DocumentNodeElement.prototype);
+
+$.extend(generic, {
     onNodeAttrChange: function(event) {
         if(event.meta.attr === 'class') {
             this.setWlxmlClass(event.meta.newVal); //
@@ -77,7 +81,7 @@ var generic = {
         } else {
             element = this.canvas.createElement(param);
         }
-        this._container().prepend(element.dom());
+        this._container().prepend(element.dom);
         this.refreshPath();
         return element;
     },
@@ -137,12 +141,26 @@ var generic = {
         this.refreshPath();
     },
     init: function() {
+        DocumentNodeElement.prototype.init.call(this);
         this._container()
             .attr('wlxml-tag', this.wlxmlNode.getTagName());
         this.setWlxmlClass(this.wlxmlNode.getClass());
         this.wlxmlNode.contents().forEach(function(node) {
-            this._container().append(this.canvas.createElement(node).dom());
+            this._container().append(this.canvas.createElement(node).dom);
         }.bind(this));
+        this.refresh();
+
+    },
+    refresh: function() {
+        if(this.wlxmlNode.getTagName() === 'span') {
+            if(this.containsBlock()) {
+                this.displayAsBlock();
+            } else {
+                this.displayInline();
+            }
+        } else {
+            this.displayAsBlock();
+        }
     },
     containsBlock: function() {
         return this.children()
@@ -172,7 +190,7 @@ var generic = {
         });
         return toret;
     },
-};
+});
 
 
 return generic;