mirror of
https://bitbucket.org/wisemapping/wisemapping-open-source.git
synced 2024-11-25 15:37:56 +01:00
refactoring minplot layout
This commit is contained in:
parent
7acfd763fa
commit
741ddef314
@ -38,6 +38,7 @@
|
||||
<!-- Generated for debug -->
|
||||
<concat destfile="${basedir}/target/tmp/mindplot.js" append="false">
|
||||
<filelist dir="${basedir}/src/main/javascript/" files="header.js"/>
|
||||
<filelist dir="${basedir}/src/main/javascript/" files="EventBus.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="RelationshipModel.js"/>
|
||||
@ -85,6 +86,7 @@
|
||||
<filelist dir="${basedir}/src/main/javascript/" files="DesignerActionRunner.js"/>
|
||||
<filelist dir="${basedir}/src/main/javascript/" files="DesignerUndoManager.js"/>
|
||||
<filelist dir="${basedir}/src/main/javascript/" files="ControlPoint.js"/>
|
||||
<filelist dir="${basedir}/src/main/javascript/" files="EditorOptions.js"/>
|
||||
<filelist dir="${basedir}/src/main/javascript/"
|
||||
files="commands/GenericFunctionCommand.js"/>
|
||||
<filelist dir="${basedir}/src/main/javascript/"
|
||||
@ -109,6 +111,12 @@
|
||||
files="commands/AddRelationshipCommand.js"/>
|
||||
<filelist dir="${basedir}/src/main/javascript/"
|
||||
files="commands/MoveControlPointCommand.js"/>
|
||||
<filelist dir="${basedir}/src/main/javascript/"
|
||||
files="layoutManagers/BaseLayoutManager.js"/>
|
||||
<filelist dir="${basedir}/src/main/javascript/"
|
||||
files="layoutManagers/OriginalLayoutManager.js"/>
|
||||
<filelist dir="${basedir}/src/main/javascript/"
|
||||
files="layoutManagers/LayoutManagerFactory.js"/>
|
||||
<filelist dir="${basedir}/src/main/javascript/" files="footer.js"/>
|
||||
</concat>
|
||||
|
||||
@ -142,6 +150,7 @@
|
||||
<output>${basedir}/target/tmp/mindplot-min.js</output>
|
||||
<includes>
|
||||
<include>header-min.js</include>
|
||||
<include>EventBus-min.js</include>
|
||||
<include>Mindmap-min.js</include>
|
||||
<include>NodeModel-min.js</include>
|
||||
<include>RelationshipModel-min.js</include>
|
||||
@ -185,6 +194,7 @@
|
||||
<include>IconModel-min.js</include>
|
||||
<include>LinkModel-min.js</include>
|
||||
<include>NoteModel-min.js</include>
|
||||
<include>EditorOptions-min.js</include>
|
||||
|
||||
<include>Command-min.js</include>
|
||||
<include>DesignerActionRunner-min.js</include>
|
||||
@ -203,6 +213,10 @@
|
||||
<include>commands/AddRelationshipCommand-min.js</include>
|
||||
<include>commands/MoveControlPointCommand-min.js</include>
|
||||
|
||||
<include>layoutManagers/BaseLayoutManager-min.js</include>
|
||||
<include>layoutManagers/OriginalLayoutManager-min.js</include>
|
||||
<include>layoutManagers/LayoutManagerFactory-min.js</include>
|
||||
|
||||
<include>footer-min.js</include>
|
||||
|
||||
</includes>
|
||||
|
@ -20,8 +20,7 @@ mindplot.CentralTopic = function(model)
|
||||
{
|
||||
core.assert(model, "Model can not be null");
|
||||
this.setModel(model);
|
||||
var topicBoard = new mindplot.CentralTopicBoard(this);
|
||||
mindplot.CentralTopic.superClass.initialize.call(this, topicBoard);
|
||||
mindplot.CentralTopic.superClass.initialize.call(this);
|
||||
this.__onLoad = true;
|
||||
};
|
||||
|
||||
@ -93,20 +92,6 @@ mindplot.CentralTopic.prototype._updatePositionOnChangeSize = function(oldSize,
|
||||
// Center main topic ...
|
||||
var zeroPoint = new core.Point(0, 0);
|
||||
this.setPosition(zeroPoint);
|
||||
|
||||
// Update children position based on the new figure size ...
|
||||
var xOffset = newSize.width - oldSize.width;
|
||||
xOffset = Math.round(xOffset / 2);
|
||||
|
||||
if (!this.__onLoad)
|
||||
{
|
||||
// HACK: on load ignore changes of position in order to avoid adding
|
||||
// several times the central topic distance to all the child nodes...
|
||||
|
||||
var topicBoard = this.getTopicBoard();
|
||||
topicBoard.updateChildrenPosition(this, xOffset);
|
||||
this.__onLoad = false;
|
||||
}
|
||||
};
|
||||
|
||||
mindplot.CentralTopic.prototype._defaultText = function()
|
||||
|
@ -16,9 +16,10 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
mindplot.CentralTopicBoard = function(centralTopic)
|
||||
mindplot.CentralTopicBoard = function(centralTopic, layoutManager)
|
||||
{
|
||||
var point = new core.Point(0, 0);
|
||||
this._layoutManager = layoutManager;
|
||||
this._rightBoard = new mindplot.VariableDistanceBoard(50, point);
|
||||
this._leftBoard = new mindplot.VariableDistanceBoard(50, point);
|
||||
this._centralTopic = centralTopic;
|
||||
@ -36,7 +37,6 @@ mindplot.CentralTopicBoard.prototype._updateHeight = function()
|
||||
|
||||
};
|
||||
|
||||
|
||||
mindplot.CentralTopicBoard.prototype.positionateDragTopic = function(dragTopic)
|
||||
{
|
||||
core.assert(dragTopic != null, 'dragTopic can not be null');
|
||||
|
@ -85,9 +85,7 @@ mindplot.DragTopic.prototype.canBeConnectedTo = function(targetTopic)
|
||||
var targetTopicModel = targetTopic.getModel();
|
||||
var childTopicModel = draggedNode.getModel();
|
||||
|
||||
var targetTopicBoard = targetTopic.getTopicBoard();
|
||||
var height = targetTopicBoard.getHeight();
|
||||
result = targetTopicModel.canBeConnected(childTopicModel, topicPosition, height);
|
||||
result = targetTopicModel.canBeConnected(childTopicModel, topicPosition, 18);
|
||||
}
|
||||
} else
|
||||
{
|
||||
|
@ -16,13 +16,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
mindplot.DragTopicPositioner = function(workspace, topics)
|
||||
mindplot.DragTopicPositioner = function(layoutManager)
|
||||
{
|
||||
core.assert(workspace, 'workspace can not be null');
|
||||
core.assert(topics, 'topics can not be null');
|
||||
|
||||
this._workspace = workspace;
|
||||
this._topics = topics;
|
||||
core.assert(layoutManager, 'layoutManager can not be null');
|
||||
this._layoutManager = layoutManager;
|
||||
this._topics = layoutManager.getDesigner()._getTopics();
|
||||
this._workspace = layoutManager.getDesigner().getWorkSpace();
|
||||
};
|
||||
|
||||
mindplot.DragTopicPositioner.prototype.positionateDragTopic = function(dragTopic)
|
||||
@ -38,7 +37,7 @@ mindplot.DragTopicPositioner.prototype.positionateDragTopic = function(dragTopic
|
||||
if (dragTopic.isConnected())
|
||||
{
|
||||
var targetTopic = dragTopic.getConnectedToTopic();
|
||||
var topicBoard = targetTopic.getTopicBoard();
|
||||
var topicBoard = this._layoutManager.getTopicBoardForTopic(targetTopic);
|
||||
topicBoard.positionateDragTopic(dragTopic);
|
||||
}
|
||||
};
|
||||
|
5
mindplot/src/main/javascript/EditorOptions.js
Normal file
5
mindplot/src/main/javascript/EditorOptions.js
Normal file
@ -0,0 +1,5 @@
|
||||
mindplot.EditorOptions =
|
||||
{
|
||||
LayoutManager:"OriginalLayout"
|
||||
// NodeLayoutManager:"FreeLayout"
|
||||
};
|
22
mindplot/src/main/javascript/EventBus.js
Normal file
22
mindplot/src/main/javascript/EventBus.js
Normal file
@ -0,0 +1,22 @@
|
||||
mindplot.EventBus = new Class({
|
||||
options: {
|
||||
|
||||
},
|
||||
|
||||
initialize: function(options) {
|
||||
this.setOptions(options);
|
||||
}
|
||||
|
||||
});
|
||||
mindplot.EventBus.implement(new Events);
|
||||
mindplot.EventBus.implement(new Options);
|
||||
|
||||
mindplot.EventBus.events ={
|
||||
NodeResizeEvent:'NodeResizeEvent',
|
||||
NodeMoveEvent:'NodeMoveEvent',
|
||||
NodeDisconnectEvent:'NodeDisconnectEvent',
|
||||
NodeConnectEvent:'NodeConnectEvent',
|
||||
NodeRepositionateEvent:'NodeRepositionateEvent'
|
||||
};
|
||||
|
||||
mindplot.EventBus.instance = new mindplot.EventBus();
|
@ -16,9 +16,10 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
mindplot.FixedDistanceBoard = function(defaultHeight, topic)
|
||||
mindplot.FixedDistanceBoard = function(defaultHeight, topic, layoutManager)
|
||||
{
|
||||
this._topic = topic;
|
||||
this._layoutManager = layoutManager;
|
||||
var reference = topic.getPosition();
|
||||
mindplot.FixedDistanceBoard.superClass.initialize.call(this, defaultHeight, reference);
|
||||
this._height = defaultHeight;
|
||||
@ -161,7 +162,7 @@ mindplot.FixedDistanceBoard.prototype.repositionate = function()
|
||||
if (e && e.getTopic())
|
||||
{
|
||||
var topic = e.getTopic();
|
||||
var topicBoard = topic.getTopicBoard();
|
||||
var topicBoard = this._layoutManager.getTopicBoardForTopic(topic);
|
||||
var topicBoardHeight = topicBoard.getHeight();
|
||||
|
||||
|
||||
@ -184,7 +185,7 @@ mindplot.FixedDistanceBoard.prototype.repositionate = function()
|
||||
var parentTopic = topic.getParent();
|
||||
if (parentTopic != null)
|
||||
{
|
||||
var board = parentTopic.getTopicBoard();
|
||||
var board = this._layoutManager.getTopicBoardForTopic(parentTopic);
|
||||
board.repositionate();
|
||||
}
|
||||
}
|
||||
@ -218,7 +219,7 @@ mindplot.FixedDistanceBoard.prototype.repositionate = function()
|
||||
e.setLowerLimit(lowerLimit);
|
||||
|
||||
// Update entry ...
|
||||
var topicBoard = currentTopic.getTopicBoard();
|
||||
var topicBoard = this._layoutManager.getTopicBoardForTopic(currentTopic);
|
||||
var topicBoardHeight = topicBoard.getHeight();
|
||||
|
||||
upperLimit = lowerLimit + topicBoardHeight + mindplot.FixedDistanceBoard.INTER_TOPIC_DISTANCE;
|
||||
|
@ -190,13 +190,6 @@ mindplot.MainTopic.prototype._updatePositionOnChangeSize = function(oldSize, new
|
||||
pos.x = pos.x - xOffset;
|
||||
}
|
||||
this.setPosition(pos);
|
||||
|
||||
// If height has changed, I must repositionate all elements ...
|
||||
if (oldSize.height != newSize.height)
|
||||
{
|
||||
var topicBoard = this.getTopicBoard();
|
||||
// topicBoard.repositionate();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -205,8 +198,7 @@ mindplot.MainTopic.prototype.setPosition = function(point)
|
||||
mindplot.MainTopic.superClass.setPosition.call(this, point);
|
||||
|
||||
// Update board zero entry position...
|
||||
var topicBoard = this.getTopicBoard();
|
||||
topicBoard.updateChildrenPosition(this);
|
||||
mindplot.EventBus.instance.fireEvent(mindplot.EventBus.events.NodeMoveEvent,[this]);
|
||||
};
|
||||
|
||||
mindplot.MainTopic.prototype.workoutIncomingConnectionPoint = function(sourcePosition)
|
||||
|
@ -16,8 +16,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
mindplot.MainTopicBoard = function(topic)
|
||||
mindplot.MainTopicBoard = function(topic, layoutManager)
|
||||
{
|
||||
this._layoutManager = layoutManager;
|
||||
this._topic = topic;
|
||||
this._board = null;
|
||||
this._height = 0;
|
||||
@ -32,7 +33,7 @@ mindplot.MainTopicBoard.prototype._getBoard = function()
|
||||
if (!this._board)
|
||||
{
|
||||
var topic = this._topic;
|
||||
this._board = new mindplot.FixedDistanceBoard(mindplot.MainTopicBoard.DEFAULT_MAIN_TOPIC_HEIGHT, topic);
|
||||
this._board = new mindplot.FixedDistanceBoard(mindplot.MainTopicBoard.DEFAULT_MAIN_TOPIC_HEIGHT, topic, this._layoutManager);
|
||||
}
|
||||
return this._board;
|
||||
};
|
||||
@ -116,8 +117,7 @@ mindplot.MainTopicBoard.prototype.addBranch = function(topic)
|
||||
if (currentTopic.getOutgoingConnectedTopic())
|
||||
{
|
||||
var parentTopic = currentTopic.getOutgoingConnectedTopic();
|
||||
var parentTopicBoard = parentTopic.getTopicBoard();
|
||||
parentTopicBoard.repositionate();
|
||||
mindplot.EventBus.instance.fireEvent(mindplot.EventBus.events.NodeRepositionateEvent,[parentTopic]);
|
||||
}
|
||||
};
|
||||
|
||||
@ -137,7 +137,6 @@ mindplot.MainTopicBoard.prototype.removeTopicFromBoard = function(topic)
|
||||
if (parentTopic.getOutgoingConnectedTopic())
|
||||
{
|
||||
var connectedTopic = parentTopic.getOutgoingConnectedTopic();
|
||||
var topicBoard = connectedTopic.getTopicBoard();
|
||||
topicBoard.repositionate();
|
||||
mindplot.EventBus.instance.fireEvent(mindplot.EventBus.events.NodeRepositionateEvent,[connectedTopic]);
|
||||
}
|
||||
};
|
@ -40,28 +40,17 @@ mindplot.MindmapDesigner = function(profile, divElement)
|
||||
|
||||
// Init layout managers ...
|
||||
this._topics = [];
|
||||
this._dragTopicPositioner = new mindplot.DragTopicPositioner(this._workspace, this._topics);
|
||||
var layoutManagerClass = mindplot.layoutManagers.LayoutManagerFactory.getManagerByName(mindplot.EditorOptions.LayoutManager);
|
||||
this._layoutManager = new layoutManagerClass(this);
|
||||
|
||||
// Register handlers..
|
||||
this._registerEvents();
|
||||
|
||||
// Init dragger manager.
|
||||
this._dragger = this._buildDragManager(workspace);
|
||||
|
||||
// Add shapes to speed up the loading process ...
|
||||
mindplot.DragTopic.initialize(workspace);
|
||||
|
||||
this._relationships={};
|
||||
|
||||
this._events = {};
|
||||
};
|
||||
|
||||
|
||||
mindplot.MindmapDesigner.prototype.getDragTopicPositioner = function()
|
||||
{
|
||||
return this._dragTopicPositioner;
|
||||
};
|
||||
|
||||
mindplot.MindmapDesigner.prototype._getTopics = function()
|
||||
{
|
||||
return this._topics;
|
||||
@ -90,62 +79,6 @@ mindplot.MindmapDesigner.prototype._fireEvent = function(eventType, event)
|
||||
}
|
||||
}
|
||||
|
||||
mindplot.MindmapDesigner.prototype._buildDragManager = function(workspace)
|
||||
{
|
||||
// Init dragger manager.
|
||||
var dragger = new mindplot.DragManager(workspace);
|
||||
var screen = workspace.getScreenManager();
|
||||
var topics = this._getTopics();
|
||||
|
||||
var dragTopicPositioner = this.getDragTopicPositioner();
|
||||
var mindmapDesigner = this;
|
||||
var elem = this;
|
||||
|
||||
dragger.addEventListener('startdragging', function(event, node)
|
||||
{
|
||||
// Enable all mouse events.
|
||||
for (var i = 0; i < topics.length; i++)
|
||||
{
|
||||
topics[i].setMouseEventsEnabled(false);
|
||||
}
|
||||
});
|
||||
|
||||
dragger.addEventListener('dragging', function(event, dragTopic)
|
||||
{
|
||||
// Update the state and connections of the topic ...
|
||||
dragTopicPositioner.positionateDragTopic(dragTopic);
|
||||
});
|
||||
|
||||
dragger.addEventListener('enddragging', function(event, dragTopic)
|
||||
{
|
||||
// Enable all mouse events.
|
||||
for (var i = 0; i < topics.length; i++)
|
||||
{
|
||||
topics[i].setMouseEventsEnabled(true);
|
||||
}
|
||||
// Topic must be positioned in the real board postion.
|
||||
if (dragTopic._isInTheWorkspace)
|
||||
{
|
||||
var draggedTopic = dragTopic.getDraggedTopic();
|
||||
|
||||
// Hide topic during draw ...
|
||||
draggedTopic.setBranchVisibility(false);
|
||||
var parentNode = draggedTopic.getParent();
|
||||
dragTopic.updateDraggedTopic(workspace);
|
||||
|
||||
|
||||
// Make all node visible ...
|
||||
draggedTopic.setVisibility(true);
|
||||
if (parentNode != null)
|
||||
{
|
||||
parentNode.setBranchVisibility(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return dragger;
|
||||
};
|
||||
|
||||
mindplot.MindmapDesigner.prototype._registerEvents = function()
|
||||
{
|
||||
var mindmapDesigner = this;
|
||||
@ -199,7 +132,7 @@ mindplot.MindmapDesigner.prototype._buildNodeGraph = function(model)
|
||||
topics.push(topic);
|
||||
|
||||
// Add Topic events ...
|
||||
this._registerListenersOnNode(topic);
|
||||
this._layoutManager.registerListenersOnNode(topic);
|
||||
|
||||
// Connect Topic ...
|
||||
var isConnected = model.isConnected();
|
||||
@ -246,32 +179,6 @@ mindplot.MindmapDesigner.prototype.onObjectFocusEvent = function(currentObject,
|
||||
}
|
||||
};
|
||||
|
||||
mindplot.MindmapDesigner.prototype._registerListenersOnNode = function(topic)
|
||||
{
|
||||
// Register node listeners ...
|
||||
var elem = this;
|
||||
var topics = this._topics;
|
||||
topic.addEventListener('onfocus', function(event)
|
||||
{
|
||||
elem.onObjectFocusEvent.attempt([topic, event], elem);
|
||||
});
|
||||
|
||||
// Add drag behaviour ...
|
||||
if (topic.getType() != mindplot.NodeModel.CENTRAL_TOPIC_TYPE)
|
||||
{
|
||||
|
||||
// Central Topic doesn't support to be dragged
|
||||
var dragger = this._dragger;
|
||||
dragger.add(topic);
|
||||
}
|
||||
|
||||
// Register editor events ...
|
||||
if (!this._viewMode)
|
||||
{
|
||||
this._editor.listenEventOnNode(topic, 'dblclick', true);
|
||||
}
|
||||
|
||||
};
|
||||
mindplot.MindmapDesigner.prototype.zoomOut = function()
|
||||
{
|
||||
var scale = this._zoom * 1.2;
|
||||
@ -548,25 +455,6 @@ mindplot.MindmapDesigner.prototype._nodeModelToNodeGraph = function(nodeModel, i
|
||||
|
||||
var children = nodeModel.getChildren().slice();
|
||||
|
||||
// Sort children by order to solve adding order ...
|
||||
if (nodeGraph.getTopicType()!=mindplot.NodeModel.CENTRAL_TOPIC_TYPE && children.length > 0)
|
||||
{
|
||||
var oldChildren = children;
|
||||
children = [];
|
||||
for (var i = 0; i < oldChildren.length; i++)
|
||||
{
|
||||
var child = oldChildren[i];
|
||||
var order = child.getOrder();
|
||||
if (order != null)
|
||||
{
|
||||
children[order] = child;
|
||||
} else
|
||||
{
|
||||
children.push(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < children.length; i++)
|
||||
{
|
||||
var child = children[i];
|
||||
|
@ -23,9 +23,8 @@ mindplot.Topic = function()
|
||||
|
||||
objects.extend(mindplot.Topic, mindplot.NodeGraph);
|
||||
|
||||
mindplot.Topic.prototype.initialize = function(topicBoard)
|
||||
mindplot.Topic.prototype.initialize = function()
|
||||
{
|
||||
core.assert(core.Utils.isDefined(topicBoard), 'topic board can not be null.');
|
||||
|
||||
this._children = [];
|
||||
this._parent = null;
|
||||
@ -33,14 +32,13 @@ mindplot.Topic.prototype.initialize = function(topicBoard)
|
||||
this._relationships = [];
|
||||
this._isInWorkspace = false;
|
||||
|
||||
this._topicBoard = topicBoard;
|
||||
this._buildShape();
|
||||
this.setMouseEventsEnabled(true);
|
||||
|
||||
// Positionate topic ....
|
||||
var model = this.getModel();
|
||||
var pos = model.getPosition();
|
||||
if (pos != null)
|
||||
if (pos != null && model.getType() == mindplot.NodeModel.CENTRAL_TOPIC_TYPE)
|
||||
{
|
||||
this.setPosition(pos);
|
||||
}
|
||||
@ -1103,6 +1101,9 @@ mindplot.Topic.prototype.setSize = function(size, force)
|
||||
|
||||
// Update the figure position(ej: central topic must be centered) and children position.
|
||||
this._updatePositionOnChangeSize(oldSize, size);
|
||||
|
||||
mindplot.EventBus.instance.fireEvent(mindplot.EventBus.events.NodeResizeEvent,[this]);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
@ -1131,8 +1132,7 @@ mindplot.Topic.prototype.disconnect = function(workspace)
|
||||
outgoingLine.removeFromWorkspace(workspace);
|
||||
|
||||
// Remove from workspace.
|
||||
var topicBoard = targetTopic.getTopicBoard();
|
||||
topicBoard.removeTopicFromBoard(this);
|
||||
mindplot.EventBus.instance.fireEvent(mindplot.EventBus.events.NodeDisconnectEvent,[targetTopic, this]);
|
||||
|
||||
// Change text based on the current connection ...
|
||||
var model = this.getModel();
|
||||
@ -1215,8 +1215,7 @@ mindplot.Topic.prototype.connectTo = function(targetTopic, workspace, isVisible)
|
||||
var textShape = this.getTextShape();
|
||||
|
||||
// Update topic position based on the state ...
|
||||
var targetTopicBoard = targetTopic.getTopicBoard();
|
||||
targetTopicBoard.addBranch(this);
|
||||
mindplot.EventBus.instance.fireEvent(mindplot.EventBus.events.NodeConnectEvent,[targetTopic, this]);
|
||||
|
||||
// Display connection node...
|
||||
var connector = targetTopic.getShrinkConnector();
|
||||
@ -1272,11 +1271,6 @@ mindplot.Topic.prototype.isInWorkspace = function(){
|
||||
return this._isInWorkspace;
|
||||
};
|
||||
|
||||
mindplot.Topic.prototype.getTopicBoard = function()
|
||||
{
|
||||
return this._topicBoard;
|
||||
};
|
||||
|
||||
mindplot.Topic.prototype.createDragNode = function()
|
||||
{
|
||||
var dragNode = mindplot.Topic.superClass.createDragNode.call(this);
|
||||
|
@ -76,15 +76,15 @@ mindplot.XMLMindmapSerializer_Pela.prototype._topicToXML = function(document, to
|
||||
} else
|
||||
{
|
||||
var parent = topic.getParent();
|
||||
if (parent == null || parent.getType() == mindplot.NodeModel.CENTRAL_TOPIC_TYPE)
|
||||
{
|
||||
// if (parent == null || parent.getType() == mindplot.NodeModel.CENTRAL_TOPIC_TYPE)
|
||||
// {
|
||||
var pos = topic.getPosition();
|
||||
parentTopic.setAttribute("position", pos.x + ',' + pos.y);
|
||||
} else
|
||||
{
|
||||
// } else
|
||||
// {
|
||||
var order = topic.getOrder();
|
||||
parentTopic.setAttribute("order", order);
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
var text = topic.getText();
|
||||
|
@ -25,3 +25,4 @@
|
||||
var mindplot = {};
|
||||
mindplot.util = {};
|
||||
mindplot.commands = {};
|
||||
mindplot.layoutManagers = {};
|
@ -0,0 +1,41 @@
|
||||
/*
|
||||
Class: BaseLayoutManager
|
||||
Base class for LayoutManagers
|
||||
|
||||
Arguments:
|
||||
element - the knob container
|
||||
knob - the handle
|
||||
options - see Options below
|
||||
|
||||
Options:
|
||||
steps - the number of steps for your slider.
|
||||
mode - either 'horizontal' or 'vertical'. defaults to horizontal.
|
||||
offset - relative offset for knob position. default to 0.
|
||||
|
||||
Events:
|
||||
onChange - a function to fire when the value changes.
|
||||
onComplete - a function to fire when you're done dragging.
|
||||
onTick - optionally, you can alter the onTick behavior, for example displaying an effect of the knob moving to the desired position.
|
||||
Passes as parameter the new position.
|
||||
*/
|
||||
|
||||
mindplot.layoutManagers.BaseLayoutManager = new Class({
|
||||
|
||||
options: {
|
||||
|
||||
},
|
||||
|
||||
initialize: function(designer, options) {
|
||||
this.setOptions(options);
|
||||
this._designer = designer;
|
||||
},
|
||||
addNode: function(node) {
|
||||
|
||||
},
|
||||
getDesigner:function(){
|
||||
return this._designer;
|
||||
}
|
||||
});
|
||||
|
||||
mindplot.layoutManagers.BaseLayoutManager.implement(new Events);
|
||||
mindplot.layoutManagers.BaseLayoutManager.implement(new Options);
|
@ -0,0 +1,16 @@
|
||||
mindplot.layoutManagers.LayoutManagerFactory = {};
|
||||
mindplot.layoutManagers.LayoutManagerFactory.managers = {
|
||||
OriginalLayoutManager:mindplot.layoutManagers.OriginalLayoutManager
|
||||
// FreeLayoutManager:mindplot.layoutManagers.FreeLayoutManager
|
||||
};
|
||||
mindplot.layoutManagers.LayoutManagerFactory.getManagerByName = function(name){
|
||||
var manager = mindplot.layoutManagers.LayoutManagerFactory.managers[name+"Manager"];
|
||||
if(manager){
|
||||
return manager;
|
||||
}
|
||||
else{
|
||||
return mindplot.layoutManagers.LayoutManagerFactory.managers["OriginalLayoutManager"];
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -0,0 +1,142 @@
|
||||
mindplot.layoutManagers.OriginalLayoutManager = mindplot.layoutManagers.BaseLayoutManager.extend({
|
||||
options:{
|
||||
|
||||
},
|
||||
initialize:function(designer, options){
|
||||
this.parent(designer, options);
|
||||
this._boards = new Hash();
|
||||
this._dragTopicPositioner = new mindplot.DragTopicPositioner(this);
|
||||
// Init dragger manager.
|
||||
var workSpace = this.getDesigner().getWorkSpace();
|
||||
this._dragger = this._buildDragManager(workSpace);
|
||||
|
||||
// Add shapes to speed up the loading process ...
|
||||
mindplot.DragTopic.initialize(workSpace);
|
||||
|
||||
mindplot.EventBus.instance.addEvent(mindplot.EventBus.events.NodeResizeEvent,this._nodeResizeEvent.bind(this));
|
||||
mindplot.EventBus.instance.addEvent(mindplot.EventBus.events.NodeMoveEvent,this._nodeMoveEvent.bind(this));
|
||||
mindplot.EventBus.instance.addEvent(mindplot.EventBus.events.NodeDisconnectEvent,this._nodeDisconnectEvent.bind(this));
|
||||
mindplot.EventBus.instance.addEvent(mindplot.EventBus.events.NodeConnectEvent,this._nodeConnectEvent.bind(this));
|
||||
mindplot.EventBus.instance.addEvent(mindplot.EventBus.events.NodeRepositionateEvent,this._NodeRepositionateEvent.bind(this));
|
||||
},
|
||||
_nodeResizeEvent:function(node){
|
||||
var size = node.getSize();
|
||||
if(!this._isCentralTopic(node))
|
||||
this.getTopicBoardForTopic(node).updateChildrenPosition(node,size.height/2);
|
||||
},
|
||||
_nodeMoveEvent:function(node){
|
||||
this.getTopicBoardForTopic(node).updateChildrenPosition(node);
|
||||
},
|
||||
_nodeDisconnectEvent:function(targetNode, node){
|
||||
this.getTopicBoardForTopic(targetNode).removeTopicFromBoard(node);
|
||||
},
|
||||
_nodeConnectEvent:function(targetNode, node){
|
||||
this.getTopicBoardForTopic(targetNode).addBranch(node);
|
||||
},
|
||||
_NodeRepositionateEvent:function(node){
|
||||
this.getTopicBoardForTopic(node).repositionate();
|
||||
},
|
||||
getDragTopicPositioner : function()
|
||||
{
|
||||
return this._dragTopicPositioner;
|
||||
},
|
||||
_buildDragManager: function(workspace)
|
||||
{
|
||||
// Init dragger manager.
|
||||
var dragger = new mindplot.DragManager(workspace);
|
||||
var topics = this.getDesigner()._getTopics();
|
||||
|
||||
var dragTopicPositioner = this.getDragTopicPositioner();
|
||||
|
||||
dragger.addEventListener('startdragging', function(event, node)
|
||||
{
|
||||
// Enable all mouse events.
|
||||
for (var i = 0; i < topics.length; i++)
|
||||
{
|
||||
topics[i].setMouseEventsEnabled(false);
|
||||
}
|
||||
});
|
||||
|
||||
dragger.addEventListener('dragging', function(event, dragTopic)
|
||||
{
|
||||
// Update the state and connections of the topic ...
|
||||
dragTopicPositioner.positionateDragTopic(dragTopic);
|
||||
});
|
||||
|
||||
dragger.addEventListener('enddragging', function(event, dragTopic)
|
||||
{
|
||||
// Enable all mouse events.
|
||||
for (var i = 0; i < topics.length; i++)
|
||||
{
|
||||
topics[i].setMouseEventsEnabled(true);
|
||||
}
|
||||
// Topic must be positioned in the real board postion.
|
||||
if (dragTopic._isInTheWorkspace)
|
||||
{
|
||||
var draggedTopic = dragTopic.getDraggedTopic();
|
||||
|
||||
// Hide topic during draw ...
|
||||
draggedTopic.setBranchVisibility(false);
|
||||
var parentNode = draggedTopic.getParent();
|
||||
dragTopic.updateDraggedTopic(workspace);
|
||||
|
||||
|
||||
// Make all node visible ...
|
||||
draggedTopic.setVisibility(true);
|
||||
if (parentNode != null)
|
||||
{
|
||||
parentNode.setBranchVisibility(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return dragger;
|
||||
},
|
||||
registerListenersOnNode : function(topic)
|
||||
{
|
||||
// Register node listeners ...
|
||||
var designer = this.getDesigner();
|
||||
topic.addEventListener('onfocus', function(event)
|
||||
{
|
||||
designer.onObjectFocusEvent.attempt([topic, event], designer);
|
||||
});
|
||||
|
||||
// Add drag behaviour ...
|
||||
if (topic.getType() != mindplot.NodeModel.CENTRAL_TOPIC_TYPE)
|
||||
{
|
||||
|
||||
// Central Topic doesn't support to be dragged
|
||||
var dragger = this._dragger;
|
||||
dragger.add(topic);
|
||||
}
|
||||
|
||||
/*// Register editor events ...
|
||||
if (!this._viewMode)
|
||||
{
|
||||
this._editor.listenEventOnNode(topic, 'dblclick', true);
|
||||
}*/
|
||||
|
||||
},
|
||||
getTopicBoardForTopic:function(node){
|
||||
var id = node.getId()
|
||||
var result = this._boards[id];
|
||||
if(!result){
|
||||
result = this.addNode(node);
|
||||
}
|
||||
return result;
|
||||
},
|
||||
addNode:function(node){
|
||||
var boardClass = mindplot.MainTopicBoard;
|
||||
if (this._isCentralTopic(node))
|
||||
boardClass = mindplot.CentralTopicBoard;
|
||||
var board = new boardClass(node, this);
|
||||
var id = node.getId();
|
||||
this._boards[id]=board;
|
||||
this.parent();
|
||||
return board;
|
||||
},
|
||||
_isCentralTopic:function(node){
|
||||
var type = node.getModel().getType();
|
||||
return type == mindplot.NodeModel.CENTRAL_TOPIC_TYPE;
|
||||
}
|
||||
});
|
Loading…
Reference in New Issue
Block a user