diff --git a/mindplot/src/main/javascript/BrixActionDispatcher.js b/mindplot/src/main/javascript/BrixActionDispatcher.js index 54b1477a..b6ea01a4 100644 --- a/mindplot/src/main/javascript/BrixActionDispatcher.js +++ b/mindplot/src/main/javascript/BrixActionDispatcher.js @@ -64,13 +64,12 @@ mindplot.BrixActionDispatcher = new Class({ addTopic : function(nodeModel, parentTopicId, animated) { var framework = this._getFramework(); var cmindmap = framework.getModel(); - var centralTopic = cmindmap.getCentralTopic(); + var cparent = $defined(parentTopicId) ? framework.getTopic(parentTopicId) : cmindmap.getCentralTopic(); var cnode = cmindmap.createNode(nodeModel.getType(), nodeModel.getId()); - var position = nodeModel.getPosition(); - cnode.setPosition(position.x, position.y); + nodeModel.copyTo(cnode); - cnode.connectTo(centralTopic); + cnode.connectTo(cparent); }, changeFontSizeToTopic : function(topicsIds, size) { @@ -145,11 +144,10 @@ mindplot.BrixActionDispatcher = new Class({ var framework = this._getFramework(); var mindmap = framework.getModel(); - var topicId = topicsIds[0]; - var topic = framework.getTopic(topicId); - $assert(topic, "Could not find topic with id:" + topicId); - topic.deleteNode(); - + topicsIds.forEach(function(topicId) { + var topic = framework.getTopic(topicId); + topic.deleteNode(); + }); } }); diff --git a/mindplot/src/main/javascript/MainTopic.js b/mindplot/src/main/javascript/MainTopic.js index 1862a3eb..78798456 100644 --- a/mindplot/src/main/javascript/MainTopic.js +++ b/mindplot/src/main/javascript/MainTopic.js @@ -25,25 +25,25 @@ mindplot.MainTopic = new Class({ INNER_RECT_ATTRIBUTES : {stroke:'0.5 solid #009900'}, createSiblingModel : function(positionate) { - var siblingModel = null; + var result = null; var parentTopic = this.getOutgoingConnectedTopic(); if (parentTopic != null) { // Create a new node ... var model = this.getModel(); var mindmap = model.getMindmap(); - siblingModel = mindmap.createNode(mindplot.model.INodeModel.MAIN_TOPIC_TYPE); + result = mindmap.createNode(mindplot.model.INodeModel.MAIN_TOPIC_TYPE); - // Positionate following taking into account the sibling positon. + // Positionate following taking into account the sibling position. if (positionate && parentTopic.getType() == mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) { var pos = this.getPosition(); - siblingModel.setPosition(pos.x, pos.y); + result.setPosition(pos.x, pos.y); } // Create a new node ... var order = this.getOrder() + 1; - siblingModel.setOrder(order); + result.setOrder(order); } - return siblingModel; + return result; }, createChildModel : function(prepositionate) { diff --git a/mindplot/src/main/javascript/collaboration/framework/brix/model/NodeModel.js b/mindplot/src/main/javascript/collaboration/framework/brix/model/NodeModel.js index 2c9085a1..bac6c41e 100644 --- a/mindplot/src/main/javascript/collaboration/framework/brix/model/NodeModel.js +++ b/mindplot/src/main/javascript/collaboration/framework/brix/model/NodeModel.js @@ -23,7 +23,6 @@ mindplot.collaboration.framework.brix.model.NodeModel = new Class({ $assert(brixModel, "brixModel can not null"); $assert(mindmap && mindmap.getBranches, "mindmap can not null"); - this.parent(mindmap); this._brixModel = brixModel; this._brixFramework = brixFramework; @@ -51,15 +50,24 @@ mindplot.collaboration.framework.brix.model.NodeModel = new Class({ var children = this._brixModel.get("children"); children.addListener("valuesAdded", function(event) { - var brixNodeModel = event.getValues().get(0); + try { - var cmodel = new mindplot.collaboration.framework.brix.model.NodeModel(this._brixFramework, brixNodeModel, this.getMindmap()); + var brixChildren = event.getValues(); + for (var i = 0; i < brixChildren.size(); i++) { + var brixNodeModel = brixChildren.get(0); - // @Todo: This is not ok... - var model = new mindplot.model.NodeModel(cmodel.getType(), designer.getMindmap(), this.getId()); - cmodel.copyTo(model); + var cmodel = new mindplot.collaboration.framework.brix.model.NodeModel(this._brixFramework, brixNodeModel, this.getMindmap()); + + // @Todo: This is not ok. Is using designer global variable. + var model = new mindplot.model.NodeModel(cmodel.getType(), designer.getMindmap(), this.getId()); + cmodel.copyTo(model); + + actionDispatcher.addTopic(model, this.getId(), true); + } + } catch(e) { + console.trace(); + } - actionDispatcher.addTopic(model, this.getId(), true); }.bind(this)); children.addListener("valuesRemoved", function(event) { @@ -72,7 +80,6 @@ mindplot.collaboration.framework.brix.model.NodeModel = new Class({ } } catch(e) { console.trace(); - console.log(e); } }.bind(this)); @@ -108,7 +115,12 @@ mindplot.collaboration.framework.brix.model.NodeModel = new Class({ }, getPropertiesKeys : function() { - return this._brixModel.getKeys().erase('children'); + var keys = this._brixModel.getKeys(); + keys.erase('children'); + keys.erase('icons'); + keys.erase('links'); + keys.erase('notes'); + return keys; }, getParent : function() { diff --git a/mindplot/src/main/javascript/model/INodeModel.js b/mindplot/src/main/javascript/model/INodeModel.js index 21fb51bb..591017dd 100644 --- a/mindplot/src/main/javascript/model/INodeModel.js +++ b/mindplot/src/main/javascript/model/INodeModel.js @@ -225,7 +225,7 @@ mindplot.model.INodeModel = new Class({ deleteNode : function() { var mindmap = this.getMindmap(); - console.log(mindmap.inspect()); + console.log("Before:" + mindmap.inspect()); var parent = this.getParent(); if ($defined(parent)) { parent.removeChild(this); @@ -234,7 +234,7 @@ mindplot.model.INodeModel = new Class({ mindmap.removeBranch(this); } // It's an isolated node. It must be a hole branch ... - console.log(mindmap.inspect()); + console.log("After:" + mindmap.inspect()); }, getPropertiesKeys : function() { diff --git a/mindplot/src/main/javascript/model/NodeModel.js b/mindplot/src/main/javascript/model/NodeModel.js index eb14c0c9..06dedec8 100644 --- a/mindplot/src/main/javascript/model/NodeModel.js +++ b/mindplot/src/main/javascript/model/NodeModel.js @@ -35,6 +35,10 @@ mindplot.model.NodeModel = new Class({ this._notes = []; }, + getPropertiesKeys : function() { + return Object.keys(this._properties); + }, + putProperty : function(key, value) { $defined(key, 'key can not be null'); this._properties[key] = value; diff --git a/mindplot/src/main/javascript/widget/Menu.js b/mindplot/src/main/javascript/widget/Menu.js index 352539de..6511242c 100644 --- a/mindplot/src/main/javascript/widget/Menu.js +++ b/mindplot/src/main/javascript/widget/Menu.js @@ -211,7 +211,7 @@ mindplot.widget.Menu = new Class({ $('addTopic').addEvent('click', function() { this.clear(); - designer.createSiblingForSelectedNode(); + designer.createChildForSelectedNode(); }.bind(this)); $('deleteTopic').addEvent('click', function() {