Start working on ActionDispatcher migration.

This commit is contained in:
Paulo Veiga 2011-08-03 17:52:39 -03:00
parent 6a4a0f68fc
commit 63cda0a170
20 changed files with 544 additions and 569 deletions

View File

@ -55,6 +55,9 @@
<filelist dir="${basedir}/src/main/javascript/" files="Mindmap.js"/> <filelist dir="${basedir}/src/main/javascript/" files="Mindmap.js"/>
<filelist dir="${basedir}/src/main/javascript/" files="NodeModel.js"/> <filelist dir="${basedir}/src/main/javascript/" files="NodeModel.js"/>
<filelist dir="${basedir}/src/main/javascript/" files="RelationshipModel.js"/> <filelist dir="${basedir}/src/main/javascript/" files="RelationshipModel.js"/>
<filelist dir="${basedir}/src/main/javascript/" files="ActionDispatcher.js"/>
<filelist dir="${basedir}/src/main/javascript/" files="BrixActionDispatcher.js"/>
<filelist dir="${basedir}/src/main/javascript/" files="LocalActionDispatcher.js"/>
<filelist dir="${basedir}/src/main/javascript/" files="MindmapDesigner.js"/> <filelist dir="${basedir}/src/main/javascript/" files="MindmapDesigner.js"/>
<filelist dir="${basedir}/src/main/javascript/" files="ScreenManager.js"/> <filelist dir="${basedir}/src/main/javascript/" files="ScreenManager.js"/>
<filelist dir="${basedir}/src/main/javascript/" files="Workspace.js"/> <filelist dir="${basedir}/src/main/javascript/" files="Workspace.js"/>

View File

@ -16,7 +16,8 @@
* limitations under the License. * limitations under the License.
*/ */
mindplot.BaseCommandDispatcher = new Class({ //noinspection JSUnusedLocalSymbols
mindplot.ActionDispatcher = new Class({
initialize: function() { initialize: function() {
}, },
@ -41,19 +42,15 @@ mindplot.BaseCommandDispatcher = new Class({
throw "method must be implemented."; throw "method must be implemented.";
}, },
changeIcon: function(topicId, iconId, iconType) { deleteTopics: function(topicsIds) {
throw "method must be implemented."; throw "method must be implemented.";
}, },
deleteTopic: function(topicsIds) { dragTopic: function(topicId, position, order, parentTopic) {
throw "method must be implemented."; throw "method must be implemented.";
}, },
dragTopic: function(topicId) { moveControlPoint: function(ctrlPoint, point) {
throw "method must be implemented.";
},
moveControlPoint: function(trlPointController, point) {
throw "method must be implemented."; throw "method must be implemented.";
}, },
@ -65,8 +62,46 @@ mindplot.BaseCommandDispatcher = new Class({
throw "method must be implemented."; throw "method must be implemented.";
}, },
removeNodeFromTopic: function(topicId) { removeNoteFromTopic: function(topicId) {
throw "method must be implemented."; throw "method must be implemented.";
},
changeFontFamilyToTopic: function(topicIds, fontFamily) {
throw "method must be implemented.";
},
changeFontStyleToTopic: function(topicsIds) {
throw "method must be implemented.";
},
changeFontColorToTopic: function(topicsIds, color) {
throw "method must be implemented.";
},
changeBackgroundColorToTopic: function(topicsIds, color) {
throw "method must be implemented.";
},
changeBorderColorToTopic: function(topicsIds, color) {
throw "method must be implemented.";
},
changeShapeToTopic : function(topicsIds, shapeType) {
throw "method must be implemented.";
},
changeFontWeightToTopic : function(topicsIds) {
throw "method must be implemented.";
} }
}); });
mindplot.ActionDispatcher.setInstance = function(dispatcher) {
mindplot.ActionDispatcher._instance = dispatcher;
};
mindplot.ActionDispatcher.getInstance = function() {
return mindplot.ActionDispatcher._instance;
};

View File

