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