canvas manager wip - setting cursor at the beginning of a new node
[fnpeditor.git] / modules / documentCanvas / canvasManager.js
index fcf2659..886ce07 100644 (file)
@@ -44,7 +44,7 @@ var Manager = function(canvas, sandbox) {
     canvas.dom.on('keydown', '#rng-module-documentCanvas-contentWrapper', function(e) {\r
         if(e.which === 13) { \r
             e.preventDefault();\r
-            //view.insertNewNode(null, null);\r
+            manager.insertNewNode(null, null);\r
         }\r
         if(e.which === 8) {\r
             var anchor = window.getSelection().anchorNode;\r
@@ -72,20 +72,20 @@ var Manager = function(canvas, sandbox) {
 };\r
     \r
 Manager.prototype.selectNode = function(wlxmlNode, options) {\r
-        options = options || {};\r
-        var nodeElement = this.getNodeElement(wlxmlNode)\r
-        \r
-        this.dimNode(wlxmlNode);\r
-        \r
-        this.canvas.dom.find('.rng-module-documentCanvas-currentNode').removeClass('rng-module-documentCanvas-currentNode');\r
-        nodeElement.addClass('rng-module-documentCanvas-currentNode');\r
-         \r
-        if(options.movecaret) {\r
-            this.movecaretToNode(nodeElement);\r
-        }\r
-        \r
-        this.currentNode = wlxmlNode;\r
-        this.sandbox.publish('nodeSelected', wlxmlNode);\r
+    options = options || {};\r
+    var nodeElement = this.getNodeElement(wlxmlNode)\r
+    \r
+    this.dimNode(wlxmlNode);\r
+    \r
+    this.canvas.dom.find('.rng-module-documentCanvas-currentNode').removeClass('rng-module-documentCanvas-currentNode');\r
+    nodeElement.addClass('rng-module-documentCanvas-currentNode');\r
+    \r
+    if(options.movecaret) {\r
+        this.movecaretToNode(nodeElement);\r
+    }\r
+    \r
+    this.currentNode = wlxmlNode;\r
+    this.sandbox.publish('nodeSelected', wlxmlNode);\r
 };\r
 \r
 Manager.prototype.getNodeElement = function(wlxmlNode) {\r
@@ -128,7 +128,7 @@ Manager.prototype.selectFirstNode = function() {
 Manager.prototype.movecaretToNode = function(nodeElement) {\r
     var range = document.createRange();\r
     range.selectNodeContents(nodeElement[0]);\r
-    range.collapse(false);\r
+    range.collapse(true);\r
     var selection = document.getSelection();\r
     selection.removeAllRanges()\r
     selection.addRange(range);\r
@@ -139,6 +139,24 @@ Manager.prototype.toggleGrid =  function(toggle) {
     this.gridToggled = toggle;\r
 };\r
 \r
+Manager.prototype.insertNewNode = function(wlxmlTag, wlxmlClass) {\r
+    //TODO: Insert inline\r
+    var anchor = $(window.getSelection().anchorNode);\r
+    var anchorOffset = window.getSelection().anchorOffset;\r
+    \r
+    var parent = anchor.parent();\r
+    var idx = parent.contents().index(anchor);\r
+    \r
+    if(anchorOffset < anchor.text().length) {\r
+        var newNode = this.canvas.splitNode({node: {id: parent.attr('id')}, textNodeIdx: idx, offset: anchorOffset});\r
+        this.selectNode(new wlxmlNode.Node(newNode), {movecaret: true});\r
+    }\r
+\r
+    \r
+    \r
+    this.sandbox.publish('contentChanged');\r
+};\r
+\r
 return Manager;\r
     \r
 });
\ No newline at end of file