@ -0,0 +1,26 @@
/*
* Copyright [2011] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.BrixActionDispatcher = new Class({
Extends: mindplot.ActionDispatcher,
initialize: function(designer) {
$assert(designer, "designer can not be null");
}
});

View File

@ -113,8 +113,10 @@ mindplot.ControlPoint = new Class({
_mouseUp : function(event, point) { _mouseUp : function(event, point) {
this._workspace.getScreenManager().removeEventListener('mousemove', this._mouseMoveFunction); this._workspace.getScreenManager().removeEventListener('mousemove', this._mouseMoveFunction);
this._workspace.getScreenManager().removeEventListener('mouseup', this._mouseUpFunction); this._workspace.getScreenManager().removeEventListener('mouseup', this._mouseUpFunction);
var command = new mindplot.commands.MoveControlPointCommand(this, point);
designer._actionRunner.execute(command); //todo:Uggly!! designer is global!! var actionDispatcher = mindplot.ActionDispatcher.getInstance();
actionDispatcher.moveControlPoint(this, point);
this._isBinded = false; this._isBinded = false;
/*event.preventDefault(); /*event.preventDefault();
event.stop(); event.stop();

View File

@ -16,8 +16,10 @@
* limitations under the License. * limitations under the License.
*/ */
// @Todo: Why the whole desginer ?. Must decouple this...
mindplot.DesignerActionRunner = new Class({ mindplot.DesignerActionRunner = new Class({
initialize: function(designer) { initialize: function(designer) {
$assert(designer, "designer can not be null");
this._designer = designer; this._designer = designer;
this._undoManager = new mindplot.DesignerUndoManager(); this._undoManager = new mindplot.DesignerUndoManager();
this._context = new mindplot.CommandContext(this._designer); this._context = new mindplot.CommandContext(this._designer);
@ -124,11 +126,3 @@ mindplot.CommandContext = new Class({
return this._designer.getSelectedRelationshipLines(); return this._designer.getSelectedRelationshipLines();
} }
}); });
mindplot.DesignerActionRunner.setInstance = function(actionRunner) {
mindplot.DesignerActionRunner._instance = actionRunner;
};
mindplot.DesignerActionRunner.getInstance = function() {
return mindplot.DesignerActionRunner._instance;
};

View File

@ -1,239 +1,203 @@
/* /*
* Copyright [2011] [wisemapping] * Copyright [2011] [wisemapping]
* *
* Licensed under WiseMapping Public License, Version 1.0 (the "License"). * Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the * It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page; * "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the license at * You may obtain a copy of the license at
* *
* http://www.wisemapping.org/license * http://www.wisemapping.org/license
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
mindplot.DragTopic = function(dragShape, draggedNode) mindplot.DragTopic = new Class({
{ initialize:function(dragShape, draggedNode) {
$assert(dragShape, 'Rect can not be null.'); $assert(dragShape, 'Rect can not be null.');
$assert(draggedNode, 'draggedNode can not be null.'); $assert(draggedNode, 'draggedNode can not be null.');
this._elem2d = dragShape; this._elem2d = dragShape;
this._order = null; this._order = null;
this._draggedNode = draggedNode; this._draggedNode = draggedNode;
this._position = new core.Point(); this._position = new core.Point();
}; },
mindplot.DragTopic.initialize = function(workspace) setOrder : function(order) {
{ this._order = order;
},
setPosition : function(x, y) {
this._position.setValue(x, y);
// Elements are positioned in the center.
// All topic element must be positioned based on the innerShape.
var draggedNode = this._draggedNode;
var size = draggedNode.getSize();
var cx = Math.ceil(x - (size.width / 2));
var cy = Math.ceil(y - (size.height / 2));
// Update visual position.
this._elem2d.setPosition(cx, cy);
},
getInnerShape : function() {
return this._elem2d;
},
disconnect : function(workspace) {
// Clear connection line ...
var dragPivot = this._getDragPivot();
dragPivot.disconnect(workspace);
},
canBeConnectedTo : function(targetTopic) {
$assert(targetTopic, 'parent can not be null');
var result = true;
if (!targetTopic.areChildrenShrinked() && !targetTopic.isCollapsed()) {
// Dragged node can not be connected to himself.
if (targetTopic == this._draggedNode) {
result = false;
} else {
var draggedNode = this.getDraggedTopic();
var topicPosition = this.getPosition();
var targetTopicModel = targetTopic.getModel();
var childTopicModel = draggedNode.getModel();
result = targetTopicModel.canBeConnected(childTopicModel, topicPosition, 18);
}
} else {
result = false;
}
return result;
},
connectTo : function(parent) {
$assert(parent, 'Parent connection node can not be null.');
var dragPivot = this._getDragPivot();
dragPivot.connectTo(parent);
},
getDraggedTopic : function() {
return this._draggedNode;
},
removeFromWorkspace : function(workspace) {
// Remove drag shadow.
workspace.removeChild(this._elem2d);
// Remove pivot shape. To improve performace it will not be removed. Only the visilility will be changed.
var dragPivot = this._getDragPivot();
dragPivot.setVisibility(false);
},
addToWorkspace : function(workspace) {
workspace.appendChild(this._elem2d);
var dragPivot = this._getDragPivot();
dragPivot.addToWorkspace(workspace);
dragPivot.setVisibility(true);
},
_getDragPivot : function() {
return mindplot.DragTopic.__getDragPivot();
},
getPosition:function() {
return this._position;
}
,
isDragTopic : function() {
return true;
},
updateDraggedTopic : function(workspace) {
$assert(workspace, 'workspace can not be null');
var dragPivot = this._getDragPivot();
var draggedTopic = this.getDraggedTopic();
var isDragConnected = this.isConnected();
// @Todo: Remove this static ...
var actionDispatcher = mindplot.ActionDispatcher.getInstance();
var topicId = draggedTopic.getId();
if (isDragConnected) {
var targetTopic = this.getConnectedToTopic();
if (targetTopic.getType() == mindplot.NodeModel.CENTRAL_TOPIC_TYPE) {
// Update topic position ...
var dragPivotPosition = dragPivot.getPosition();
// Must position the dragged topic taking into account the current node size.
var pivotSize = dragPivot.getSize();
var draggedTopicSize = draggedTopic.getSize();
var xOffset = draggedTopicSize.width - pivotSize.width;
xOffset = Math.round(xOffset / 2);
if (dragPivotPosition.x > 0) {
dragPivotPosition.x = parseInt(dragPivotPosition.x) + xOffset;
}
else {
dragPivotPosition.x = parseInt(dragPivotPosition.x) - xOffset;
}
// Set new position ...
actionDispatcher.dragTopic(topicId, dragPivotPosition, null, targetTopic);
} else {
// Main topic connections can be positioned only with the order ...
actionDispatcher.dragTopic(topicId, null, this._order, targetTopic);
}
} else {
// If the node is not connected, positionate based on the original drag topic position.
var dragPosition = this.getPosition();
actionDispatcher.dragTopic(topicId, dragPosition);
}
},
setBoardPosition : function(point) {
$assert(point, 'point can not be null');
var dragPivot = this._getDragPivot();
dragPivot.setPosition(point);
},
getConnectedToTopic : function() {
var dragPivot = this._getDragPivot();
return dragPivot.getTargetTopic();
},
isConnected : function() {
return this.getConnectedToTopic() != null;
}
});
mindplot.DragTopic.PIVOT_SIZE = {width:50,height:10};
mindplot.DragTopic.init = function(workspace) {
$assert(workspace, "workspace can not be null");
var pivot = mindplot.DragTopic.__getDragPivot(); var pivot = mindplot.DragTopic.__getDragPivot();
workspace.appendChild(pivot); workspace.appendChild(pivot);
}; }
mindplot.DragTopic.prototype.setOrder = function(order) mindplot.DragTopic.__getDragPivot = function() {
{
this._order = order;
};
mindplot.DragTopic.prototype.setPosition = function(x, y)
{
this._position.setValue(x, y);
// Elements are positioned in the center.
// All topic element must be positioned based on the innerShape.
var draggedNode = this._draggedNode;
var size = draggedNode.getSize();
var cx = Math.ceil(x - (size.width / 2));
var cy = Math.ceil(y - (size.height / 2));
// Update visual position.
this._elem2d.setPosition(cx, cy);
};
mindplot.DragTopic.prototype.getInnerShape = function()
{
return this._elem2d;
};
mindplot.DragTopic.prototype.disconnect = function(workspace)
{
// Clear connection line ...
var dragPivot = this._getDragPivot();
dragPivot.disconnect(workspace);
};
mindplot.DragTopic.prototype.canBeConnectedTo = function(targetTopic)
{
$assert(targetTopic, 'parent can not be null');
var result = true;
if (!targetTopic.areChildrenShrinked() && !targetTopic.isCollapsed())
{
// Dragged node can not be connected to himself.
if (targetTopic == this._draggedNode)
{
result = false;
} else
{
var draggedNode = this.getDraggedTopic();
var topicPosition = this.getPosition();
var targetTopicModel = targetTopic.getModel();
var childTopicModel = draggedNode.getModel();
result = targetTopicModel.canBeConnected(childTopicModel, topicPosition, 18);
}
} else
{
result = false;
}
return result;
};
mindplot.DragTopic.prototype.connectTo = function(parent)
{
$assert(parent, 'Parent connection node can not be null.');
var dragPivot = this._getDragPivot();
dragPivot.connectTo(parent);
};
mindplot.DragTopic.prototype.getDraggedTopic = function()
{
return this._draggedNode;
};
mindplot.DragTopic.prototype.removeFromWorkspace = function(workspace)
{
// Remove drag shadow.
workspace.removeChild(this._elem2d);
// Remove pivot shape. To improve performace it will not be removed. Only the visilility will be changed.
var dragPivot = this._getDragPivot();
dragPivot.setVisibility(false);
};
mindplot.DragTopic.prototype.addToWorkspace = function(workspace)
{
workspace.appendChild(this._elem2d);
var dragPivot = this._getDragPivot();
dragPivot.addToWorkspace(workspace);
dragPivot.setVisibility(true);
};
mindplot.DragTopic.prototype._getDragPivot = function()
{
return mindplot.DragTopic.__getDragPivot();
};
mindplot.DragTopic.__getDragPivot = function()
{
var result = mindplot.DragTopic._dragPivot; var result = mindplot.DragTopic._dragPivot;
if (!$defined(result)) if (!$defined(result)) {
{
result = new mindplot.DragPivot(); result = new mindplot.DragPivot();
mindplot.DragTopic._dragPivot = result; mindplot.DragTopic._dragPivot = result;
} }
return result; return result;
}; }
mindplot.DragTopic.prototype.getPosition = function()
{
return this._position;
};
mindplot.DragTopic.prototype.isDragTopic = function()
{
return true;
};
mindplot.DragTopic.prototype.updateDraggedTopic = function(workspace)
{
$assert(workspace, 'workspace can not be null');
var dragPivot = this._getDragPivot();
var draggedTopic = this.getDraggedTopic();
var isDragConnected = this.isConnected();
var actionRunner = mindplot.DesignerActionRunner.getInstance();
var topicId = draggedTopic.getId();
var command = new mindplot.commands.DragTopicCommand(topicId);
if (isDragConnected)
{
var targetTopic = this.getConnectedToTopic();
if (targetTopic.getType() == mindplot.NodeModel.CENTRAL_TOPIC_TYPE)
{
// Update topic position ...
var dragPivotPosition = dragPivot.getPosition();
// Must position the dragged topic taking into account the current node size.
var pivotSize = dragPivot.getSize();
var draggedTopicSize = draggedTopic.getSize();
var xOffset = draggedTopicSize.width - pivotSize.width;
xOffset = Math.round(xOffset / 2);
if (dragPivotPosition.x > 0)
{
dragPivotPosition.x = parseInt(dragPivotPosition.x) + xOffset;
}
else
{
dragPivotPosition.x = parseInt(dragPivotPosition.x) - xOffset;
}
// Set new position ...
command.setPosition(dragPivotPosition);
} else
{
// Main topic connections can be positioned only with the order ...
command.setOrder(this._order);
}
// Set new parent topic ..
command.setParetTopic(targetTopic);
} else {
// If the node is not connected, positionate based on the original drag topic position.
var dragPosition = this.getPosition();
command = new mindplot.commands.DragTopicCommand(topicId, dragPosition);
command.setPosition(dragPosition);
}
actionRunner.execute(command);
};
mindplot.DragTopic.prototype.setBoardPosition = function(point)
{
$assert(point, 'point can not be null');
var dragPivot = this._getDragPivot();
dragPivot.setPosition(point);
};
mindplot.DragTopic.prototype.getBoardPosition = function(point)
{
$assert(point, 'point can not be null');
var dragPivot = this._getDragPivot();
return dragPivot.getPosition();
};
mindplot.DragTopic.prototype.getConnectedToTopic = function()
{
var dragPivot = this._getDragPivot();
return dragPivot.getTargetTopic();
};
mindplot.DragTopic.prototype.isConnected = function()
{
return this.getConnectedToTopic() != null;
};
mindplot.DragTopic.PIVOT_SIZE = {width:50,height:10};

View File

@ -16,8 +16,7 @@
* limitations under the License. * limitations under the License.
*/ */
mindplot.ImageIcon = new Class( mindplot.ImageIcon = new Class({
{
Extends:mindplot.Icon, Extends:mindplot.Icon,
initialize:function(iconModel, topic, designer) { initialize:function(iconModel, topic, designer) {
$assert(iconModel, 'iconModel can not be null'); $assert(iconModel, 'iconModel can not be null');
@ -44,16 +43,15 @@ mindplot.ImageIcon = new Class(
if (!$defined(designer._viewMode) || ($defined(designer._viewMode) && !designer._viewMode)) { if (!$defined(designer._viewMode) || ($defined(designer._viewMode) && !designer._viewMode)) {
removeImage.addEvent('click', function(event) { removeImage.addEvent('click', function() {
var actionRunner = designer._actionRunner; var actionDispatcher = mindplot.ActionDispatcher.getInstance();
var command = new mindplot.commands.RemoveIconFromTopicCommand(this._topic.getId(), iconModel); actionDispatcher.removeIconFromTopic(this._topic.getId(), iconModel);
actionRunner.execute(command);
tip.forceClose(); tip.forceClose();
}.bindWithEvent(this)); }.bindWithEvent(this));
//Icon //Icon
var image = this.getImage(); var image = this.getImage();
image.addEventListener('click', function(event) { image.addEventListener('click', function() {
var iconType = iconModel.getIconType(); var iconType = iconModel.getIconType();
var newIconType = this._getNextFamilyIconId(iconType); var newIconType = this._getNextFamilyIconId(iconType);
iconModel.setIconType(newIconType); iconModel.setIconType(newIconType);
@ -83,7 +81,7 @@ mindplot.ImageIcon = new Class(
} }
}, },
_getImageUrl : function(iconId) { _getImageUrl : function(iconId) {
return "../icons/" + iconId + ".png"; return "../icons/" + iconId + ".png";
}, },
@ -99,7 +97,6 @@ mindplot.ImageIcon = new Class(
var result = null; var result = null;
for (var i = 0; i < familyIcons.length && result == null; i++) { for (var i = 0; i < familyIcons.length && result == null; i++) {
if (familyIcons[i] == iconId) { if (familyIcons[i] == iconId) {
var nextIconId;
//Is last one? //Is last one?
if (i == (familyIcons.length - 1)) { if (i == (familyIcons.length - 1)) {
result = familyIcons[0]; result = familyIcons[0];
@ -164,7 +161,7 @@ mindplot.ImageIcon.prototype.ICON_FAMILIES = [
{"id": "bullet", "icons" : ["bullet_black","bullet_blue","bullet_green","bullet_orange","bullet_red","bullet_pink","bullet_purple"]}, {"id": "bullet", "icons" : ["bullet_black","bullet_blue","bullet_green","bullet_orange","bullet_red","bullet_pink","bullet_purple"]},
{"id": "tag", "icons" : ["tag_blue","tag_green","tag_orange","tag_red","tag_pink","tag_yellow"]}, {"id": "tag", "icons" : ["tag_blue","tag_green","tag_orange","tag_red","tag_pink","tag_yellow"]},
{"id": "object", "icons" : ["object_bell","object_clanbomber","object_key","object_pencil","object_phone","object_magnifier","object_clip","object_music","object_star","object_wizard","object_house","object_cake","object_camera","object_palette","object_rainbow"]} {"id": "object", "icons" : ["object_bell","object_clanbomber","object_key","object_pencil","object_phone","object_magnifier","object_clip","object_music","object_star","object_wizard","object_house","object_cake","object_camera","object_palette","object_rainbow"]}
] ];

View File

@ -90,8 +90,9 @@ mindplot.LinkIcon = new Class({
removeBtn.setStyle("margin-left", "3px"); removeBtn.setStyle("margin-left", "3px");
removeBtn.addEvent('click', function(event) { removeBtn.addEvent('click', function(event) {
var command = new mindplot.commands.RemoveLinkFromTopicCommand(this._topic.getId());
designer._actionRunner.execute(command); var actionDispatcher = mindplot.ActionDispatcher.getInstance();
actionDispatcher.removeLinkFromTopic(this._topic.getId());
bubbleTip.forceClose(); bubbleTip.forceClose();
}.bindWithEvent(this)); }.bindWithEvent(this));
@ -148,7 +149,7 @@ mindplot.LinkIcon = new Class({
}); });
}, },
getUrl : function() { getUrl : function() {
return this._url; return this._url;
}, },

View File

@ -0,0 +1,209 @@
/*
* Copyright [2011] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.LocalActionDispatcher = new Class({
Extends: mindplot.ActionDispatcher,
initialize: function(designer) {
$assert(designer, "designer can not be null");
this._actionRunner = new mindplot.DesignerActionRunner(designer);
},
addIconToTopic: function(topicId, iconType) {
var command = new mindplot.commands.AddIconToTopicCommand(topicId, iconType);
this.execute(command);
},
addLinkToTopic: function(topicId, url) {
var command = new mindplot.commands.AddLinkToTopicCommand(topicId, url);
this.execute(command);
},
addTopic:function(model, parentTopicId, animated) {
var command = new mindplot.commands.AddTopicCommand(model, parentTopicId, animated);
this.execute(command);
},
addNoteToTopic: function(topicId, text) {
var command = new mindplot.commands.AddNoteToTopicCommand(topicId, text);
this.execute(command);
},
addRelationship: function(model, mindmap) {
var command = new mindplot.commands.AddRelationshipCommand(model, mindmap);
this.execute(command);
},
deleteTopics: function(topicsIds) {
var command = new mindplot.commands.DeleteTopicCommand(topicsIds);
this.execute(command);
},
dragTopic: function(topicId, position, order, parentTopic) {
var command = new mindplot.commands.DragTopicCommand(topicId, position, order, parentTopic);
this.execute(command);
},
moveControlPoint: function(ctrlPoint, point) {
var command = new mindplot.commands.MoveControlPointCommand(ctrlPoint, point);
this.execute(command);
},
removeIconFromTopic: function(topicId, iconModel) {
var command = new mindplot.commands.RemoveIconFromTopicCommand(topicId, iconModel);
this.execute(command);
},
removeLinkFromTopic: function(topicId) {
var command = new mindplot.commands.RemoveLinkFromTopicCommand(topicId);
this.execute(command);
},
removeNoteFromTopic: function(topicId) {
var command = new mindplot.commands.RemoveNoteFromTopicCommand(topicId);
this.execute(command);
},
changeFontStyleToTopic: function(topicsIds) {
var commandFunc = function(topic) {
var result = topic.getFontStyle();
var style = (result == "italic") ? "normal" : "italic";
topic.setFontStyle(style, true);
return result;
};
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds);
this._actionRunner.execute(command);
},
changeFontFamilyToTopic: function(topicIds, fontFamily) {
$assert(topicIds, "topicIds can not be null");
$assert(fontFamily, "fontFamily can not be null");
var commandFunc = function(topic, fontFamily) {
var result = topic.getFontFamily();
topic.setFontFamily(fontFamily, true);
core.Executor.instance.delay(topic.updateNode, 0, topic);
return result;
};
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicIds, fontFamily);
this.execute(command);
},
changeFontColorToTopic: function(topicsIds, color) {
$assert(topicsIds, "topicIds can not be null");
$assert(color, "color can not be null");
var commandFunc = function(topic, color) {
var result = topic.getFontColor();
topic.setFontColor(color, true);
return result;
};
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, color);
command.discartDuplicated = "fontColorCommandId";
this.execute(command);
},
changeBackgroundColorToTopic: function(topicsIds, color) {
$assert(topicsIds, "topicIds can not be null");
$assert(color, "color can not be null");
var commandFunc = function(topic, color) {
var result = topic.getBackgroundColor();
topic.setBackgroundColor(color);
return result;
};
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, color);
command.discartDuplicated = "backColor";
this.execute(command);
},
changeBorderColorToTopic : function(topicsIds, color) {
$assert(topicsIds, "topicIds can not be null");
$assert(color, "topicIds can not be null");
var commandFunc = function(topic, color) {
var result = topic.getBorderColor();
topic.setBorderColor(color);
return result;
};
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, color);
command.discartDuplicated = "borderColorCommandId";
this.execute(command);
},
changeFontSizeToTopic : function(topicsIds, size) {
$assert(topicsIds, "topicIds can not be null");
$assert(size, "size can not be null");
var commandFunc = function(topic, size) {
var result = topic.getFontSize();
topic.setFontSize(size, true);
core.Executor.instance.delay(topic.updateNode, 0, topic);
return result;
};
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, size);
this.execute(command);
},
changeShapeToTopic : function(topicsIds, shapeType) {
$assert(topicsIds, "topicsIds can not be null");
$assert(shapeType, "shapeType can not be null");
var commandFunc = function(topic, shapeType) {
var result = topic.getShapeType();
topic.setShapeType(shapeType, true);
return result;
};
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, shapeType);
this.execute(command);
},
changeFontWeightToTopic : function(topicsIds) {
$assert(topicsIds, "topicsIds can not be null");
var commandFunc = function(topic) {
var result = topic.getFontWeight();
var weight = (result == "bold") ? "normal" : "bold";
topic.setFontWeight(weight, true);
core.Executor.instance.delay(topic.updateNode, 0, topic);
/*var updated = function() {
topic.updateNode();
};
updated.delay(0);*/
return result;
};
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds);
this.execute(command);
},
execute:function(command) {
this._actionRunner.execute(command);
}
});

View File

@ -1,72 +0,0 @@
/*
* Copyright [2011] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.BaseCommandDispatcher = new Class({
initialize: function() {
},
addIconToTopic: function(topicId, iconType) {
throw "method must be implemented.";
},
addLinkToTopic: function(topicId, url) {
throw "method must be implemented.";
},
addNoteToTopic: function(topicId, text) {
throw "method must be implemented.";
},
addRelationship: function(model, mindmap) {
throw "method must be implemented.";
},
addTopic: function(model, parentTopicId, animated) {
throw "method must be implemented.";
},
changeIcon: function(topicId, iconId, iconType) {
throw "method must be implemented.";
},
deleteTopic: function(topicsIds) {
throw "method must be implemented.";
},
dragTopic: function(topicId) {
throw "method must be implemented.";
},
moveControlPoint: function(trlPointController, point) {
throw "method must be implemented.";
},
removeIconFromTopic: function(topicId, iconModel) {
throw "method must be implemented.";
},
removeLinkFromTopic: function(topicId) {
throw "method must be implemented.";
},
removeNodeFromTopic: function(topicId) {
throw "method must be implemented.";
}
});

View File

@ -22,9 +22,11 @@ mindplot.MindmapDesigner = new Class({
$assert(profile.zoom, "zoom must be defined"); $assert(profile.zoom, "zoom must be defined");
$assert(divElement, "divElement must be defined"); $assert(divElement, "divElement must be defined");
// Undo manager ... // Dispatcher manager ...
this._actionRunner = new mindplot.DesignerActionRunner(this); // @Todo: Remove this static. Sucks...
mindplot.DesignerActionRunner.setInstance(this._actionRunner); this._actionDispatcher = new mindplot.LocalActionDispatcher(this);
mindplot.ActionDispatcher.setInstance(this._actionDispatcher);
// Initial Zoom // Initial Zoom
this._zoom = profile.zoom; this._zoom = profile.zoom;
@ -39,21 +41,14 @@ mindplot.MindmapDesigner = new Class({
var editorClass = mindplot.TextEditorFactory.getTextEditorFromName(mindplot.EditorOptions.textEditor); var editorClass = mindplot.TextEditorFactory.getTextEditorFromName(mindplot.EditorOptions.textEditor);
this._editor = new editorClass(this, this._actionRunner); this._editor = new editorClass(this, this._actionRunner);
// Init layout managers ... // Init layout managers ...
this._topics = []; this._topics = [];
// var layoutManagerClass = mindplot.layout.LayoutManagerFactory.getManagerByName(mindplot.EditorOptions.LayoutManager);
// this._layoutManager = new layoutManagerClass(this);
this._layoutManager = new mindplot.layout.OriginalLayoutManager(this); this._layoutManager = new mindplot.layout.OriginalLayoutManager(this);
// Register handlers.. // Register handlers..
this._registerEvents(); this._registerEvents();
this._relationships = {}; this._relationships = {};
this._events = {}; this._events = {};
// Action !
}, },
_getTopics : function() { _getTopics : function() {
@ -112,8 +107,7 @@ mindplot.MindmapDesigner = new Class({
var centralTopicId = centralTopic.getId(); var centralTopicId = centralTopic.getId();
// Execute action ... // Execute action ...
var command = new mindplot.commands.AddTopicCommand(model, centralTopicId, true); this._actionDispatcher.addTopic(model, centralTopicId, true);
this._actionRunner.execute(command);
} }
}.bind(this)); }.bind(this));
} }
@ -216,8 +210,9 @@ mindplot.MindmapDesigner = new Class({
var parentTopicId = centalTopic.getId(); var parentTopicId = centalTopic.getId();
var childModel = centalTopic.createChildModel(this._layoutManager.needsPrepositioning()); var childModel = centalTopic.createChildModel(this._layoutManager.needsPrepositioning());
var command = new mindplot.commands.AddTopicCommand(childModel, parentTopicId, true); // Execute event ...
this._actionRunner.execute(command); this._actionDispatcher.addTopic(childModel, parentTopicId, true);
}, },
createSiblingForSelectedNode : function() { createSiblingForSelectedNode : function() {
@ -243,9 +238,8 @@ mindplot.MindmapDesigner = new Class({
var parentTopic = topic.getOutgoingConnectedTopic(); var parentTopic = topic.getOutgoingConnectedTopic();
var siblingModel = topic.createSiblingModel(this._layoutManager.needsPrepositioning()); var siblingModel = topic.createSiblingModel(this._layoutManager.needsPrepositioning());
var parentTopicId = parentTopic.getId(); var parentTopicId = parentTopic.getId();
var command = new mindplot.commands.AddTopicCommand(siblingModel, parentTopicId, true);
this._actionRunner.execute(command); this._actionDispatcher.addTopic(siblingModel, parentTopicId, true);
} }
}, },
@ -305,8 +299,8 @@ mindplot.MindmapDesigner = new Class({
var mindmap = this.getMindmap(); var mindmap = this.getMindmap();
var model = mindmap.createRelationship(fromNode.getModel().getId(), toNode.getModel().getId()); var model = mindmap.createRelationship(fromNode.getModel().getId(), toNode.getModel().getId());
var command = new mindplot.commands.AddRelationshipCommand(model, mindmap); this._actionDispatcher.addRelationship(model, mindmap);
this._actionRunner.execute(command);
}, },
needsSave : function() { needsSave : function() {
@ -558,8 +552,7 @@ mindplot.MindmapDesigner = new Class({
var validateError = 'Central topic can not be deleted.'; var validateError = 'Central topic can not be deleted.';
var selectedObjects = this._getValidSelectedObjectsIds(validateFunc, validateError); var selectedObjects = this._getValidSelectedObjectsIds(validateFunc, validateError);
if (selectedObjects.nodes.length > 0 || selectedObjects.relationshipLines.length > 0) { if (selectedObjects.nodes.length > 0 || selectedObjects.relationshipLines.length > 0) {
var command = new mindplot.commands.DeleteTopicCommand(selectedObjects); this._actionDispatcher.deleteTopics(selectedObjects);
this._actionRunner.execute(command);
} }
}, },
@ -568,19 +561,8 @@ mindplot.MindmapDesigner = new Class({
var validSelectedObjects = this._getValidSelectedObjectsIds(); var validSelectedObjects = this._getValidSelectedObjectsIds();
var topicsIds = validSelectedObjects.nodes; var topicsIds = validSelectedObjects.nodes;
if (topicsIds.length > 0) { if (topicsIds.length > 0) {
var commandFunc = function(topic, font) { this._actionDispatcher.changeFontFamilyToTopic(topicsIds, font);
var result = topic.getFontFamily();
topic.setFontFamily(font, true);
core.Executor.instance.delay(topic.updateNode, 0, topic);
/*var updated = function() {
topic.updateNode();
};
updated.delay(0);*/
return result;
}
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, font, topicsIds);
this._actionRunner.execute(command);
} }
}, },
@ -588,14 +570,7 @@ mindplot.MindmapDesigner = new Class({
var validSelectedObjects = this._getValidSelectedObjectsIds(); var validSelectedObjects = this._getValidSelectedObjectsIds();
var topicsIds = validSelectedObjects.nodes; var topicsIds = validSelectedObjects.nodes;
if (topicsIds.length > 0) { if (topicsIds.length > 0) {
var commandFunc = function(topic) { this._actionDispatcher.changeFontStyleToTopic(topicsIds);
var result = topic.getFontStyle();
var style = (result == "italic") ? "normal" : "italic";
topic.setFontStyle(style, true);
return result;
}
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, "", topicsIds);
this._actionRunner.execute(command);
} }
}, },
@ -603,14 +578,7 @@ mindplot.MindmapDesigner = new Class({
var validSelectedObjects = this._getValidSelectedObjectsIds(); var validSelectedObjects = this._getValidSelectedObjectsIds();
var topicsIds = validSelectedObjects.nodes; var topicsIds = validSelectedObjects.nodes;
if (topicsIds.length > 0) { if (topicsIds.length > 0) {
var commandFunc = function(topic, color) { this._actionDispatcher.changeFontColorToTopic(topicsIds, color);
var result = topic.getFontColor();
topic.setFontColor(color, true);
return result;
}
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, color, topicsIds);
command.discartDuplicated = "fontColorCommandId";
this._actionRunner.execute(command);
} }
}, },
@ -619,20 +587,11 @@ mindplot.MindmapDesigner = new Class({
var validateFunc = function(topic) { var validateFunc = function(topic) {
return topic.getShapeType() != mindplot.NodeModel.SHAPE_TYPE_LINE return topic.getShapeType() != mindplot.NodeModel.SHAPE_TYPE_LINE
}; };
var validateError = 'Color can not be setted to line topics.'; var validateError = 'Color can not be set to line topics.';
var validSelectedObjects = this._getValidSelectedObjectsIds(validateFunc, validateError); var validSelectedObjects = this._getValidSelectedObjectsIds(validateFunc, validateError);
;
var topicsIds = validSelectedObjects.nodes; var topicsIds = validSelectedObjects.nodes;
if (topicsIds.length > 0) { if (topicsIds.length > 0) {
var commandFunc = function(topic, color) { this._actionDispatcher.changeBackgroundColorToTopic(topicsIds, color);
var result = topic.getBackgroundColor();
topic.setBackgroundColor(color);
return result;
}
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, color, topicsIds);
command.discartDuplicated = "backColor";
this._actionRunner.execute(command);
} }
}, },
@ -679,20 +638,12 @@ mindplot.MindmapDesigner = new Class({
var validateFunc = function(topic) { var validateFunc = function(topic) {
return topic.getShapeType() != mindplot.NodeModel.SHAPE_TYPE_LINE return topic.getShapeType() != mindplot.NodeModel.SHAPE_TYPE_LINE
}; };
var validateError = 'Color can not be setted to line topics.'; var validateError = 'Color can not be set to line topics.';
var validSelectedObjects = this._getValidSelectedObjectsIds(validateFunc, validateError); var validSelectedObjects = this._getValidSelectedObjectsIds(validateFunc, validateError);
;
var topicsIds = validSelectedObjects.nodes; var topicsIds = validSelectedObjects.nodes;
if (topicsIds.length > 0) { if (topicsIds.length > 0) {
var commandFunc = function(topic, color) { this._actionDispatcher.changeBorderColorToTopic(topicsIds, color);
var result = topic.getBorderColor();
topic.setBorderColor(color);
return result;
}
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, color, topicsIds);
command.discartDuplicated = "borderColorCommandId";
this._actionRunner.execute(command);
} }
}, },
@ -700,19 +651,7 @@ mindplot.MindmapDesigner = new Class({
var validSelectedObjects = this._getValidSelectedObjectsIds(); var validSelectedObjects = this._getValidSelectedObjectsIds();
var topicsIds = validSelectedObjects.nodes; var topicsIds = validSelectedObjects.nodes;
if (topicsIds.length > 0) { if (topicsIds.length > 0) {
var commandFunc = function(topic, size) { this._actionDispatcher.changeFontSizeToTopic(topicsIds, size);
var result = topic.getFontSize();
topic.setFontSize(size, true);
core.Executor.instance.delay(topic.updateNode, 0, topic);
/*var updated = function() {
topic.updateNode();
};
updated.delay(0);*/
return result;
}
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, size, topicsIds);
this._actionRunner.execute(command);
} }
}, },
@ -725,13 +664,7 @@ mindplot.MindmapDesigner = new Class({
var topicsIds = validSelectedObjects.nodes; var topicsIds = validSelectedObjects.nodes;
if (topicsIds.length > 0) { if (topicsIds.length > 0) {
var commandFunc = function(topic, size) { this._actionDispatcher.changeShapeToTopic(topicsIds, shape);
var result = topic.getShapeType();
topic.setShapeType(size, true);
return result;
}
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, shape, topicsIds);
this._actionRunner.execute(command);
} }
}, },
@ -740,20 +673,7 @@ mindplot.MindmapDesigner = new Class({
var validSelectedObjects = this._getValidSelectedObjectsIds(); var validSelectedObjects = this._getValidSelectedObjectsIds();
var topicsIds = validSelectedObjects.nodes; var topicsIds = validSelectedObjects.nodes;
if (topicsIds.length > 0) { if (topicsIds.length > 0) {
var commandFunc = function(topic) { this._actionDispatcher.changeFontWeightToTopic(topicsIds);
var result = topic.getFontWeight();
var weight = (result == "bold") ? "normal" : "bold";
topic.setFontWeight(weight, true);
core.Executor.instance.delay(topic.updateNode, 0, topic);
/*var updated = function() {
topic.updateNode();
};
updated.delay(0);*/
return result;
}
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, "", topicsIds);
this._actionRunner.execute(command);
} }
}, },
@ -761,9 +681,7 @@ mindplot.MindmapDesigner = new Class({
var validSelectedObjects = this._getValidSelectedObjectsIds(); var validSelectedObjects = this._getValidSelectedObjectsIds();
var topicsIds = validSelectedObjects.nodes; var topicsIds = validSelectedObjects.nodes;
if (topicsIds.length > 0) { if (topicsIds.length > 0) {
this._actionDispatcher.addIconToTopic(topicsIds[0], iconType);
var command = new mindplot.commands.AddIconToTopicCommand(topicsIds[0], iconType);
this._actionRunner.execute(command);
} }
}, },
@ -771,8 +689,7 @@ mindplot.MindmapDesigner = new Class({
var validSelectedObjects = this._getValidSelectedObjectsIds(); var validSelectedObjects = this._getValidSelectedObjectsIds();
var topicsIds = validSelectedObjects.nodes; var topicsIds = validSelectedObjects.nodes;
if (topicsIds.length > 0) { if (topicsIds.length > 0) {
var command = new mindplot.commands.AddLinkToTopicCommand(topicsIds[0], url); this._actionDispatcher.addLinkToTopic(topicsIds[0], url);
this._actionRunner.execute(command);
} }
}, },
@ -784,11 +701,11 @@ mindplot.MindmapDesigner = new Class({
if (!$defined(topic._hasLink)) { if (!$defined(topic._hasLink)) {
var msg = new Element('div'); var msg = new Element('div');
var urlText = new Element('div').inject(msg); var urlText = new Element('div').inject(msg);
urlText.innerHTML = "URL:" urlText.innerHTML = "URL:";
var formElem = new Element('form', {'action': 'none', 'id':'linkFormId'}); var formElem = new Element('form', {'action': 'none', 'id':'linkFormId'});
var urlInput = new Element('input', {'type': 'text', 'size':30}); var urlInput = new Element('input', {'type': 'text', 'size':30});
urlInput.inject(formElem); urlInput.inject(formElem);
formElem.inject(msg) formElem.inject(msg);
var okButtonId = "linkOkButtonId"; var okButtonId = "linkOkButtonId";
formElem.addEvent('submit', function(e) { formElem.addEvent('submit', function(e) {
@ -824,8 +741,7 @@ mindplot.MindmapDesigner = new Class({
var validSelectedObjects = this._getValidSelectedObjectsIds(); var validSelectedObjects = this._getValidSelectedObjectsIds();
var topicsIds = validSelectedObjects.nodes; var topicsIds = validSelectedObjects.nodes;
if (topicsIds.length > 0) { if (topicsIds.length > 0) {
var command = new mindplot.commands.AddNoteToTopicCommand(topicsIds[0], text); this._actionDispatcher.addNoteToTopic(topicsIds[0], text);
this._actionRunner.execute(command);
} }
}, },

View File

@ -50,8 +50,9 @@ mindplot.Note = new Class({
removeBtn.setStyle("margin-left", "3px"); removeBtn.setStyle("margin-left", "3px");
removeBtn.addEvent('click', function(event) { removeBtn.addEvent('click', function(event) {
var command = new mindplot.commands.RemoveNoteFromTopicCommand(this._topic.getId()); var actionDispatcher = mindplot.ActionDispatcher.getInstance();
designer._actionRunner.execute(command); actionDispatcher.removeNoteFromTopic(this._topic.getId());
bubbleTip.forceClose(); bubbleTip.forceClose();
}.bindWithEvent(this)); }.bindWithEvent(this));

View File

@ -1,53 +0,0 @@
/*
* Copyright [2011] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.SingleCommandDispatcher = new Class(
{
Extends:mindplot.BaseCommandDispatcher,
initialize: function() {
},
addIconToTopic: function() {
throw "method must be implemented.";
},
addLinkToTopic: function() {
throw "method must be implemented.";
},
addNoteToTopic: function() {
throw "method must be implemented.";
},addRelationship: function() {
throw "method must be implemented.";
},addTopic: function() {
throw "method must be implemented.";
},changeIcon: function() {
throw "method must be implemented.";
},deleteTopic: function() {
throw "method must be implemented.";
},dragTopic: function() {
throw "method must be implemented.";
},moveControllPoint: function() {
throw "method must be implemented.";
} ,removeIconFromTopic: function() {
throw "method must be implemented.";
},removeLinkFromTopic: function() {
throw "method must be implemented.";
},removeNodeFromTopic: function() {
throw "method must be implemented.";
}
});

View File

@ -17,11 +17,10 @@
*/ */
mindplot.TextEditor = new Class({ mindplot.TextEditor = new Class({
initialize:function(designer, actionRunner) { initialize:function(designer) {
this._designer = designer; this._designer = designer;
this._screenManager = designer.getWorkSpace().getScreenManager(); this._screenManager = designer.getWorkSpace().getScreenManager();
this._container = this._screenManager.getContainer(); this._container = this._screenManager.getContainer();
this._actionRunner = actionRunner;
this._isVisible = false; this._isVisible = false;
//Create editor ui //Create editor ui

View File

@ -26,10 +26,11 @@ mindplot.commands.AddTopicCommand = new Class(
this._id = mindplot.Command._nextUUID(); this._id = mindplot.Command._nextUUID();
this._animated = $defined(animated) ? animated : false; this._animated = $defined(animated) ? animated : false;
}, },
execute: function(commandContext) {
// Add a new topic ...
var topic = commandContext.createTopic(this._model, !this._animated); execute: function(commandContext) {
// Add a new topic ...
var topic = commandContext.createTopic(this._model, !this._animated);
// Connect to topic ... // Connect to topic ...
if ($defined(this._parentId)) { if ($defined(this._parentId)) {
@ -49,6 +50,7 @@ mindplot.commands.AddTopicCommand = new Class(
} else } else
doneFn.attempt(); doneFn.attempt();
}, },
undoExecute: function(commandContext) { undoExecute: function(commandContext) {
// Finally, delete the topic from the workspace ... // Finally, delete the topic from the workspace ...
var topicId = this._model.getId(); var topicId = this._model.getId();

View File

@ -1,45 +0,0 @@
/*
* Copyright [2011] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.commands.ChangeIconFromTopicCommand = new Class({
Extends:mindplot.Command,
initialize: function(topicId, iconId, iconType) {
$assert(topicId, 'topicId can not be null');
$assert(iconId, 'iconId can not be null');
$assert(iconType, 'iconType can not be null');
this._selectedObjectsIds = topicId;
this._iconModel = iconId;
this._iconType = iconType;
},
execute: function(commandContext) {
var topic = commandContext.findTopics(this._selectedObjectsIds)[0];
var updated = function() {
topic.removeIcon(this._iconModel);
topic.updateNode();
}.bind(this);
updated.delay(0);
},
undoExecute: function(commandContext) {
var topic = commandContext.findTopics(this._selectedObjectsIds)[0];
var updated = function() {
topic.addIcon(this._iconModel, commandContext._designer);
topic.updateNode();
}.bind(this);
updated.delay(0);
}
});

View File

@ -18,12 +18,15 @@
mindplot.commands.DragTopicCommand = new Class({ mindplot.commands.DragTopicCommand = new Class({
Extends:mindplot.Command, Extends:mindplot.Command,
initialize: function(topicId) { initialize: function(topicIds, position, order, parentTopic) {
$assert(topicId, "topicId must be defined"); $assert(topicIds, "topicIds must be defined");
this._selectedObjectsIds = topicId;
this._parentTopic = null; this._selectedObjectsIds = topicIds;
this._position = null; if ($defined(parentTopic))
this._order = null; this._parentId = parentTopic.getId();
this._position = position;
this._order = order;
this._id = mindplot.Command._nextUUID(); this._id = mindplot.Command._nextUUID();
}, },
execute: function(commandContext) { execute: function(commandContext) {
@ -78,19 +81,9 @@ mindplot.commands.DragTopicCommand = new Class({
undoExecute: function(commandContext) { undoExecute: function(commandContext) {
this.execute(commandContext); this.execute(commandContext);
var selectedRelationships = commandContext.getSelectedRelationshipLines(); var selectedRelationships = commandContext.getSelectedRelationshipLines();
selectedRelationships.forEach(function(relationshipLine, index) { selectedRelationships.forEach(function(relationshipLine) {
relationshipLine.redraw(); relationshipLine.redraw();
}); });
},
setPosition: function(point) {
this._position = point;
},
setParetTopic: function(topic) {
this._parentId = topic.getId();
},
setOrder: function(order) {
this._order = order
} }
}); });

View File

@ -18,9 +18,10 @@
mindplot.commands.GenericFunctionCommand = new Class({ mindplot.commands.GenericFunctionCommand = new Class({
Extends:mindplot.Command, Extends:mindplot.Command,
initialize: function(commandFunc, value, topicsIds) { initialize: function(commandFunc, topicsIds,value) {
$assert(commandFunc, "commandFunc must be defined"); $assert(commandFunc, "commandFunc must be defined");
$assert(topicsIds, "topicsIds must be defined"); $assert(topicsIds, "topicsIds must be defined");
this._value = value; this._value = value;
this._selectedObjectsIds = topicsIds; this._selectedObjectsIds = topicsIds;
this._commandFunc = commandFunc; this._commandFunc = commandFunc;

View File

@ -19,9 +19,10 @@ mindplot.commands.MoveControlPointCommand = new Class({
Extends:mindplot.Command, Extends:mindplot.Command,
initialize: function(ctrlPointController, point) { initialize: function(ctrlPointController, point) {
$assert(ctrlPointController, 'line can not be null'); $assert(ctrlPointController, 'line can not be null');
$assert(point, 'point can not be null');
this._ctrlPointControler = ctrlPointController; this._ctrlPointControler = ctrlPointController;
this._line = ctrlPointController._line; this._line = ctrlPointController._line;
var model = this._line.getModel();
this._controlPoint = this._ctrlPointControler.getControlPoint(point).clone(); this._controlPoint = this._ctrlPointControler.getControlPoint(point).clone();
this._oldControlPoint = this._ctrlPointControler.getOriginalCtrlPoint(point).clone(); this._oldControlPoint = this._ctrlPointControler.getOriginalCtrlPoint(point).clone();
this._originalEndPoint = this._ctrlPointControler.getOriginalEndPoint(point).clone(); this._originalEndPoint = this._ctrlPointControler.getOriginalEndPoint(point).clone();

View File

@ -24,12 +24,13 @@ mindplot.layout.OriginalLayoutManager = new Class({
initialize:function(designer, options) { initialize:function(designer, options) {
this.parent(designer, options); this.parent(designer, options);
this._dragTopicPositioner = new mindplot.DragTopicPositioner(this); this._dragTopicPositioner = new mindplot.DragTopicPositioner(this);
// Init dragger manager.
// Init drag manager.
var workSpace = this.getDesigner().getWorkSpace(); var workSpace = this.getDesigner().getWorkSpace();
this._dragger = this._buildDragManager(workSpace); this._dragger = this._buildDragManager(workSpace);
// Add shapes to speed up the loading process ... // Add shapes to speed up the loading process ...
mindplot.DragTopic.initialize(workSpace); mindplot.DragTopic.init(workSpace);
}, },
prepareNode:function(node, children) { prepareNode:function(node, children) {
// Sort children by order to solve adding order in for OriginalLayoutManager... // Sort children by order to solve adding order in for OriginalLayoutManager...