X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/599a111c528aa926aafaf5eb46493042efd1a61b..7dc3d4d5e031615e4dd5393fe126daa7248ce184:/modules/documentCanvas/canvasManager.js diff --git a/modules/documentCanvas/canvasManager.js b/modules/documentCanvas/canvasManager.js index edb599c..235c97b 100644 --- a/modules/documentCanvas/canvasManager.js +++ b/modules/documentCanvas/canvasManager.js @@ -28,25 +28,25 @@ var Manager = function(canvas, sandbox) { this.currentNode = null; var manager = this; - canvas.dom.find('#rng-module-documentCanvas-content').on('keyup', function() { + canvas.doc().dom().find('#rng-module-documentCanvas-content').on('keyup', function() { manager.sandbox.publish('contentChanged'); }); - canvas.dom.on('mouseover', '[wlxml-tag]', function(e) { + canvas.doc().dom().on('mouseover', '[wlxml-tag]', function(e) { e.stopPropagation(); manager.sandbox.publish('nodeHovered', canvasNode.create($(e.target))); }); - canvas.dom.on('mouseout', '[wlxml-tag]', function(e) { + canvas.doc().dom().on('mouseout', '[wlxml-tag]', function(e) { e.stopPropagation(); manager.sandbox.publish('nodeBlured', canvasNode.create($(e.target))); }); - canvas.dom.on('click', '[wlxml-tag]', function(e) { + canvas.doc().dom().on('click', '[wlxml-tag]', function(e) { e.stopPropagation(); console.log('clicked node type: '+e.target.nodeType); manager.selectNode(canvasNode.create($(e.target))); }); - canvas.dom.on('keyup', '#rng-module-documentCanvas-contentWrapper', function(e) { + canvas.doc().dom().on('keyup', '#rng-module-documentCanvas-contentWrapper', function(e) { var anchor = $(window.getSelection().anchorNode); if(anchor[0].nodeType === Node.TEXT_NODE) @@ -56,7 +56,7 @@ var Manager = function(canvas, sandbox) { manager.selectNode(canvasNode.create(anchor)); }); - canvas.dom.on('keydown', '#rng-module-documentCanvas-contentWrapper', function(e) { + canvas.doc().dom().on('keydown', '#rng-module-documentCanvas-contentWrapper', function(e) { if(e.which === 13) { manager.onEnterKey(e); } @@ -65,17 +65,17 @@ var Manager = function(canvas, sandbox) { } }); - canvas.dom.onShow = function() { + canvas.doc().dom().onShow = function() { if(!manager.shownAlready) { manager.shownAlready = true; manager.selectFirstNode(); } else if(manager.currentNode) { manager.movecaretToNode(manager.getNodeElement(manager.currentNode)); - canvas.dom.find('#rng-module-documentCanvas-contentWrapper').scrollTop(manager.scrollbarPosition); + canvas.doc().dom().find('#rng-module-documentCanvas-contentWrapper').scrollTop(manager.scrollbarPosition); } }; - canvas.dom.onHide = function() { - manager.scrollbarPosition = canvas.dom.find('#rng-module-documentCanvas-contentWrapper').scrollTop(); + canvas.doc().dom().onHide = function() { + manager.scrollbarPosition = canvas.doc().dom().find('#rng-module-documentCanvas-contentWrapper').scrollTop(); }; }; @@ -85,7 +85,7 @@ Manager.prototype.selectNode = function(cnode, options) { this.dimNode(cnode); - this.canvas.dom.find('.rng-module-documentCanvas-currentNode').removeClass('rng-module-documentCanvas-currentNode'); + this.canvas.doc().dom().find('.rng-module-documentCanvas-currentNode').removeClass('rng-module-documentCanvas-currentNode'); nodeElement.addClass('rng-module-documentCanvas-currentNode'); if(options.movecaret) { @@ -138,7 +138,7 @@ Manager.prototype.insertNewNode = function(wlxmlTag, wlxmlClass) { }; Manager.prototype.getNodeElement = function(cnode) { - return this.canvas.dom.find('#'+cnode.getId()); + return this.canvas.doc().dom().find('#'+cnode.getId()); }; Manager.prototype.highlightNode = function(cnode) { @@ -162,14 +162,14 @@ Manager.prototype.dimNode = function(cnode) { }; Manager.prototype.selectFirstNode = function() { - var firstNodeWithText = this.canvas.dom.find('[wlxml-tag]').filter(function() { + var firstNodeWithText = this.canvas.doc().dom().find('[wlxml-tag]').filter(function() { return $(this).clone().children().remove().end().text().trim() !== ''; }).first(); var node; if(firstNodeWithText.length) node = $(firstNodeWithText[0]); else { - node = this.canvas.dom.find('[wlxml-class|="p"]'); + node = this.canvas.doc().dom().find('[wlxml-class|="p"]'); } this.selectNode(canvasNode.create(node), {movecaret: true}); }; @@ -190,7 +190,7 @@ Manager.prototype.movecaretToNode = function(nodeElement, where) { }; Manager.prototype.toggleGrid = function(toggle) { - this.canvas.dom.find('[wlxml-tag]').toggleClass('rng-common-hoveredNode', toggle); + this.canvas.doc().dom().find('[wlxml-tag]').toggleClass('rng-common-hoveredNode', toggle); this.gridToggled = toggle; }; @@ -228,26 +228,37 @@ Manager.prototype.onBackspaceKey = function(e) { } }; +Manager.prototype.toggleList = function(toggle) { + var selection = window.getSelection(), + node1 = $(selection.anchorNode).parent()[0], + node2 = $(selection.focusNode).parent()[0], + element1 = this.canvas.getDocumentElement(node1), + element2 = this.canvas.getDocumentElement(node2); + if(toggle) { + this.canvas.list.create({element1: element1, element2: element2}); + } else { + if(this.canvas.list.areItemsOfTheSameList({element1: element1, element2: element2})) { + this.canvas.list.extractItems({element1: element1, element2: element2, merge: false}); + } + } +}; + Manager.prototype.command = function(command, meta) { - var pos = getCursorPosition(); - - if(command === 'createList') { - var node = canvasNode.create(pos.parentNode); - if(window.getSelection().getRangeAt(0).collapsed && this.canvas.nodeInsideList({node: node})) { - this.canvas.listRemove({pointer: node}); - this.selectNode(node, {movecaret: 'end'}); - this.sandbox.publish('contentChanged'); + var selection = window.getSelection(), + node1 = $(selection.anchorNode).parent()[0], + node2 = $(selection.focusNode).parent()[0], + element1 = this.canvas.getDocumentElement(node1), + element2 = this.canvas.getDocumentElement(node2); + if(command === 'unwrap-node') { + // this.canvas.nodeUnwrap({node: canvasNode.create(pos.parentNode)}); + // this.sandbox.publish('contentChanged'); + if(this.canvas.list.areItemsOfTheSameList({element1: element1, element2: element2})) { + this.canvas.list.extractItems({element1: element1, element2: element2}); } - else { - //if(!this.canvas.nodeInsideList({node: node})) { - this.canvas.listCreate({start: node, end: canvasNode.create(pos.focusNode), type: meta}); - this.selectNode(node, {movecaret: 'end'}); - this.sandbox.publish('contentChanged'); - //} + } else if(command === 'wrap-node') { + if(this.canvas.list.areItemsOfTheSameList({element1: element1, element2: element2})) { + this.canvas.list.create({element1: element1, element2: element2}); } - } else if(command === 'unwrap-node') { - this.canvas.nodeUnwrap({node: canvasNode.create(pos.parentNode)}); - this.sandbox.publish('contentChanged'); } };