diff --git a/mindplot/pom.xml b/mindplot/pom.xml
index 53144cd4..99273e1c 100644
--- a/mindplot/pom.xml
+++ b/mindplot/pom.xml
@@ -140,6 +140,7 @@
Workspace.js
ShrinkConnector.js
DesignerKeyboard.js
+ TopicStyle.js
NodeGraph.js
Topic.js
CentralTopic.js
diff --git a/mindplot/src/main/javascript/CentralTopic.js b/mindplot/src/main/javascript/CentralTopic.js
index 4ac5040d..f2fba1bf 100644
--- a/mindplot/src/main/javascript/CentralTopic.js
+++ b/mindplot/src/main/javascript/CentralTopic.js
@@ -36,29 +36,11 @@ mindplot.CentralTopic = new Class({
return this.getPosition();
},
- _getInnerPadding:function () {
- return 11;
- },
-
- getTopicType:function () {
- return mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE;
- },
-
setCursor:function (type) {
type = (type == 'move') ? 'default' : type;
this.parent(type);
},
- isConnectedToCentralTopic:function () {
- return false;
- },
-
-
- _defaultShapeType:function () {
- return mindplot.model.TopicShape.ROUNDED_RECT;
- },
-
-
updateTopicShape:function () {
},
@@ -70,28 +52,6 @@ mindplot.CentralTopic = new Class({
this.setPosition(zeroPoint);
},
- _defaultText:function () {
- return $msg('CENTRAL_TOPIC');
- },
-
- _defaultBackgroundColor:function () {
- return "rgb(80,157,192)";
- },
-
- _defaultBorderColor:function () {
- return "rgb(57,113,177)";
- },
-
- _defaultFontStyle:function () {
- return {
- font:"Verdana",
- size:10,
- style:"normal",
- weight:"bold",
- color:"#ffffff"
- };
- },
-
getShrinkConnector:function () {
return null;
},
diff --git a/mindplot/src/main/javascript/Designer.js b/mindplot/src/main/javascript/Designer.js
index f2be351f..8a5ae4b5 100644
--- a/mindplot/src/main/javascript/Designer.js
+++ b/mindplot/src/main/javascript/Designer.js
@@ -160,6 +160,48 @@ mindplot.Designer = new Class({
}
}.bind(this));
+ // Register mouse drag and drop event ...
+ function noopHandler(evt) {
+ evt.stopPropagation();
+ evt.preventDefault();
+ }
+
+ // Enable drag events ...
+ Element.NativeEvents.dragenter = 2;
+ Element.NativeEvents.dragexit = 2;
+ Element.NativeEvents.dragover = 2;
+ Element.NativeEvents.drop = 2;
+
+ screenManager.addEvent('dragenter', noopHandler);
+ screenManager.addEvent('dragexit', noopHandler);
+ screenManager.addEvent('dragover', noopHandler);
+ screenManager.addEvent('drop', function (evt) {
+ evt.stopPropagation();
+ evt.preventDefault();
+//
+ var files = evt.event.dataTransfer.files;
+ console.log(event);
+
+ var count = files.length;
+
+ // Only call the handler if 1 or more files was dropped.
+ if (count > 0) {
+
+ var model = this.getMindmap().createNode();
+ model.setImageSize(80, 43);
+ model.setMetadata("{'media':'video,'url':'http://www.youtube.com/watch?v=P3FrXftyuzw&feature=g-vrec&context=G2b4ab69RVAAAAAAAAAA'}");
+ model.setImageUrl("images/logo-small.png");
+ model.setShapeType(mindplot.model.TopicShape.IMAGE);
+
+ var position = screenManager.getWorkspaceMousePosition(evt);
+ model.setPosition(position.x, position.y);
+ model.setPosition(100, 100);
+
+ this._actionDispatcher.addTopics([model]);
+ }
+ }.bind(this));
+
+
},
_buildDragManager:function (workspace) {
@@ -357,7 +399,7 @@ mindplot.Designer = new Class({
// Exclude central topic ..
topics = topics.filter(function (topic) {
- return topic.getTopicType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE
+ return !topic.isCentralTopic();
});
this._clipboard = topics.map(function (topic) {
@@ -684,7 +726,7 @@ mindplot.Designer = new Class({
},
_removeTopic:function (node) {
- if (node.getTopicType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
+ if (!node.isCentralTopic()) {
var parent = node._parent;
node.disconnect(this._workspace);
@@ -714,14 +756,14 @@ mindplot.Designer = new Class({
// If there are more than one node selected,
$notify($msg('ENTITIES_COULD_NOT_BE_DELETED'));
return;
- } else if (topics.length == 1 && topics[0].getTopicType() == mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
+ } else if (topics.length == 1 && topics[0].isCentralTopic()) {
$notify($msg('CENTRAL_TOPIC_CAN_NOT_BE_DELETED'));
return;
}
// If the central topic has been selected, I must filter ir
var topicIds = topics.filter(function (topic) {
- return topic.getTopicType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE
+ return !topic.isCentralTopic();
}).map(function (topic) {
return topic.getId()
});
diff --git a/mindplot/src/main/javascript/DesignerKeyboard.js b/mindplot/src/main/javascript/DesignerKeyboard.js
index f3aebdd5..b4cc7dee 100644
--- a/mindplot/src/main/javascript/DesignerKeyboard.js
+++ b/mindplot/src/main/javascript/DesignerKeyboard.js
@@ -241,7 +241,7 @@ mindplot.DesignerKeyboard = new Class({
'right':function (event) {
var node = model.selectedTopic();
if (node) {
- if (node.getTopicType() == mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
+ if (node.isCentralTopic()) {
this._goToSideChild(designer, node, 'RIGHT');
}
else {
@@ -263,7 +263,7 @@ mindplot.DesignerKeyboard = new Class({
'left':function (event) {
var node = model.selectedTopic();
if (node) {
- if (node.getTopicType() == mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
+ if (node.isCentralTopic()) {
this._goToSideChild(designer, node, 'LEFT');
}
else {
@@ -285,7 +285,7 @@ mindplot.DesignerKeyboard = new Class({
'up':function (event) {
var node = model.selectedTopic();
if (node) {
- if (node.getTopicType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
+ if (!node.isCentralTopic()) {
this._goToBrother(designer, node, 'UP');
}
} else {
@@ -299,7 +299,7 @@ mindplot.DesignerKeyboard = new Class({
'down':function (event) {
var node = model.selectedTopic();
if (node) {
- if (node.getTopicType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
+ if (!node.isCentralTopic()) {
this._goToBrother(designer, node, 'DOWN');
}
} else {
diff --git a/mindplot/src/main/javascript/MainTopic.js b/mindplot/src/main/javascript/MainTopic.js
index f92920c7..e1bb2a7c 100644
--- a/mindplot/src/main/javascript/MainTopic.js
+++ b/mindplot/src/main/javascript/MainTopic.js
@@ -1,248 +1,163 @@
-/*
- * 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.MainTopic = new Class({
- Extends:mindplot.Topic,
- initialize:function (model, options) {
- this.parent(model, options);
- },
-
- INNER_RECT_ATTRIBUTES:{stroke:'0.5 solid #009900'},
-
- _buildDragShape:function () {
- var innerShape = this._buildShape(this.INNER_RECT_ATTRIBUTES, this.getShapeType());
- var size = this.getSize();
- innerShape.setSize(size.width, size.height);
- innerShape.setPosition(0, 0);
- innerShape.setOpacity(0.5);
- innerShape.setCursor('default');
- innerShape.setVisibility(true);
-
- var brColor = this.getBorderColor();
- innerShape.setAttribute("strokeColor", brColor);
-
- var bgColor = this.getBackgroundColor();
- innerShape.setAttribute("fillColor", bgColor);
-
- // Create group ...
- var groupAttributes = {width:100, height:100, coordSizeWidth:100, coordSizeHeight:100};
- var group = new web2d.Group(groupAttributes);
- group.appendChild(innerShape);
-
- // Add Text ...
- if (this.getShapeType() != mindplot.model.TopicShape.IMAGE) {
- var textShape = this._buildTextShape(true);
- var text = this.getText();
- textShape.setText(text);
- textShape.setOpacity(0.5);
- group.appendChild(textShape);
- }
- return group;
- },
-
-
- _defaultShapeType:function () {
- return mindplot.model.TopicShape.LINE;
- },
-
- updateTopicShape:function (targetTopic, workspace) {
- // Change figure based on the connected topic ...
- var model = this.getModel();
- var shapeType = model.getShapeType();
- if (targetTopic.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
- if (!$defined(shapeType)) {
- // Get the real shape type ...
- shapeType = this.getShapeType();
- this._setShapeType(shapeType, false);
- }
- }
- },
-
- disconnect:function (workspace) {
- this.parent(workspace);
- var size = this.getSize();
-
- var model = this.getModel();
- var shapeType = model.getShapeType();
- if (!$defined(shapeType)) {
- // Change figure ...
- shapeType = this.getShapeType();
- this._setShapeType(mindplot.model.TopicShape.ROUNDED_RECT, false);
- }
- var innerShape = this.getInnerShape();
- innerShape.setVisibility(true);
- },
-
- getTopicType:function () {
- return "MainTopic";
- },
-
- _updatePositionOnChangeSize:function (oldSize, newSize) {
-
- var xOffset = Math.round((newSize.width - oldSize.width) / 2);
- var pos = this.getPosition();
- if ($defined(pos)) {
- if (pos.x > 0) {
- pos.x = pos.x + xOffset;
- } else {
- pos.x = pos.x - xOffset;
- }
- this.setPosition(pos);
- }
- },
-
- workoutIncomingConnectionPoint:function (sourcePosition) {
- $assert(sourcePosition, 'sourcePoint can not be null');
- var pos = this.getPosition();
- var size = this.getSize();
-
- var isAtRight = mindplot.util.Shape.isAtRight(sourcePosition, pos);
- var result = mindplot.util.Shape.calculateRectConnectionPoint(pos, size, isAtRight);
- if (this.getShapeType() == mindplot.model.TopicShape.LINE) {
- result.y = result.y + (this.getSize().height / 2);
- }
-
- // Move a little the position...
- var offset = mindplot.Topic.CONNECTOR_WIDTH / 2;
- if (this.getPosition().x > 0) {
- result.x = result.x + offset;
- } else {
- result.x = result.x - offset;
- }
-
- result.x = Math.ceil(result.x);
- result.y = Math.ceil(result.y);
- return result;
-
- },
-
- workoutOutgoingConnectionPoint:function (targetPosition) {
- $assert(targetPosition, 'targetPoint can not be null');
- var pos = this.getPosition();
- var isAtRight = mindplot.util.Shape.isAtRight(targetPosition, pos);
- var size = this.getSize();
-
- var result;
- if (this.getShapeType() == mindplot.model.TopicShape.LINE) {
-
- result = new core.Point();
- var groupPosition = this._elem2d.getPosition();
- var innerShareSize = this.getInnerShape().getSize();
-
- if (innerShareSize) {
- var magicCorrectionNumber = 0.3;
- if (!isAtRight) {
- result.x = groupPosition.x + innerShareSize.width - magicCorrectionNumber;
- } else {
- result.x = groupPosition.x + magicCorrectionNumber;
- }
- result.y = groupPosition.y + innerShareSize.height;
- } else {
- // Hack: When the size has not being defined. This is because the node has not being added.
- // Try to do our best ...
- if (!isAtRight) {
- result.x = pos.x + (size.width / 2);
- } else {
- result.x = pos.x - (size.width / 2);
- }
- result.y = pos.y + (size.height / 2);
- }
-
- } else {
- result = mindplot.util.Shape.calculateRectConnectionPoint(pos, size, isAtRight, true);
- }
- return result;
- },
-
- _getInnerPadding:function () {
- var result;
- var parent = this.getModel().getParent();
- if (parent && mindplot.model.INodeModel.MAIN_TOPIC_TYPE == parent.getType()) {
- result = 3;
- }
- else {
- result = 4;
- }
- return result;
- },
-
- isConnectedToCentralTopic:function () {
- var model = this.getModel();
- var parent = model.getParent();
-
- return parent && parent.getType() === mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE;
- },
-
- _defaultText:function () {
- var targetTopic = this.getOutgoingConnectedTopic();
- var result = "";
- if ($defined(targetTopic)) {
- if (targetTopic.getType() == mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
- result = $msg('MAIN_TOPIC');
- } else {
- result = $msg('SUB_TOPIC');
- }
- } else {
- result = $msg('ISOLATED_TOPIC');
- ;
- }
- return result;
- },
-
- _defaultFontStyle:function () {
- var targetTopic = this.getOutgoingConnectedTopic();
- var result;
- if ($defined(targetTopic)) {
- if (targetTopic.getType() == mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
- result = {
- font:"Arial",
- size:8,
- style:"normal",
- weight:"normal",
- color:"rgb(82,92,97)"
- };
- } else {
- result = {
- font:"Arial",
- size:6,
- style:"normal",
- weight:"normal",
- color:"rgb(82,92,97)"
- };
- }
- } else {
- result = {
- font:"Verdana",
- size:8,
- style:"normal",
- weight:"normal",
- color:"rgb(82,92,97)"
- };
- }
- return result;
- },
-
- _defaultBackgroundColor:function () {
- return "rgb(224,229,239)";
- },
-
- _defaultBorderColor:function () {
- return 'rgb(2,59,185)';
- }
-
+/*
+ * 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.MainTopic = new Class({
+ Extends:mindplot.Topic,
+ initialize:function (model, options) {
+ this.parent(model, options);
+ },
+
+ INNER_RECT_ATTRIBUTES:{stroke:'0.5 solid #009900'},
+
+ _buildDragShape:function () {
+ var innerShape = this._buildShape(this.INNER_RECT_ATTRIBUTES, this.getShapeType());
+ var size = this.getSize();
+ innerShape.setSize(size.width, size.height);
+ innerShape.setPosition(0, 0);
+ innerShape.setOpacity(0.5);
+ innerShape.setCursor('default');
+ innerShape.setVisibility(true);
+
+ var brColor = this.getBorderColor();
+ innerShape.setAttribute("strokeColor", brColor);
+
+ var bgColor = this.getBackgroundColor();
+ innerShape.setAttribute("fillColor", bgColor);
+
+ // Create group ...
+ var groupAttributes = {width:100, height:100, coordSizeWidth:100, coordSizeHeight:100};
+ var group = new web2d.Group(groupAttributes);
+ group.appendChild(innerShape);
+
+ // Add Text ...
+ if (this.getShapeType() != mindplot.model.TopicShape.IMAGE) {
+ var textShape = this._buildTextShape(true);
+ var text = this.getText();
+ textShape.setText(text);
+ textShape.setOpacity(0.5);
+ group.appendChild(textShape);
+ }
+ return group;
+ },
+
+ updateTopicShape:function (targetTopic, workspace) {
+ // Change figure based on the connected topic ...
+ var model = this.getModel();
+ var shapeType = model.getShapeType();
+ if (!targetTopic.isCentralTopic()) {
+ if (!$defined(shapeType)) {
+ // Get the real shape type ...
+ shapeType = this.getShapeType();
+ this._setShapeType(shapeType, false);
+ }
+ }
+ },
+
+ disconnect:function (workspace) {
+ this.parent(workspace);
+ var size = this.getSize();
+
+ var model = this.getModel();
+ var shapeType = model.getShapeType();
+ if (!$defined(shapeType)) {
+ // Change figure ...
+ shapeType = this.getShapeType();
+ this._setShapeType(mindplot.model.TopicShape.ROUNDED_RECT, false);
+ }
+ var innerShape = this.getInnerShape();
+ innerShape.setVisibility(true);
+ },
+
+ _updatePositionOnChangeSize:function (oldSize, newSize) {
+
+ var xOffset = Math.round((newSize.width - oldSize.width) / 2);
+ var pos = this.getPosition();
+ if ($defined(pos)) {
+ if (pos.x > 0) {
+ pos.x = pos.x + xOffset;
+ } else {
+ pos.x = pos.x - xOffset;
+ }
+ this.setPosition(pos);
+ }
+ },
+
+ workoutIncomingConnectionPoint:function (sourcePosition) {
+ $assert(sourcePosition, 'sourcePoint can not be null');
+ var pos = this.getPosition();
+ var size = this.getSize();
+
+ var isAtRight = mindplot.util.Shape.isAtRight(sourcePosition, pos);
+ var result = mindplot.util.Shape.calculateRectConnectionPoint(pos, size, isAtRight);
+ if (this.getShapeType() == mindplot.model.TopicShape.LINE) {
+ result.y = result.y + (this.getSize().height / 2);
+ }
+
+ // Move a little the position...
+ var offset = mindplot.Topic.CONNECTOR_WIDTH / 2;
+ if (this.getPosition().x > 0) {
+ result.x = result.x + offset;
+ } else {
+ result.x = result.x - offset;
+ }
+
+ result.x = Math.ceil(result.x);
+ result.y = Math.ceil(result.y);
+ return result;
+
+ },
+
+ workoutOutgoingConnectionPoint:function (targetPosition) {
+ $assert(targetPosition, 'targetPoint can not be null');
+ var pos = this.getPosition();
+ var isAtRight = mindplot.util.Shape.isAtRight(targetPosition, pos);
+ var size = this.getSize();
+
+ var result;
+ if (this.getShapeType() == mindplot.model.TopicShape.LINE) {
+
+ result = new core.Point();
+ var groupPosition = this._elem2d.getPosition();
+ var innerShareSize = this.getInnerShape().getSize();
+
+ if (innerShareSize) {
+ var magicCorrectionNumber = 0.3;
+ if (!isAtRight) {
+ result.x = groupPosition.x + innerShareSize.width - magicCorrectionNumber;
+ } else {
+ result.x = groupPosition.x + magicCorrectionNumber;
+ }
+ result.y = groupPosition.y + innerShareSize.height;
+ } else {
+ // Hack: When the size has not being defined. This is because the node has not being added.
+ // Try to do our best ...
+ if (!isAtRight) {
+ result.x = pos.x + (size.width / 2);
+ } else {
+ result.x = pos.x - (size.width / 2);
+ }
+ result.y = pos.y + (size.height / 2);
+ }
+
+ } else {
+ result = mindplot.util.Shape.calculateRectConnectionPoint(pos, size, isAtRight, true);
+ }
+ return result;
+ }
+
});
\ No newline at end of file
diff --git a/mindplot/src/main/javascript/Topic.js b/mindplot/src/main/javascript/Topic.js
index 41c0c5ce..c428b312 100644
--- a/mindplot/src/main/javascript/Topic.js
+++ b/mindplot/src/main/javascript/Topic.js
@@ -29,7 +29,7 @@ mindplot.Topic = new Class({
// Position a topic ....
var pos = model.getPosition();
- if (pos != null && model.getType() == mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
+ if (pos != null && this.isCentralTopic()) {
this.setPosition(pos);
}
@@ -107,7 +107,7 @@ mindplot.Topic = new Class({
var model = this.getModel();
var result = model.getShapeType();
if (!$defined(result)) {
- result = this._defaultShapeType();
+ result = mindplot.TopicStyle.defaultShapeType(this);
}
return result;
},
@@ -134,7 +134,7 @@ mindplot.Topic = new Class({
this._setBorderColor(brColor, false);
// Define the pointer ...
- if (this.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE && !this.isReadOnly()) {
+ if (!this.isCentralTopic() && !this.isReadOnly()) {
this._innerShape.setCursor('move');
} else {
this._innerShape.setCursor('default');
@@ -259,7 +259,7 @@ mindplot.Topic = new Class({
_buildIconGroup:function () {
var textHeight = this.getTextShape().getFontHeight();
var result = new mindplot.IconGroup(this.getId(), textHeight);
- var padding = this._getInnerPadding();
+ var padding = mindplot.TopicStyle.getInnerPadding(this);
result.setPosition(padding, padding);
// Load topic features ...
@@ -334,7 +334,7 @@ mindplot.Topic = new Class({
if (!readOnly) {
// Propagate mouse events ...
- if (this.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
+ if (!this.isCentralTopic()) {
result.setCursor('move');
} else {
result.setCursor('default');
@@ -344,10 +344,6 @@ mindplot.Topic = new Class({
return result;
},
- _getInnerPadding:function () {
- throw "this must be implemented";
- },
-
setFontFamily:function (value, updateModel) {
var textShape = this.getTextShape();
textShape.setFontFamily(value);
@@ -395,7 +391,7 @@ mindplot.Topic = new Class({
var model = this.getModel();
var result = model.getFontWeight();
if (!$defined(result)) {
- var font = this._defaultFontStyle();
+ var font = mindplot.TopicStyle.defaultFontStyle(this);
result = font.weight;
}
return result;
@@ -405,7 +401,7 @@ mindplot.Topic = new Class({
var model = this.getModel();
var result = model.getFontFamily();
if (!$defined(result)) {
- var font = this._defaultFontStyle();
+ var font = mindplot.TopicStyle.defaultFontStyle(this);
result = font.font;
}
return result;
@@ -415,7 +411,7 @@ mindplot.Topic = new Class({
var model = this.getModel();
var result = model.getFontColor();
if (!$defined(result)) {
- var font = this._defaultFontStyle();
+ var font = mindplot.TopicStyle.defaultFontStyle(this);
result = font.color;
}
return result;
@@ -425,7 +421,7 @@ mindplot.Topic = new Class({
var model = this.getModel();
var result = model.getFontStyle();
if (!$defined(result)) {
- var font = this._defaultFontStyle();
+ var font = mindplot.TopicStyle.defaultFontStyle(this);
result = font.style;
}
return result;
@@ -435,7 +431,7 @@ mindplot.Topic = new Class({
var model = this.getModel();
var result = model.getFontSize();
if (!$defined(result)) {
- var font = this._defaultFontStyle();
+ var font = mindplot.TopicStyle.defaultFontStyle(this);
result = font.size;
}
return result;
@@ -452,7 +448,7 @@ mindplot.Topic = new Class({
_setText:function (text, updateModel) {
var textShape = this.getTextShape();
- textShape.setText(text == null ? this._defaultText() : text);
+ textShape.setText(text == null ? mindplot.TopicStyle.defaultText(this) : text);
if ($defined(updateModel) && updateModel) {
var model = this.getModel();
@@ -474,7 +470,7 @@ mindplot.Topic = new Class({
var model = this.getModel();
var result = model.getText();
if (!$defined(result)) {
- result = this._defaultText();
+ result = mindplot.TopicStyle.defaultText(this);
}
return result;
},
@@ -502,7 +498,7 @@ mindplot.Topic = new Class({
var model = this.getModel();
var result = model.getBackgroundColor();
if (!$defined(result)) {
- result = this._defaultBackgroundColor();
+ result = mindplot.TopicStyle.defaultBackgroundColor(this);
}
return result;
},
@@ -530,7 +526,7 @@ mindplot.Topic = new Class({
var model = this.getModel();
var result = model.getBorderColor();
if (!$defined(result)) {
- result = this._defaultBorderColor();
+ result = mindplot.TopicStyle.defaultBorderColor(this);
}
return result;
},
@@ -822,7 +818,7 @@ mindplot.Topic = new Class({
setBranchVisibility:function (value) {
var current = this;
var parent = this;
- while (parent != null && parent.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
+ while (parent != null && !parent.isCentralTopic()) {
current = parent;
parent = current.getParent();
}
@@ -1109,7 +1105,7 @@ mindplot.Topic = new Class({
var elem = this.get2DElement();
workspace.appendChild(elem);
if (!this.isInWorkspace()) {
- if (this.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
+ if (!this.isCentralTopic()) {
mindplot.EventBus.instance.fireEvent(mindplot.EventBus.events.NodeAdded, this.getModel());
}
@@ -1152,7 +1148,7 @@ mindplot.Topic = new Class({
var textHeight = textShape.getHeight();
textHeight = textHeight != 0 ? textHeight : 20;
- var topicPadding = this._getInnerPadding();
+ var topicPadding = mindplot.TopicStyle.getInnerPadding(this);
// Adjust the icon size to the size of the text ...
var iconGroup = this.getOrBuildIconGroup();
@@ -1214,7 +1210,13 @@ mindplot.Topic = new Class({
}
}
return result;
+ },
+
+ isCentralTopic:function () {
+ return this.getModel().getType() == mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE;
}
+
+
});
diff --git a/mindplot/src/main/javascript/TopicStyle.js b/mindplot/src/main/javascript/TopicStyle.js
new file mode 100644
index 00000000..43bb7b8f
--- /dev/null
+++ b/mindplot/src/main/javascript/TopicStyle.js
@@ -0,0 +1,132 @@
+/*
+ * 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.TopicStyle = new Class({
+ Static:{
+ _getStyles:function (topic) {
+ $assert(topic, "topic can not be null");
+
+ var result;
+ if (topic.isCentralTopic()) {
+ result = mindplot.TopicStyle.STYLES.CENTRAL_TOPIC;
+ } else {
+ var targetTopic = topic.getOutgoingConnectedTopic();
+ if ($defined(targetTopic)) {
+ if (targetTopic.isCentralTopic()) {
+ result = mindplot.TopicStyle.STYLES.MAIN_TOPIC;
+ } else {
+ result = mindplot.TopicStyle.STYLES.SUB_TOPIC;
+ }
+ } else {
+ result = mindplot.TopicStyle.STYLES.ISOLATED_TOPIC;
+ }
+ }
+ return result;
+ },
+
+ defaultText:function (topic) {
+ var msgKey = this._getStyles(topic).msgKey;
+ return $msg(msgKey);
+ },
+
+ defaultFontStyle:function (topic) {
+ return this._getStyles(topic).fontStyle;
+ },
+
+ defaultBackgroundColor:function (topic) {
+ return this._getStyles(topic).backgroundColor;
+ },
+
+ defaultBorderColor:function (topic) {
+ return this._getStyles(topic).borderColor;
+ },
+
+ getInnerPadding:function (topic) {
+ return this._getStyles(topic).innerPadding;
+ },
+
+ defaultShapeType:function (topic) {
+ return this._getStyles(topic).shapeType;
+ }
+
+ }
+});
+
+mindplot.TopicStyle.STYLES =
+{
+ CENTRAL_TOPIC:{
+ borderColor:'rgb(57,113,177)',
+ backgroundColor:'rgb(80,157,192)',
+ fontStyle:{
+ font:"Verdana",
+ size:10,
+ style:"normal",
+ weight:"bold",
+ color:"#ffffff"
+ },
+ msgKey:'CENTRAL_TOPIC',
+ innerPadding:11,
+ shapeType:mindplot.model.TopicShape.ROUNDED_RECT
+ },
+
+ MAIN_TOPIC:{
+ borderColor:'rgb(2,59,185)',
+ backgroundColor:'rgb(224,229,239)',
+ fontStyle:{
+ font:"Arial",
+ size:8,
+ style:"normal",
+ weight:"normal",
+ color:"rgb(82,92,97)"
+ },
+ msgKey:'MAIN_TOPIC',
+ innerPadding:3,
+ shapeType:mindplot.model.TopicShape.LINE
+
+ },
+
+ SUB_TOPIC:{
+ borderColor:'rgb(2,59,185)',
+ backgroundColor:'rgb(224,229,239)',
+ fontStyle:{
+ font:"Arial",
+ size:6,
+ style:"normal",
+ weight:"normal",
+ color:"rgb(82,92,97)"
+ },
+ msgKey:'SUB_TOPIC',
+ innerPadding:3,
+ shapeType:mindplot.model.TopicShape.LINE
+ },
+
+ ISOLATED_TOPIC:{
+ borderColor:'rgb(2,59,185)',
+ backgroundColor:'rgb(224,229,239)',
+ fontStyle:{
+ font:"Verdana",
+ size:8,
+ style:"normal",
+ weight:"normal",
+ color:"rgb(82,92,97)"
+ },
+ msgKey:'ISOLATED_TOPIC',
+ innerPadding:4,
+ shapeType:mindplot.model.TopicShape.LINE
+ }
+};
+
diff --git a/wise-webapp/src/main/java/com/wisemapping/importer/freemind/FreemindImporter.java b/wise-webapp/src/main/java/com/wisemapping/importer/freemind/FreemindImporter.java
index cb531067..676f0239 100755
--- a/wise-webapp/src/main/java/com/wisemapping/importer/freemind/FreemindImporter.java
+++ b/wise-webapp/src/main/java/com/wisemapping/importer/freemind/FreemindImporter.java
@@ -357,7 +357,7 @@ public class FreemindImporter
* 3 -> 2
* 4 -> 4
*/
- private int calcFirstLevelOrder(@NotNull List