Adding/removing lists - first approach
[fnpeditor.git] / modules / documentCanvas / canvasManager.js
index 6a0fc5c..3ced49a 100644 (file)
@@ -14,6 +14,7 @@ var getCursorPosition = function() {
         textNodeOffset: selection.anchorOffset,\r
         textNodeIndex: parent.contents().index(anchorNode),\r
         parentNode: parent,\r
+        focusNode: $(selection.focusNode).parent(),\r
         isAtEnd: selection.anchorOffset === anchorNode.text().length\r
     }\r
 };\r
@@ -181,6 +182,26 @@ Manager.prototype.onBackspaceKey = function(e) {
     }\r
 }\r
 \r
+Manager.prototype.command = function(command, meta) {\r
+    var pos = getCursorPosition();\r
+    \r
+    if(command === 'createList') {\r
+        var node = new wlxmlNode.Node(pos.parentNode);\r
+        if(window.getSelection().getRangeAt().collapsed && this.canvas.insideList({pointer: node})) {\r
+            this.canvas.removeList({pointer: node});\r
+            this.selectNode(node, {movecaret: 'end'});\r
+            this.sandbox.publish('contentChanged');\r
+        }\r
+        else {\r
+            if(!this.canvas.insideList({pointer: node})) {\r
+                this.canvas.createList({start: new wlxmlNode.Node(pos.parentNode), end: new wlxmlNode.Node(pos.focusNode)});\r
+                this.selectNode(new wlxmlNode.Node(pos.parentNode), {movecaret: 'end'});\r
+                this.sandbox.publish('contentChanged');\r
+            }\r
+        }\r
+    }\r
+\r
+}\r
 \r
 \r
 return Manager;\r