diff --git a/mindplot/pom.xml b/mindplot/pom.xml index d9892f10..93815d7b 100644 --- a/mindplot/pom.xml +++ b/mindplot/pom.xml @@ -107,7 +107,6 @@ - diff --git a/mindplot/src/main/javascript/BubbleTip.js b/mindplot/src/main/javascript/BubbleTip.js deleted file mode 100644 index fbb0e680..00000000 --- a/mindplot/src/main/javascript/BubbleTip.js +++ /dev/null @@ -1,159 +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.BubbleTip = new Class({ - initialize : function(divContainer) { - this.options = { - panel:null, - container:null, - divContainer:divContainer, - content:null, - onShowComplete:Class.empty, - onHideComplete:Class.empty, - width:null, - height:null, - form:null - }; - if ($defined(this.options.form)) - this.scanElements(this.options.form); - this.buildBubble(); - this._isMouseOver = false; - this._open = false; - }, - scanElements : function(form) { - $$($(form).getElements('a')).each(function(el) { - if (el.href && el.hasClass('bubble') && !el.onclick) { - el.addEvent('mouseover', this.click.bindWithEvent(this, el)); - } - }, this); - }, - buildBubble : function() { - var opts = this.options; - - var panel = new Element('div').addClass('bubbleContainer'); - if ($defined(opts.height)) - panel.setStyle('height', opts.height); - if ($defined(opts.width)) - panel.setStyle('width', opts.width); - - this.center = new Element('div').addClass('bubblePart').addClass('bubbleCenterBlue'); - this.center.inject(panel); - if (!$defined(opts.divContainer)) { - opts.divContainer = document.body; - } - panel.injectTop(opts.divContainer); - opts.panel = $(panel); - opts.panel.setStyle('opacity', 0); - opts.panel.addEvent('mouseover', function() { - this._isMouseOver = true; - }.bind(this)); - opts.panel.addEvent('mouseleave', function(event) { - this.close(event); - }.bindWithEvent(this));//this.close.bindWithEvent(this) - - }, - click : function(event, el) { - return this.open(event, el); - }, - open : function(event, content, source) { - this._isMouseOver = true; - this._evt = new Event(event); - this.doOpen.delay(500, this, [content,source]); - }, - doOpen : function(content, source) { - if ($defined(this._isMouseOver) && !$defined(this._open) && !$defined(this._opening)) { - this._opening = true; - var container = new Element('div'); - $(content).inject(container); - this.options.content = content; - this.options.container = container; - $(this.options.container).inject(this.center); - this.init(this._evt, source); - $(this.options.panel).effect('opacity', {duration:500, onComplete:function() { - this._open = true; - this._opening = false; - }.bind(this)}).start(0, 100); - } - }, - updateBranchPosition : function(event) { - this._evt = new Event(event); - }, - close : function(event) { - this._isMouseOver = false; - this.doClose.delay(50, this, new Event(event)); - }, - doClose : function(event) { - - if (!$defined(this._isMouseOver) && $defined(this._opening)) - this.doClose.delay(500, this, this._evt); - - if (!$defined(this._isMouseOver) && $defined(this._open)) { - this.forceClose(); - } - }, - forceClose : function() { - this.options.panel.effect('opacity', {duration:100, onComplete:function() { - this._open = false; - $(this.options.panel).setStyles({left:0,top:0}); - $(this.options.container).remove(); - }.bind(this)}).start(100, 0); - }, - init : function(event, source) { - var opts = this.options; - var coordinates = $(opts.panel).getCoordinates(); - var panelHeight = coordinates.height; //not total height, but close enough - var panelWidth = coordinates.width; //not total height, but close enough - - var offset = designer.getWorkSpace().getScreenManager().getWorkspaceIconPosition(source); - - var containerCoords = $(opts.divContainer).getCoordinates(); - var screenWidth = containerCoords.width; - var screenHeight = containerCoords.height; - - var width = $(this.center).getCoordinates().width; - - var invert = !(offset.y > panelHeight); //hint goes on the bottom - var invertX = (screenWidth - offset.x > panelWidth); // hint goes on the right - $(this.options.panel).remove(); - this.buildBubble(); - $(this.options.container).inject(this.center); - - var height = $(this.center).getCoordinates().height; - $(opts.panel).setStyles({width:width,height:height}); - this.moveTopic(offset, $(opts.panel).getCoordinates().height, $(opts.panel).getCoordinates().width, invert, invertX); - }, - moveTopic : function(offset, panelHeight, panelWidth, invert, invertX) { - var f = 1, fX = 1; - if ($defined(invert)) - f = 0; - if ($defined(invertX)) - fX = 0; - var opts = this.options; - $(opts.panel).setStyles({left:offset.x - (panelWidth * fX), top:offset.y - (panelHeight * f)}); - } - -}); - -mindplot.BubbleTip.getInstance = function(divContainer) { - var result = mindplot.BubbleTip.instance; - if (!$defined(result)) { - mindplot.BubbleTip.instance = new mindplot.BubbleTip(divContainer); - result = mindplot.BubbleTip.instance; - } - return result; -} diff --git a/mindplot/src/main/javascript/Designer.js b/mindplot/src/main/javascript/Designer.js index 747f6787..2972cb58 100644 --- a/mindplot/src/main/javascript/Designer.js +++ b/mindplot/src/main/javascript/Designer.js @@ -41,22 +41,17 @@ mindplot.Designer = new Class({ // Init Screen manager.. var screenManager = new mindplot.ScreenManager(divElement); this._workspace = new mindplot.Workspace(screenManager, this._model.getZoom()); - this._readOnly = profile.readOnly ? true : false; + + // Init layout manager ... + this._eventBussDispatcher = new mindplot.layout.EventBusDispatcher(this.getModel()); // Register events if (!profile.readOnly) { this._registerEvents(); - - // Init drag related classes ... - this._dragConnector = new mindplot.DragConnector(this.getModel(), this._workspace); - this._dragger = this._buildDragManager(this._workspace); - mindplot.DragTopic.init(this._workspace); + this._dragManager = this._buildDragManager(this._workspace); } this._relPivot = new mindplot.RelationshipPivot(this._workspace, this); - - // Init layout manager ... - this._eventBussDispatcher = new mindplot.layout.EventBusDispatcher(this.getModel()); }, _registerEvents : function() { @@ -115,20 +110,20 @@ mindplot.Designer = new Class({ }, _buildDragManager: function(workspace) { - // Init dragger manager. - var dragger = new mindplot.DragManager(workspace); - var topics = this.getModel().getTopics(); - var dragConnector = this._dragConnector; + var designerModel = this.getModel(); + var dragConnector = new mindplot.DragConnector(designerModel, this._workspace); + var dragManager = new mindplot.DragManager(workspace, this._eventBussDispatcher); + var topics = designerModel.getTopics(); - dragger.addEvent('startdragging', function(event, node) { + dragManager.addEvent('startdragging', function() { // Enable all mouse events. for (var i = 0; i < topics.length; i++) { topics[i].setMouseEventsEnabled(false); } }); - dragger.addEvent('dragging', function(event, dragTopic) { + dragManager.addEvent('dragging', function(event, dragTopic) { dragTopic.updateFreeLayout(event); if (!dragTopic.isFreeLayoutOn(event)) { // The node is being drag. Is the connection still valid ? @@ -140,14 +135,14 @@ mindplot.Designer = new Class({ } }); - dragger.addEvent('enddragging', function(event, dragTopic) { + dragManager.addEvent('enddragging', function(event, dragTopic) { for (var i = 0; i < topics.length; i++) { topics[i].setMouseEventsEnabled(true); } dragTopic.applyChanges(workspace); }); - return dragger; + return dragManager; }, setViewPort : function(size) { @@ -176,7 +171,7 @@ mindplot.Designer = new Class({ if (topic.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) { // Central Topic doesn't support to be dragged - var dragger = this._dragger; + var dragger = this._dragManager; dragger.add(topic); } } diff --git a/mindplot/src/main/javascript/DragManager.js b/mindplot/src/main/javascript/DragManager.js index 58aedbc6..1af1dd53 100644 --- a/mindplot/src/main/javascript/DragManager.js +++ b/mindplot/src/main/javascript/DragManager.js @@ -17,10 +17,13 @@ */ mindplot.DragManager = new Class({ - initialize:function(workspace) { + initialize:function(workspace, eventDispatcher) { this._workspace = workspace; + this._designerModel = workspace; this._listeners = {}; this._isDragInProcess = false; + this._eventDispatcher = eventDispatcher; + mindplot.DragTopic.init(this._workspace); }, add : function(node) { @@ -35,7 +38,8 @@ mindplot.DragManager = new Class({ workspace.enableWorkspaceEvents(false); // Set initial position. - var dragNode = node.createDragNode(); + var layoutManager = this._eventDispatcher.getLayoutManager(); + var dragNode = node.createDragNode(layoutManager); // Register mouse move listener ... var mouseMoveListener = dragManager._buildMouseMoveListener(workspace, dragNode, dragManager); diff --git a/mindplot/src/main/javascript/DragTopic.js b/mindplot/src/main/javascript/DragTopic.js index 51e69639..b0f4ab71 100644 --- a/mindplot/src/main/javascript/DragTopic.js +++ b/mindplot/src/main/javascript/DragTopic.js @@ -17,13 +17,15 @@ */ mindplot.DragTopic = new Class({ - initialize:function(dragShape, draggedNode) { + initialize:function(dragShape, draggedNode, layoutManger) { $assert(dragShape, 'Rect can not be null.'); $assert(draggedNode, 'draggedNode can not be null.'); + $assert(layoutManger, 'layoutManger can not be null.'); this._elem2d = dragShape; this._order = null; this._draggedNode = draggedNode; + this._layoutManager = layoutManger; this._position = new core.Point(); this._isInWorkspace = false; this._isFreeLayoutEnabled = false; @@ -37,7 +39,7 @@ mindplot.DragTopic = new Class({ // Update drag shadow position .... var position = {x:x,y:y}; if (this.isFreeLayoutOn() && this.isConnected()) { - var _layoutManager = designer._eventBussDispatcher._layoutManager; + var _layoutManager = this._layoutManager; var par = this.getConnectedToTopic(); position = _layoutManager.predict(par.getId(), position, true).position; } @@ -54,7 +56,7 @@ mindplot.DragTopic = new Class({ // In case is not free, pivot must be draw ... if (this.isConnected() && !this.isFreeLayoutOn()) { var parent = this.getConnectedToTopic(); - var predict = designer._eventBussDispatcher._layoutManager.predict(parent.getId(), this.getPosition()); + var predict = this._layoutManager.predict(parent.getId(), this.getPosition()); if (this._order != predict.order) { var dragPivot = this._getDragPivot(); var pivotPosition = predict.position; diff --git a/mindplot/src/main/javascript/NodeGraph.js b/mindplot/src/main/javascript/NodeGraph.js index 89f41227..e12058a1 100644 --- a/mindplot/src/main/javascript/NodeGraph.js +++ b/mindplot/src/main/javascript/NodeGraph.js @@ -127,9 +127,9 @@ mindplot.NodeGraph = new Class({ workspace.removeChild(this); }, - createDragNode : function() { + createDragNode : function(layoutManager) { var dragShape = this._buildDragShape(); - return new mindplot.DragTopic(dragShape, this); + return new mindplot.DragTopic(dragShape, this, layoutManager); }, _buildDragShape : function() { diff --git a/mindplot/src/main/javascript/Topic.js b/mindplot/src/main/javascript/Topic.js index 3682aa2d..d383472f 100644 --- a/mindplot/src/main/javascript/Topic.js +++ b/mindplot/src/main/javascript/Topic.js @@ -1157,8 +1157,8 @@ mindplot.Topic = new Class({ return this._isInWorkspace; }, - createDragNode : function() { - var result = this.parent(); + createDragNode : function(layoutManager) { + var result = this.parent(layoutManager); // Is the node already connected ? var targetTopic = this.getOutgoingConnectedTopic(); diff --git a/wise-doc/src/main/webapp/maps/welcome.xml b/wise-doc/src/main/webapp/maps/welcome.xml index 813a82fb..c26ee3fb 100644 --- a/wise-doc/src/main/webapp/maps/welcome.xml +++ b/wise-doc/src/main/webapp/maps/welcome.xml @@ -23,7 +23,7 @@ - +