diff --git a/mindplot/pom.xml b/mindplot/pom.xml
index 1098a977..2c29a931 100644
--- a/mindplot/pom.xml
+++ b/mindplot/pom.xml
@@ -68,7 +68,6 @@
-
@@ -82,7 +81,8 @@
-
+
-
+
@@ -105,6 +106,7 @@
+
@@ -114,7 +116,7 @@
-
+
@@ -123,17 +125,11 @@
+ files="commands/ChangeFeatureToTopicCommand.js"/>
+ files="commands/RemoveFeatureFromTopicCommand.js"/>
-
-
-
+ files="commands/AddFeatureToTopicCommand.js"/>
+
diff --git a/mindplot/src/main/javascript/ActionDispatcher.js b/mindplot/src/main/javascript/ActionDispatcher.js
index fd23aa00..6d8dfb36 100644
--- a/mindplot/src/main/javascript/ActionDispatcher.js
+++ b/mindplot/src/main/javascript/ActionDispatcher.js
@@ -23,18 +23,6 @@ mindplot.ActionDispatcher = new Class({
$assert(commandContext, "commandContext can not be null");
},
- addIconToTopic: function(topicId, iconType) {
- throw "method must be implemented.";
- },
-
- changeLinkToTopic: function(topicId, url) {
- throw "method must be implemented.";
- },
-
- changeNoteToTopic: function(topicId, text) {
- throw "method must be implemented.";
- },
-
connectByRelation: function(model, mindmap) {
throw "method must be implemented.";
},
@@ -59,18 +47,6 @@ mindplot.ActionDispatcher = new Class({
throw "method must be implemented.";
},
- removeIconFromTopic: function(topicId, iconModel) {
- throw "method must be implemented.";
- },
-
- removeLinkFromTopic: function(topicId) {
- throw "method must be implemented.";
- },
-
- removeNoteFromTopic: function(topicId) {
- throw "method must be implemented.";
- },
-
changeFontFamilyToTopic: function(topicIds, fontFamily) {
throw "method must be implemented.";
},
@@ -109,9 +85,19 @@ mindplot.ActionDispatcher = new Class({
shrinkBranch : function(topicsIds, collapse) {
throw "method must be implemented.";
+ },
+
+ addFeatureToTopic : function(topicId, type, attributes) {
+ throw "method must be implemented.";
+ },
+
+ changeFeatureToTopic : function(topicId, featureId, attributes) {
+ throw "method must be implemented.";
+ },
+
+ removeFeatureFromTopic : function(topicId, featureId) {
+ throw "method must be implemented.";
}
-
-
});
mindplot.ActionDispatcher.setInstance = function(dispatcher) {
diff --git a/mindplot/src/main/javascript/Command.js b/mindplot/src/main/javascript/Command.js
index 5235deb7..21bcc4ae 100644
--- a/mindplot/src/main/javascript/Command.js
+++ b/mindplot/src/main/javascript/Command.js
@@ -22,14 +22,17 @@ mindplot.Command = new Class(
{
this._id = mindplot.Command._nextUUID();
},
+
execute: function(commandContext)
{
throw "execute must be implemented.";
},
+
undoExecute: function(commandContext)
{
throw "undo must be implemented.";
},
+
getId:function()
{
return this._id;
diff --git a/mindplot/src/main/javascript/Designer.js b/mindplot/src/main/javascript/Designer.js
index 5215018a..84b3ed40 100644
--- a/mindplot/src/main/javascript/Designer.js
+++ b/mindplot/src/main/javascript/Designer.js
@@ -422,7 +422,7 @@ mindplot.Designer = new Class({
$assert(mindmapModel, "mindmapModel can not be null");
this._mindmap = mindmapModel;
-// try {
+ try {
// Init layout manager ...
var size = {width:25,height:25};
var layoutManager = new mindplot.layout.LayoutManager(mindmapModel.getCentralTopic().getId(), size);
@@ -446,7 +446,6 @@ mindplot.Designer = new Class({
nodeGraph.setBranchVisibility(true);
}
-
var relationships = mindmapModel.getRelationships();
for (var j = 0; j < relationships.length; j++) {
this._relationshipModelToRelationship(relationships[j]);
@@ -460,9 +459,9 @@ mindplot.Designer = new Class({
mindplot.EventBus.instance.fireEvent(mindplot.EventBus.events.DoLayout);
this.fireEvent('loadSuccess');
-// } catch(e) {
-// this.fireEvent('loadError',e);
-// }
+ } catch(e) {
+ this.fireEvent('loadError', e);
+ }
},
getMindmap : function() {
@@ -707,7 +706,7 @@ mindplot.Designer = new Class({
addIconType : function(iconType) {
var topicsIds = this.getModel().filterTopicsIds();
if (topicsIds.length > 0) {
- this._actionDispatcher.addIconToTopic(topicsIds[0], iconType);
+ this._actionDispatcher.addFeatureToTopic(topicsIds[0], mindplot.TopicFeature.Icon.id, {id:iconType});
}
},
diff --git a/mindplot/src/main/javascript/IconGroup.js b/mindplot/src/main/javascript/IconGroup.js
index ce2faf29..82879c22 100644
--- a/mindplot/src/main/javascript/IconGroup.js
+++ b/mindplot/src/main/javascript/IconGroup.js
@@ -83,10 +83,10 @@ mindplot.IconGroup = new Class({
_findIconFromModel : function(iconModel) {
var result = null;
- this._icons.each(function(el) {
- var elModel = el.getModel();
- if (result == null && $defined(elModel.isIconModel) && elModel.getId() == iconModel.getId()) {
- result = el;
+ this._icons.each(function(icon) {
+ var elModel = icon.getModel();
+ if (elModel.getId() == iconModel.getId()) {
+ result = icon;
}
}, this);
@@ -110,6 +110,13 @@ mindplot.IconGroup = new Class({
this._removeIcon(icon);
},
+ removeIconByModel : function(featureModel) {
+ $assert(featureModel, "featureModel can not be null");
+
+ var icon = this._findIconFromModel(featureModel);
+ this._removeIcon(icon);
+ },
+
_removeIcon : function(icon) {
$assert(icon, "icon can not be null");
diff --git a/mindplot/src/main/javascript/ImageIcon.js b/mindplot/src/main/javascript/ImageIcon.js
index 6f44ed4b..0f21d438 100644
--- a/mindplot/src/main/javascript/ImageIcon.js
+++ b/mindplot/src/main/javascript/ImageIcon.js
@@ -23,7 +23,7 @@ mindplot.ImageIcon = new Class({
$assert(topic, 'topic can not be null');
this._topicId = topic.getId();
- this._iconModel = iconModel;
+ this._featureModel = iconModel;
// @Todo: Read only must be a property ...
this._readOnly = designer._readOnly;
@@ -57,7 +57,7 @@ mindplot.ImageIcon = new Class({
},
getModel : function() {
- return this._iconModel;
+ return this._featureModel;
},
_getNextFamilyIconId : function(iconId) {
@@ -98,21 +98,39 @@ mindplot.ImageIcon = new Class({
return result;
},
- getId : function() {
- return this._iconType;
- },
-
- getUiId : function() {
- return this._uiId;
- },
-
remove : function() {
var actionDispatcher = mindplot.ActionDispatcher.getInstance();
- actionDispatcher.removeIconFromTopic(this._topicId, this._iconModel);
+ var featureId = this._featureModel.getId();
+ var topicId = this._topicId;
+ actionDispatcher.removeFeatureFromTopic(topicId, featureId);
}
});
-mindplot.ImageIcon.prototype.ICON_FAMILIES = [{"id": "face", "icons" : ["face_plain","face_sad","face_crying","face_smile","face_surprise","face_wink"]},{"id": "funy", "icons" : ["funy_angel","funy_devilish","funy_glasses","funy_grin","funy_kiss","funy_monkey"]},{"id": "conn", "icons" : ["conn_connect","conn_disconnect"]},{"id": "sport", "icons" : ["sport_basketball","sport_football","sport_golf","sport_raquet","sport_shuttlecock","sport_soccer","sport_tennis"]},{"id": "bulb", "icons" : ["bulb_light_on","bulb_light_off"]},{"id": "thumb", "icons" : ["thumb_thumb_up","thumb_thumb_down"]},{"id": "tick", "icons" : ["tick_tick","tick_cross"]},{"id": "onoff", "icons" : ["onoff_clock","onoff_clock_red","onoff_add","onoff_delete","onoff_status_offline","onoff_status_online"]},{"id": "money", "icons" : ["money_money","money_dollar","money_euro","money_pound","money_yen","money_coins","money_ruby"]},{"id": "time", "icons" : ["time_calendar","time_clock","time_hourglass"]},{"id": "chart", "icons" : ["chart_bar","chart_line","chart_curve","chart_pie","chart_organisation"]},{"id": "sign", "icons" : ["sign_warning","sign_info","sign_stop","sign_help","sign_cancel"]},{"id": "hard", "icons" : ["hard_cd","hard_computer","hard_controller","hard_driver_disk","hard_ipod","hard_keyboard","hard_mouse","hard_printer"]},{"id": "soft", "icons" : ["soft_bug","soft_cursor","soft_database_table","soft_database","soft_feed","soft_folder_explore","soft_rss","soft_penguin"]},{"id": "arrow", "icons" : ["arrow_up","arrow_down","arrow_left","arrow_right"]},{"id": "arrowc", "icons" : ["arrowc_rotate_anticlockwise","arrowc_rotate_clockwise","arrowc_turn_left","arrowc_turn_right"]},{"id": "people", "icons" : ["people_group","people_male1","people_male2","people_female1","people_female2"]},{"id": "mail", "icons" : ["mail_envelop","mail_mailbox","mail_edit","mail_list"]},{"id": "flag", "icons" : ["flag_blue","flag_green","flag_orange","flag_pink","flag_purple","flag_yellow"]},{"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": "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": "weather", "icons" : ["weather_clear-night","weather_clear","weather_few-clouds-night","weather_few-clouds","weather_overcast","weather_severe-alert","weather_showers-scattered","weather_showers","weather_snow","weather_storm"]}];
+mindplot.ImageIcon.prototype.ICON_FAMILIES = [
+ {"id": "face", "icons" : ["face_plain","face_sad","face_crying","face_smile","face_surprise","face_wink"]},
+ {"id": "funy", "icons" : ["funy_angel","funy_devilish","funy_glasses","funy_grin","funy_kiss","funy_monkey"]},
+ {"id": "conn", "icons" : ["conn_connect","conn_disconnect"]},
+ {"id": "sport", "icons" : ["sport_basketball","sport_football","sport_golf","sport_raquet","sport_shuttlecock","sport_soccer","sport_tennis"]},
+ {"id": "bulb", "icons" : ["bulb_light_on","bulb_light_off"]},
+ {"id": "thumb", "icons" : ["thumb_thumb_up","thumb_thumb_down"]},
+ {"id": "tick", "icons" : ["tick_tick","tick_cross"]},
+ {"id": "onoff", "icons" : ["onoff_clock","onoff_clock_red","onoff_add","onoff_delete","onoff_status_offline","onoff_status_online"]},
+ {"id": "money", "icons" : ["money_money","money_dollar","money_euro","money_pound","money_yen","money_coins","money_ruby"]},
+ {"id": "time", "icons" : ["time_calendar","time_clock","time_hourglass"]},
+ {"id": "chart", "icons" : ["chart_bar","chart_line","chart_curve","chart_pie","chart_organisation"]},
+ {"id": "sign", "icons" : ["sign_warning","sign_info","sign_stop","sign_help","sign_cancel"]},
+ {"id": "hard", "icons" : ["hard_cd","hard_computer","hard_controller","hard_driver_disk","hard_ipod","hard_keyboard","hard_mouse","hard_printer"]},
+ {"id": "soft", "icons" : ["soft_bug","soft_cursor","soft_database_table","soft_database","soft_feed","soft_folder_explore","soft_rss","soft_penguin"]},
+ {"id": "arrow", "icons" : ["arrow_up","arrow_down","arrow_left","arrow_right"]},
+ {"id": "arrowc", "icons" : ["arrowc_rotate_anticlockwise","arrowc_rotate_clockwise","arrowc_turn_left","arrowc_turn_right"]},
+ {"id": "people", "icons" : ["people_group","people_male1","people_male2","people_female1","people_female2"]},
+ {"id": "mail", "icons" : ["mail_envelop","mail_mailbox","mail_edit","mail_list"]},
+ {"id": "flag", "icons" : ["flag_blue","flag_green","flag_orange","flag_pink","flag_purple","flag_yellow"]},
+ {"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": "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": "weather", "icons" : ["weather_clear-night","weather_clear","weather_few-clouds-night","weather_few-clouds","weather_overcast","weather_severe-alert","weather_showers-scattered","weather_showers","weather_snow","weather_storm"]}
+];
diff --git a/mindplot/src/main/javascript/ShrinkConnector.js b/mindplot/src/main/javascript/ShrinkConnector.js
index d6f200fb..1f177314 100644
--- a/mindplot/src/main/javascript/ShrinkConnector.js
+++ b/mindplot/src/main/javascript/ShrinkConnector.js
@@ -19,7 +19,7 @@
mindplot.ShirinkConnector = new Class({
initialize: function(topic) {
- var ellipse = new web2d.Elipse(mindplot.TextTopic.prototype.INNER_RECT_ATTRIBUTES);
+ var ellipse = new web2d.Elipse(mindplot.Topic.prototype.INNER_RECT_ATTRIBUTES);
this._ellipse = ellipse;
ellipse.setFill('rgb(62,118,179)');
diff --git a/mindplot/src/main/javascript/StandaloneActionDispatcher.js b/mindplot/src/main/javascript/StandaloneActionDispatcher.js
index f2520a2e..0c6aea88 100644
--- a/mindplot/src/main/javascript/StandaloneActionDispatcher.js
+++ b/mindplot/src/main/javascript/StandaloneActionDispatcher.js
@@ -28,26 +28,12 @@ mindplot.StandaloneActionDispatcher = new Class({
this._actionRunner.hasBeenChanged();
},
- addIconToTopic: function(topicId, iconType) {
- var command = new mindplot.commands.AddIconToTopicCommand(topicId, iconType);
- this.execute(command);
- },
-
- changeLinkToTopic: function(topicId, url) {
- var command = new mindplot.commands.ChangeLinkToTopicCommand(topicId, url);
- this.execute(command);
- },
addTopic:function(nodeModel, parentTopicId, animated) {
var command = new mindplot.commands.AddTopicCommand(nodeModel, parentTopicId, animated);
this.execute(command);
},
- changeNoteToTopic: function(topicId, text) {
- var command = new mindplot.commands.ChangeNoteToTopicCommand(topicId, text);
- this.execute(command);
- },
-
connectByRelation: function(model) {
var command = new mindplot.commands.AddRelationshipCommand(model);
this.execute(command);
@@ -82,20 +68,6 @@ mindplot.StandaloneActionDispatcher = new Class({
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) {
@@ -242,6 +214,21 @@ mindplot.StandaloneActionDispatcher = new Class({
this.execute(command, false);
},
+ addFeatureToTopic : function(topicId, featureType, attributes) {
+ var command = new mindplot.commands.AddFeatureToTopicCommand(topicId, featureType, attributes);
+ this.execute(command);
+ },
+
+ changeFeatureToTopic : function(topicId, featureId, attributes) {
+ var command = new mindplot.commands.ChangeFeatureToTopicCommand(topicId, featureId, attributes);
+ this.execute(command);
+ },
+
+ removeFeatureFromTopic : function(topicId, featureId) {
+ var command = new mindplot.commands.RemoveFeatureFromTopicCommand(topicId, featureId);
+ this.execute(command);
+ },
+
execute:function(command) {
this._actionRunner.execute(command);
mindplot.EventBus.instance.fireEvent(mindplot.EventBus.events.DoLayout);
diff --git a/mindplot/src/main/javascript/TextTopic.js b/mindplot/src/main/javascript/TextTopic.js
deleted file mode 100644
index b3c825a2..00000000
--- a/mindplot/src/main/javascript/TextTopic.js
+++ /dev/null
@@ -1,590 +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.TextTopic = new Class({
- Extends:mindplot.Topic,
- initialize : function(model, options) {
- this._textEditor = new mindplot.MultilineTextEditor(this);
- this.parent(model, options);
- },
-
- _registerEvents : function() {
-
- this.parent();
- this.addEvent('dblclick', function (event) {
- this._textEditor.show();
- event.stopPropagation(true);
- }.bind(this));
-
- this._textEditor.addEvent('input', function(event, text) {
- var textShape = this.getTextShape();
-// var oldText = textShape.getText();
-
-// this._setText(text, false);
- // @Todo: I must resize, no change the position ...
-// textShape.setText(oldText);
- }.bind(this));
-
- },
-
- setShapeType : function(type) {
- this._setShapeType(type, true);
-
- },
-
- _setShapeType : function(type, updateModel) {
- // Remove inner shape figure ...
- var model = this.getModel();
- if ($defined(updateModel) && updateModel) {
- model.setShapeType(type);
- }
-
- var oldInnerShape = this.getInnerShape();
- if (oldInnerShape != null) {
-
- this._removeInnerShape();
-
- // Create a new one ...
- var innerShape = this.getInnerShape();
-
- // Update figure size ...
- var size = model.getSize();
- this.setSize(size, true);
-
- var group = this.get2DElement();
- group.appendChild(innerShape);
-
- // Move text to the front ...
- var text = this.getTextShape();
- text.moveToFront();
-
- //Move iconGroup to front ...
- var iconGroup = this.getIconGroup();
- if ($defined(iconGroup)) {
- iconGroup.moveToFront();
- }
- //Move connector to front
- var connector = this.getShrinkConnector();
- if ($defined(connector)) {
- connector.moveToFront();
- }
- }
-
- },
-
- getShapeType : function() {
- var model = this.getModel();
- var result = model.getShapeType();
- if (!$defined(result)) {
- result = this._defaultShapeType();
- }
- return result;
- },
-
- getInnerShape : function() {
- if (!$defined(this._innerShape)) {
- // Create inner box.
- this._innerShape = this.buildShape(mindplot.TextTopic.INNER_RECT_ATTRIBUTES);
-
- // Update bgcolor ...
- var bgColor = this.getBackgroundColor();
- this._setBackgroundColor(bgColor, false);
-
- // Update border color ...
- var brColor = this.getBorderColor();
- this._setBorderColor(brColor, false);
-
- // Define the pointer ...
- if (this.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
- this._innerShape.setCursor('move');
- } else {
- this._innerShape.setCursor('default');
- }
-
- }
- return this._innerShape;
- },
-
- buildShape : function(attributes, type) {
- var result;
- if (!$defined(type)) {
- type = this.getShapeType();
- }
-
- if (type == mindplot.model.INodeModel.SHAPE_TYPE_RECT) {
- result = new web2d.Rect(0, attributes);
- }
- else if (type == mindplot.model.INodeModel.SHAPE_TYPE_ELIPSE) {
- result = new web2d.Rect(0.9, attributes);
- }
- else if (type == mindplot.model.INodeModel.SHAPE_TYPE_ROUNDED_RECT) {
- result = new web2d.Rect(0.3, attributes);
- }
- else if (type == mindplot.model.INodeModel.SHAPE_TYPE_LINE) {
- result = new web2d.Line({strokeColor:"#495879",strokeWidth:1});
- result.setSize = function(width, height) {
- this.size = {width:width, height:height};
- result.setFrom(0, height);
- result.setTo(width, height);
-
- // Lines will have the same color of the default connection lines...
- var stokeColor = mindplot.ConnectionLine.getStrokeColor();
- result.setStroke(1, 'solid', stokeColor);
- };
-
- result.getSize = function() {
- return this.size;
- };
-
- result.setPosition = function() {
- };
-
- var setStrokeFunction = result.setStroke;
- result.setFill = function() {
-
- };
-
- result.setStroke = function() {
-
- };
- }
- else {
- $assert(false, "Unsupported figure type:" + type);
- }
- result.setPosition(0, 0);
- return result;
- },
-
-
- getOuterShape : function() {
- if (!$defined(this._outerShape)) {
- var rect = this.buildShape(mindplot.Topic.OUTER_SHAPE_ATTRIBUTES, mindplot.model.INodeModel.SHAPE_TYPE_ROUNDED_RECT);
- rect.setPosition(-2, -3);
- rect.setOpacity(0);
- this._outerShape = rect;
- }
-
- return this._outerShape;
- },
-
- getTextShape : function() {
- if (!$defined(this._text)) {
- this._text = this._buildTextShape(false);
-
- // Set Text ...
- var text = this.getText();
- this._setText(text, false);
- }
- return this._text;
- },
-
-
- _buildTextShape : function(readOnly) {
- var result = new web2d.Text();
- var family = this.getFontFamily();
- var size = this.getFontSize();
- var weight = this.getFontWeight();
- var style = this.getFontStyle();
- result.setFont(family, size, style, weight);
-
- var color = this.getFontColor();
- result.setColor(color);
-
- if (!readOnly) {
- // Propagate mouse events ...
- if (this.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
- result.setCursor('move');
- } else {
- result.setCursor('default');
- }
- }
-
- return result;
- },
-
- _getInnerPadding : function() {
- throw "this must be implemented";
- },
-
- setFontFamily : function(value, updateModel) {
- var textShape = this.getTextShape();
- textShape.setFontFamily(value);
- if ($defined(updateModel) && updateModel) {
- var model = this.getModel();
- model.setFontFamily(value);
- }
- this._adjustShapes(updateModel);
- },
-
- setFontSize : function(value, updateModel) {
-
- var textShape = this.getTextShape();
- textShape.setSize(value);
-
- if ($defined(updateModel) && updateModel) {
- var model = this.getModel();
- model.setFontSize(value);
- }
- this._adjustShapes(updateModel);
-
- },
-
- setFontStyle : function(value, updateModel) {
- var textShape = this.getTextShape();
- textShape.setStyle(value);
- if ($defined(updateModel) && updateModel) {
- var model = this.getModel();
- model.setFontStyle(value);
- }
- this._adjustShapes(updateModel);
- },
-
- setFontWeight : function(value, updateModel) {
- var textShape = this.getTextShape();
- textShape.setWeight(value);
- if ($defined(updateModel) && updateModel) {
- var model = this.getModel();
- model.setFontWeight(value);
- }
- this._adjustShapes();
- },
-
- getFontWeight : function() {
- var model = this.getModel();
- var result = model.getFontWeight();
- if (!$defined(result)) {
- var font = this._defaultFontStyle();
- result = font.weight;
- }
- return result;
- },
-
- getFontFamily : function() {
- var model = this.getModel();
- var result = model.getFontFamily();
- if (!$defined(result)) {
- var font = this._defaultFontStyle();
- result = font.font;
- }
- return result;
- },
-
- getFontColor : function() {
- var model = this.getModel();
- var result = model.getFontColor();
- if (!$defined(result)) {
- var font = this._defaultFontStyle();
- result = font.color;
- }
- return result;
- },
-
- getFontStyle : function() {
- var model = this.getModel();
- var result = model.getFontStyle();
- if (!$defined(result)) {
- var font = this._defaultFontStyle();
- result = font.style;
- }
- return result;
- },
-
- getFontSize : function() {
- var model = this.getModel();
- var result = model.getFontSize();
- if (!$defined(result)) {
- var font = this._defaultFontStyle();
- result = font.size;
- }
- return result;
- },
-
- setFontColor : function(value, updateModel) {
- var textShape = this.getTextShape();
- textShape.setColor(value);
- if ($defined(updateModel) && updateModel) {
- var model = this.getModel();
- model.setFontColor(value);
- }
- },
-
- _setText : function(text, updateModel) {
- var textShape = this.getTextShape();
- textShape.setText(text == null ? this._defaultText() : text);
-
- if ($defined(updateModel) && updateModel) {
- var model = this.getModel();
- model.setText(text);
- }
- },
-
- setText : function(text) {
- // Avoid empty nodes ...
- if (text.trim().length == 0) {
- text = null;
- }
-
- this._setText(text, true);
- this._adjustShapes();
- },
-
- getText : function() {
- var model = this.getModel();
- var result = model.getText();
- if (!$defined(result)) {
- result = this._defaultText();
- }
- return result;
- },
-
- setBackgroundColor : function(color) {
- this._setBackgroundColor(color, true);
- },
-
- _setBackgroundColor : function(color, updateModel) {
- var innerShape = this.getInnerShape();
- innerShape.setFill(color);
-
- var connector = this.getShrinkConnector();
- connector.setFill(color);
-
- if ($defined(updateModel) && updateModel) {
- var model = this.getModel();
- model.setBackgroundColor(color);
- }
- },
-
- getBackgroundColor : function() {
- var model = this.getModel();
- var result = model.getBackgroundColor();
- if (!$defined(result)) {
- result = this._defaultBackgroundColor();
- }
- return result;
- },
-
- setBorderColor : function(color) {
- this._setBorderColor(color, true);
- },
-
- _setBorderColor : function(color, updateModel) {
- var innerShape = this.getInnerShape();
- innerShape.setAttribute('strokeColor', color);
-
- var connector = this.getShrinkConnector();
- connector.setAttribute('strokeColor', color);
-
-
- if ($defined(updateModel) && updateModel) {
- var model = this.getModel();
- model.setBorderColor(color);
- }
- },
-
- getBorderColor : function() {
- var model = this.getModel();
- var result = model.getBorderColor();
- if (!$defined(result)) {
- result = this._defaultBorderColor();
- }
- return result;
- },
-
- _buildShape : function() {
- var groupAttributes = {width: 100, height:100,coordSizeWidth:100,coordSizeHeight:100};
- var group = new web2d.Group(groupAttributes);
- this._set2DElement(group);
-
- // Shape must be build based on the model width ...
- var outerShape = this.getOuterShape();
- var innerShape = this.getInnerShape();
- var textShape = this.getTextShape();
- var shrinkConnector = this.getShrinkConnector();
-
- // Add to the group ...
- group.appendChild(outerShape);
- group.appendChild(innerShape);
- group.appendChild(textShape);
-
- // Update figure size ...
- var model = this.getModel();
- if (model.getLinks().length != 0 || model.getNotes().length != 0 || model.getIcons().length != 0) {
- this.getOrBuildIconGroup();
- }
-
- if (this.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
- shrinkConnector.addToWorkspace(group);
- }
-
- // Register listeners ...
- this._registerDefaultListenersToElement(group, this);
- },
-
-
- showTextEditor : function(text) {
- this._textEditor.show(text);
- },
-
- showLinkEditor : function() {
-
- var topicId = this.getId();
- var model = this.getModel();
- var editorModel = {
- getValue : function() {
- var links = model.getLinks();
- var result;
- if (links.length > 0)
- result = links[0].getUrl();
-
- return result;
- },
-
- setValue : function(value) {
- var dispatcher = mindplot.ActionDispatcher.getInstance();
- if (!$defined(value)) {
- dispatcher.removeLinkFromTopic(topicId);
- }
- else {
- dispatcher.changeLinkToTopic(topicId, value);
- }
- }
- };
-
- this.closeEditors();
- var editor = new mindplot.widget.LinkEditor(editorModel);
- editor.show();
- },
-
-
- closeEditors : function() {
- this._textEditor.close(true);
- },
-
- /**
- * Point: references the center of the rect shape.!!!
- */
- setPosition : function(point) {
- $assert(point, "position can not be null");
- point.x = Math.ceil(point.x);
- point.y = Math.ceil(point.y);
-
- // Update model's position ...
- var model = this.getModel();
- model.setPosition(point.x, point.y);
-
- // Elements are positioned in the center.
- // All topic element must be positioned based on the innerShape.
- var size = this.getSize();
-
- var cx = point.x - (size.width / 2);
- var cy = point.y - (size.height / 2);
-
- // Update visual position.
- this._elem2d.setPosition(cx, cy);
-
- // Update connection lines ...
- this._updateConnectionLines();
-
- // Check object state.
- this.invariant();
- },
-
- getOutgoingConnectedTopic : function() {
- var result = null;
- var line = this.getOutgoingLine();
- if ($defined(line)) {
- result = line.getTargetTopic();
- }
- return result;
- },
-
- _setTopicVisibility : function(value) {
- this.parent(value);
-
- var textShape = this.getTextShape();
- textShape.setVisibility(value);
-
- },
-
- setOpacity : function(opacity) {
- this.parent();
-
- var textShape = this.getTextShape();
- textShape.setOpacity(opacity);
- },
-
- _updatePositionOnChangeSize : function(oldSize, newSize) {
- $assert(false, "this method must be overwrited.");
- },
-
- createDragNode : function(layoutManager) {
- var result = this.parent(layoutManager);
-
- // Is the node already connected ?
- var targetTopic = this.getOutgoingConnectedTopic();
- if ($defined(targetTopic)) {
- result.connectTo(targetTopic);
- result.setVisibility(false);
- }
-
- // If a drag node is create for it, let's hide the editor.
- this._textEditor.close();
-
- return result;
- },
-
- _adjustShapes : function() {
- if (this._isInWorkspace) {
- var textShape = this.getTextShape();
- var textWidth = textShape.getWidth();
-
- var textHeight = textShape.getHeight();
- textHeight = textHeight != 0 ? textHeight : 20;
-
- var topicPadding = this._getInnerPadding();
-
- // Adjust the icon size to the size of the text ...
- var iconGroup = this.getOrBuildIconGroup();
- var fontHeight = this.getTextShape().getFontHeight();
- iconGroup.setPosition(topicPadding, topicPadding);
- iconGroup.seIconSize(fontHeight, fontHeight);
-
- // Add a extra padding between the text and the icons
- var iconsWidth = iconGroup.getSize().width;
- if (iconsWidth != 0) {
-
- iconsWidth = iconsWidth + (textHeight / 4);
- }
-
- var height = textHeight + (topicPadding * 2);
- var width = textWidth + iconsWidth + (topicPadding * 2);
-
- this.setSize({width:width,height:height});
-
- // Position node ...
- textShape.setPosition(topicPadding + iconsWidth, topicPadding);
- }
- }
-
-});
-
-mindplot.TextTopic.INNER_RECT_ATTRIBUTES = {stroke:'2 solid'};
-
-
-
diff --git a/mindplot/src/main/javascript/Topic.js b/mindplot/src/main/javascript/Topic.js
index 93e103d9..cc9c2a41 100644
--- a/mindplot/src/main/javascript/Topic.js
+++ b/mindplot/src/main/javascript/Topic.js
@@ -260,129 +260,55 @@ mindplot.Topic = new Class({
var padding = this._getInnerPadding();
result.setPosition(padding, padding);
+ // Load topic features ...
var model = this.getModel();
-
- //Icons
- var icons = model.getIcons();
- for (var i = 0; i < icons.length; i++) {
- // Update model identifier ...
- var iconModel = icons[i];
- var icon = new mindplot.ImageIcon(this, iconModel);
- result.addIcon(icon, true);
- }
-
- //Links
- var links = model.getLinks();
- for (var i = 0; i < links.length; i++) {
- this._link = new mindplot.LinkIcon(this, links[i]);
- result.addIcon(this._link);
- }
-
- //Notes
- var notes = model.getNotes();
- for (var j = 0; j < notes.length; j++) {
- this._note = new mindplot.NoteIcon(this, notes[j]);
- result.addIcon(this._note);
+ var featuresModel = model.getFeatures();
+ for (var i = 0; i < featuresModel.length; i++) {
+ var featureModel = featuresModel[i];
+ var icon = mindplot.TopicFeature.createIcon(this, featureModel);
+ result.addIcon(icon, featureModel.getType() == "icon"); // @Todo: Remove hack ...
}
return result;
},
- addLink : function(url) {
- var iconGroup = this.getOrBuildIconGroup();
- var model = this.getModel();
- var linkModel = model.createLink(url);
- model.addLink(linkModel);
-
- this._link = new mindplot.LinkIcon(this, linkModel);
- iconGroup.addIcon(this._link);
-
- this._adjustShapes();
- },
-
- addNote : function(text) {
- var iconGroup = this.getOrBuildIconGroup();
- var model = this.getModel();
-
- var noteModel = model.createNote(text);
- model.addNote(noteModel);
-
- this._note = new mindplot.NoteIcon(this, noteModel);
- iconGroup.addIcon(this._note);
-
- this._adjustShapes();
- },
-
- addIcon : function(iconType) {
+ addFeature : function(type, attributes) {
var iconGroup = this.getOrBuildIconGroup();
this.closeEditors();
var model = this.getModel();
// Update model ...
- var iconModel = model.createIcon(iconType);
- model.addIcon(iconModel);
+ var feature = model.createFeature(type, attributes);
+ model.addFeature(feature);
+
+ var result = mindplot.TopicFeature.createIcon(this, feature);
+ iconGroup.addIcon(result, type == "icon"); // @Todo: Remove hack ...
- var imageIcon = new mindplot.ImageIcon(this, iconModel);
- iconGroup.addIcon(imageIcon, true);
this._adjustShapes();
- return imageIcon;
+ return result;
},
- removeIcon : function(iconModel) {
+ findFeatureById : function(id) {
+ var model = this.getModel();
+ return model.findFeatureById(id);
+ },
+
+ removeFeature : function(featureModel) {
+ $assert(featureModel, "featureModel could not be null");
//Removing the icon from MODEL
var model = this.getModel();
- model.removeIcon(iconModel);
+ model.removeFeature(featureModel);
//Removing the icon from UI
var iconGroup = this.getIconGroup();
if ($defined(iconGroup)) {
- iconGroup.removeIcon(iconModel);
+ iconGroup.removeIconByModel(featureModel);
}
this._adjustShapes();
},
- removeLink : function() {
- // Update model ...
- var model = this.getModel();
- var links = model.getLinks();
- model._removeLink(links[0]);
-
- // Remove UI ...
- var iconGroup = this.getIconGroup();
- if ($defined(iconGroup)) {
- iconGroup.removeIconByUrl(mindplot.LinkIcon.IMAGE_URL);
- }
-
- this._link = null;
- this._adjustShapes();
- },
-
- removeNote : function() {
- // Update model ...
- var model = this.getModel();
- var notes = model.getNotes();
- model.removeNote(notes[0]);
-
- // Remove UI ...
- var iconGroup = this.getIconGroup();
- if ($defined(iconGroup)) {
- iconGroup.removeIconByUrl(mindplot.NoteIcon.IMAGE_URL);
- }
-
- this._note = null;
- this._adjustShapes();
- },
-
- hasNote : function() {
- return this.getModel().getNotes().length != 0;
- },
-
- hasLink : function() {
- return this.getModel().getLinks().length != 0;
- },
-
connectByRelation : function(relationship) {
this._relationships.push(relationship);
},
@@ -624,7 +550,7 @@ mindplot.Topic = new Class({
// Update figure size ...
var model = this.getModel();
- if (model.getLinks().length != 0 || model.getNotes().length != 0 || model.getIcons().length != 0) {
+ if (model.getFeatures().length != 0) {
this.getOrBuildIconGroup();
}
@@ -728,7 +654,7 @@ mindplot.Topic = new Class({
var model = this.getModel();
var editorModel = {
getValue : function() {
- var notes = model.getNotes();
+ var notes = model.findFeatureByType(mindplot.TopicFeature.Note.id);
var result;
if (notes.length > 0)
result = notes[0].getText();
@@ -738,11 +664,18 @@ mindplot.Topic = new Class({
setValue : function(value) {
var dispatcher = mindplot.ActionDispatcher.getInstance();
+ var notes = model.findFeatureByType(mindplot.TopicFeature.Note.id);
if (!$defined(value)) {
- dispatcher.removeNoteFromTopic(topicId);
+ var featureId = notes[0].getId();
+ dispatcher.removeFeatureFromTopic(topicId, featureId);
}
else {
- dispatcher.changeNoteToTopic(topicId, value);
+ if (notes.length > 0) {
+ dispatcher.changeFeatureToTopic(topicId, notes[0].getId(), {text:value});
+ }
+ else {
+ dispatcher.addFeatureToTopic(topicId, mindplot.TopicFeature.Note.id, {text:value});
+ }
}
}
};
@@ -757,7 +690,7 @@ mindplot.Topic = new Class({
var model = this.getModel();
var editorModel = {
getValue : function() {
- var links = model.getLinks();
+ var links = model.findFeatureByType(mindplot.TopicFeature.Link.id);
var result;
if (links.length > 0)
result = links[0].getUrl();
@@ -767,11 +700,18 @@ mindplot.Topic = new Class({
setValue : function(value) {
var dispatcher = mindplot.ActionDispatcher.getInstance();
+ var links = model.findFeatureByType(mindplot.TopicFeature.Link.id);
if (!$defined(value)) {
- dispatcher.removeLinkFromTopic(topicId);
+ var featureId = links[0].getId();
+ dispatcher.removeFeatureFromTopic(topicId, featureId);
}
else {
- dispatcher.changeLinkToTopic(topicId, value);
+ if (links.length > 0) {
+ dispatcher.changeFeatureToTopic(topicId, links[0].getId(), {url:value});
+ }
+ else {
+ dispatcher.addFeatureToTopic(topicId, mindplot.TopicFeature.Link.id, {url:value});
+ }
}
}
};
@@ -841,7 +781,6 @@ mindplot.Topic = new Class({
return result;
},
-
_updateConnectionLines : function() {
// Update this to parent line ...
var outgoingLine = this.getOutgoingLine();
diff --git a/mindplot/src/main/javascript/TopicFeature.js b/mindplot/src/main/javascript/TopicFeature.js
new file mode 100644
index 00000000..8cba25f3
--- /dev/null
+++ b/mindplot/src/main/javascript/TopicFeature.js
@@ -0,0 +1,68 @@
+/*
+ * 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.TopicFeature = {
+ Icon: {
+ id:mindplot.model.IconModel.FEATURE_TYPE,
+ model: mindplot.model.IconModel,
+ icon : mindplot.ImageIcon
+ },
+
+ Link: {
+ id: mindplot.model.LinkModel.FEATURE_TYPE,
+ model: mindplot.model.LinkModel,
+ icon : mindplot.LinkIcon
+ },
+
+ Note: {
+ id: mindplot.model.NoteModel.FEATURE_TYPE,
+ model: mindplot.model.NoteModel,
+ icon : mindplot.NoteIcon
+ },
+
+ isSupported : function(id) {
+ return mindplot.TopicFeature._featuresMetadataById.some(function(elem) {
+ return elem.id == id;
+ });
+ },
+
+ createModel : function(id, topic, attributes) {
+ $assert(id, 'type can not be null');
+ $assert(topic, 'topic can not be null');
+ $assert(attributes, 'attributes can not be null');
+
+ var model = mindplot.TopicFeature._featuresMetadataById.filter(function(elem) {
+ return elem.id == id;
+ })[0].model;
+ return new model(topic, attributes);
+ },
+
+ createIcon : function(topic, model) {
+ $assert(topic, 'topic can not be null');
+ $assert(model, 'model can not be null');
+
+ var icon = mindplot.TopicFeature._featuresMetadataById.filter(function(elem) {
+ return elem.id == model.getType();
+ })[0].icon;
+ return new icon(topic, model);
+ }
+};
+
+mindplot.TopicFeature._featuresMetadataById = [mindplot.TopicFeature.Icon,mindplot.TopicFeature.Link,mindplot.TopicFeature.Note]
+
+
diff --git a/mindplot/src/main/javascript/commands/AddIconToTopicCommand.js b/mindplot/src/main/javascript/commands/AddFeatureToTopicCommand.js
similarity index 59%
rename from mindplot/src/main/javascript/commands/AddIconToTopicCommand.js
rename to mindplot/src/main/javascript/commands/AddFeatureToTopicCommand.js
index e764cee4..ee649d7d 100644
--- a/mindplot/src/main/javascript/commands/AddIconToTopicCommand.js
+++ b/mindplot/src/main/javascript/commands/AddFeatureToTopicCommand.js
@@ -16,23 +16,27 @@
* limitations under the License.
*/
-mindplot.commands.AddIconToTopicCommand = new Class({
+mindplot.commands.AddFeatureToTopicCommand = new Class({
Extends:mindplot.Command,
- initialize: function(topicId, iconType) {
+ initialize: function(topicId, featureType, attributes) {
+
$assert($defined(topicId), 'topicId can not be null');
- $assert(iconType, 'iconType can not be null');
- this._topicsIds = topicId;
- this._iconType = iconType;
+ $assert(featureType, 'featureType can not be null');
+ $assert(attributes, 'attributes can not be null');
+
+ this._topicId = topicId;
+ this._featureType = featureType;
+ this._attributes = attributes;
},
execute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- var iconImg = topic.addIcon(this._iconType, commandContext._designer);
- this._iconModel = iconImg.getModel();
+ var topic = commandContext.findTopics(this._topicId)[0];
+ var icon = topic.addFeature(this._featureType, this._attributes);
+ this._featureModel = icon.getModel();
},
undoExecute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- topic.removeIcon(this._iconModel);
+ var topic = commandContext.findTopics(this._topicId)[0];
+ topic.removeFeature(this._featureModel);
}
});
\ No newline at end of file
diff --git a/mindplot/src/main/javascript/commands/RemoveLinkFromTopicCommand.js b/mindplot/src/main/javascript/commands/ChangeFeatureToTopicCommand.js
similarity index 58%
rename from mindplot/src/main/javascript/commands/RemoveLinkFromTopicCommand.js
rename to mindplot/src/main/javascript/commands/ChangeFeatureToTopicCommand.js
index 3800c91b..0923b3ed 100644
--- a/mindplot/src/main/javascript/commands/RemoveLinkFromTopicCommand.js
+++ b/mindplot/src/main/javascript/commands/ChangeFeatureToTopicCommand.js
@@ -16,23 +16,28 @@
* limitations under the License.
*/
-mindplot.commands.RemoveLinkFromTopicCommand = new Class({
+mindplot.commands.ChangeFeatureToTopicCommand = new Class({
Extends:mindplot.Command,
- initialize: function(topicId) {
+ initialize: function(topicId, featureId, attributes) {
$assert($defined(topicId), 'topicId can not be null');
- this._topicsIds = topicId;
+ $assert($defined(featureId), 'featureId can not be null');
+ $assert($defined(attributes), 'attributes can not be null');
+
+ this._topicId = topicId;
+ this._featureId = featureId;
+ this._attributes = attributes;
},
execute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- var model = topic.getModel();
- var links = model.getLinks()[0];
- this._text = links.getUrl();
- topic.removeLink();
+ var topic = commandContext.findTopics(this._topicId)[0];
+ var feature = topic.findFeatureById(this._featureId);
+
+ var oldAttributes = feature.getAttributes();
+ feature.setAttributes(this._attributes);
+ this._attributes = oldAttributes;
},
undoExecute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- topic.addLink(this._url, commandContext._designer);
+ this.execute(commandContext);
}
});
\ No newline at end of file
diff --git a/mindplot/src/main/javascript/commands/ChangeLinkToTopicCommand.js b/mindplot/src/main/javascript/commands/ChangeLinkToTopicCommand.js
deleted file mode 100644
index 3578b12d..00000000
--- a/mindplot/src/main/javascript/commands/ChangeLinkToTopicCommand.js
+++ /dev/null
@@ -1,48 +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.ChangeLinkToTopicCommand = new Class({
- Extends:mindplot.Command,
- initialize: function(topicId, url) {
- $assert($defined(topicId), 'topicId can not be null');
- this._topicsIds = topicId;
- this._url = url;
- this._id = mindplot.Command._nextUUID();
- },
-
- execute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- if (topic.hasLink()) {
- var model = topic.getModel();
- var link = model.getLinks()[0];
- this._oldUrl = link.getUrl();
- topic.removeLink();
- }
- topic.addLink(this._url);
- },
-
- undoExecute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- if (this._oldtext) {
- topic.removeLink();
- topic.addLink(this._oldUrl);
- } else {
- topic.removeLink();
- }
- }
-});
\ No newline at end of file
diff --git a/mindplot/src/main/javascript/commands/ChangeNoteToTopicCommand.js b/mindplot/src/main/javascript/commands/ChangeNoteToTopicCommand.js
deleted file mode 100644
index 117d97c7..00000000
--- a/mindplot/src/main/javascript/commands/ChangeNoteToTopicCommand.js
+++ /dev/null
@@ -1,49 +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.ChangeNoteToTopicCommand = new Class({
- Extends:mindplot.Command,
- initialize: function(topicId, text) {
- $assert($defined(topicId), 'topicId can not be null');
- this._topicsIds = topicId;
- this._text = text;
- this._oldtext = null;
- this._id = mindplot.Command._nextUUID();
- },
-
- execute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- if (topic.hasNote()) {
- var model = topic.getModel();
- var notes = model.getNotes()[0];
- this._oldtext = notes.getText();
- topic.removeNote();
- }
- topic.addNote(this._text);
- },
-
- undoExecute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- if (this._oldtext) {
- topic.removeNote();
- topic.addNote(this._oldtext);
- } else {
- topic.removeNote();
- }
- }
-});
\ No newline at end of file
diff --git a/mindplot/src/main/javascript/commands/RemoveNoteFromTopicCommand.js b/mindplot/src/main/javascript/commands/RemoveFeatureFromTopicCommand.js
similarity index 58%
rename from mindplot/src/main/javascript/commands/RemoveNoteFromTopicCommand.js
rename to mindplot/src/main/javascript/commands/RemoveFeatureFromTopicCommand.js
index 230e191d..0f0a52f5 100644
--- a/mindplot/src/main/javascript/commands/RemoveNoteFromTopicCommand.js
+++ b/mindplot/src/main/javascript/commands/RemoveFeatureFromTopicCommand.js
@@ -16,21 +16,30 @@
* limitations under the License.
*/
-mindplot.commands.RemoveNoteFromTopicCommand = new Class({
+mindplot.commands.RemoveFeatureFromTopicCommand = new Class({
Extends:mindplot.Command,
- initialize: function(topicId) {
+ initialize: function(topicId, featureId) {
$assert($defined(topicId), 'topicId can not be null');
- this._topicsIds = topicId;
+ $assert(featureId, 'iconModel can not be null');
+
+ this._topicId = topicId;
+ this._featureId = featureId;
+ this._oldFeature = null;
},
+
execute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- var model = topic.getModel();
- var notes = model.getNotes()[0];
- this._text = notes.getText();
- topic.removeNote();
+ var topic = commandContext.findTopics(this._topicId)[0];
+
+ var feature = topic.findFeatureById(this._featureId);
+ topic.removeFeature(feature);
+ this._oldFeature = feature;
},
+
undoExecute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- topic.addNote(this._text, commandContext._designer);
+ var topic = commandContext.findTopics(this._topicId)[0];
+
+ var feature = this._oldFeature;
+ topic.addFeature(feature.getType(), feature.getAttributes());
+ this._oldFeature = null;
}
});
\ No newline at end of file
diff --git a/mindplot/src/main/javascript/commands/RemoveIconFromTopicCommand.js b/mindplot/src/main/javascript/commands/RemoveIconFromTopicCommand.js
deleted file mode 100644
index 32717760..00000000
--- a/mindplot/src/main/javascript/commands/RemoveIconFromTopicCommand.js
+++ /dev/null
@@ -1,39 +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.RemoveIconFromTopicCommand = new Class({
- Extends:mindplot.Command,
- initialize: function(topicIds, iconModel) {
- $assert($defined(topicIds), 'topicIds can not be null');
- $assert(iconModel, 'iconModel can not be null');
- this._topicsIds = topicIds;
- this._iconModel = iconModel;
- },
-
- execute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- topic.removeIcon(this._iconModel);
- },
-
- undoExecute: function(commandContext) {
- var topic = commandContext.findTopics(this._topicsIds)[0];
- var iconType = this._iconModel.getIconType();
- var iconImg = topic.addIcon(iconType, commandContext._designer);
- this._iconModel = iconImg.getModel();
- }
-});
\ No newline at end of file
diff --git a/mindplot/src/main/javascript/model/FeatureModel.js b/mindplot/src/main/javascript/model/FeatureModel.js
new file mode 100644
index 00000000..03d58e95
--- /dev/null
+++ b/mindplot/src/main/javascript/model/FeatureModel.js
@@ -0,0 +1,76 @@
+/*
+ * 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.model.FeatureModel = new Class({
+ initialize:function(type, topic) {
+ $assert(type, 'type can not be null');
+ $assert(topic, 'topic can not be null');
+
+ this._id = mindplot.model.FeatureModel._nextUUID();
+ this._type = type;
+ this._topic = topic;
+ this._attributes = {};
+
+ // Create type method ...
+ this['is' + type.camelCase() + 'Model'] = function() {
+ return true;
+ };
+ },
+
+ getAttributes : function() {
+ return Object.clone(this._attributes);
+ },
+
+ setAttributes : function(attributes) {
+ for (key in attributes) {
+ this["set" + key.capitalize()](attributes[key]);
+ }
+ },
+
+ setAttribute : function(key, value) {
+ $assert(key, 'key id can not be null');
+ this._attributes[key] = value;
+ },
+
+ getAttribute : function(key) {
+ $assert(key, 'key id can not be null');
+
+ return this._attributes[key];
+ },
+
+ getTopic : function() {
+ return this._topic;
+ },
+
+ getId : function() {
+ return this._id;
+ },
+
+ getType:function() {
+ return this._type;
+ }
+});
+
+mindplot.model.FeatureModel._nextUUID = function() {
+ if (!$defined(this._uuid)) {
+ this._uuid = 0;
+ }
+
+ this._uuid = this._uuid + 1;
+ return this._uuid;
+};
diff --git a/mindplot/src/main/javascript/model/INodeModel.js b/mindplot/src/main/javascript/model/INodeModel.js
index 604d9f18..85a30414 100644
--- a/mindplot/src/main/javascript/model/INodeModel.js
+++ b/mindplot/src/main/javascript/model/INodeModel.js
@@ -248,58 +248,10 @@ mindplot.model.INodeModel = new Class({
throw "Unsupported operation";
},
- createLink : function(url) {
- throw "Unsupported operation";
- },
-
- addLink : function(link) {
- throw "Unsupported operation";
- },
-
- createNote : function(text) {
- throw "Unsupported operation";
- },
-
- addNote : function(note) {
- throw "Unsupported operation";
- },
-
- removeNote : function(note) {
- throw "Unsupported operation";
- },
-
- createIcon : function(iconType) {
- throw "Unsupported operation";
- },
-
- addIcon : function(icon) {
- throw "Unsupported operation";
- },
-
- removeIcon : function(icon) {
- throw "Unsupported operation";
- },
-
- removeLastIcon : function() {
- throw "Unsupported operation";
- },
-
getChildren : function() {
throw "Unsupported operation";
},
- getIcons : function() {
- throw "Unsupported operation";
- },
-
- getLinks : function() {
- throw "Unsupported operation";
- },
-
- getNotes : function() {
- throw "Unsupported operation";
- },
-
getParent : function() {
throw "Unsupported operation";
},
diff --git a/mindplot/src/main/javascript/model/IconModel.js b/mindplot/src/main/javascript/model/IconModel.js
index 95533a4d..55f238d5 100644
--- a/mindplot/src/main/javascript/model/IconModel.js
+++ b/mindplot/src/main/javascript/model/IconModel.js
@@ -17,46 +17,19 @@
*/
mindplot.model.IconModel = new Class({
- initialize:function(iconType, topic) {
- $assert(iconType, 'Icon id can not be null');
- $assert(topic, 'topic can not be null');
-
- this._iconType = iconType;
- this._id = mindplot.model.IconModel._nextUUID();
- this._topic = topic;
- },
-
- getId : function() {
- return this._id;
+ Extends: mindplot.model.FeatureModel,
+ initialize:function(topic, attributes) {
+ this.parent(mindplot.model.IconModel.FEATURE_TYPE, topic);
+ this.setIconType(attributes.id);
},
getIconType : function() {
- return this._iconType;
+ return this.getAttribute('id');
},
-
setIconType : function(iconType) {
- this._iconType = iconType;
- },
-
- getTopic : function() {
- return this._topic;
- },
-
- isIconModel : function() {
- return true;
- }});
-
-
-/**
- * @todo: This method must be implemented.
- */
-mindplot.model.IconModel._nextUUID = function() {
- if (!$defined(this._uuid)) {
- this._uuid = 0;
+ $assert(iconType, 'iconType id can not be null');
+ this.setAttribute('id', iconType);
}
-
- this._uuid = this._uuid + 1;
- return this._uuid;
-};
-
+});
+mindplot.model.IconModel.FEATURE_TYPE = "icon";
diff --git a/mindplot/src/main/javascript/model/LinkModel.js b/mindplot/src/main/javascript/model/LinkModel.js
index dabc18d7..b218804a 100644
--- a/mindplot/src/main/javascript/model/LinkModel.js
+++ b/mindplot/src/main/javascript/model/LinkModel.js
@@ -17,31 +17,27 @@
*/
mindplot.model.LinkModel = new Class({
- initialize : function(url, topic) {
- $assert(url, 'url can not be null');
- $assert(topic, 'mindmap can not be null');
- this._topic = topic;
- this.setUrl(url);
+ Extends: mindplot.model.FeatureModel,
+ initialize : function(topic, attributes) {
+ this.parent(mindplot.model.LinkModel.FEATURE_TYPE, topic);
+ this.setUrl(attributes.url);
},
getUrl : function() {
- return this._url;
+ return this.getAttribute('url');
},
setUrl : function(url) {
$assert(url, 'url can not be null');
- this._url = this._fixUrl(url);
- this._type = this._url.contains('mailto:') ? 'mail' : 'url';
+
+ var fixedUrl = this._fixUrl(url);
+ this.setAttribute('url', fixedUrl);
+
+ var type = fixedUrl.contains('mailto:') ? 'mail' : 'url';
+ this.setAttribute('type', type);
+
},
- getTopic : function() {
- return this._topic;
- },
-
- isLinkModel : function() {
- return true;
- }
- ,
_fixUrl : function(url) {
var result = url;
if (!result.contains('http://') && !result.contains('https://') && !result.contains('mailto://')) {
@@ -49,4 +45,6 @@ mindplot.model.LinkModel = new Class({
}
return result;
}
-});
\ No newline at end of file
+});
+
+mindplot.model.LinkModel.FEATURE_TYPE = 'link';
\ No newline at end of file
diff --git a/mindplot/src/main/javascript/model/NodeModel.js b/mindplot/src/main/javascript/model/NodeModel.js
index 971fea66..3cdefc32 100644
--- a/mindplot/src/main/javascript/model/NodeModel.js
+++ b/mindplot/src/main/javascript/model/NodeModel.js
@@ -30,9 +30,39 @@ mindplot.model.NodeModel = new Class({
this.setSize(50, 20);
this._children = [];
- this._icons = [];
- this._links = [];
- this._notes = [];
+ this._feature = [];
+ },
+
+ createFeature: function(type, attributes) {
+ return mindplot.TopicFeature.createModel(type, this, attributes);
+ },
+
+ addFeature: function(feature) {
+ $assert(feature, 'feature can not be null');
+ this._feature.push(feature);
+ },
+
+ getFeatures: function() {
+ return this._feature;
+ },
+
+ removeFeature: function(feature) {
+ $assert(feature, 'feature can not be null');
+ this._feature.erase(feature);
+ },
+
+ findFeatureByType : function(type) {
+ $assert(type, 'type can not be null');
+ return this._feature.filter(function(feature) {
+ return feature.getType() == type;
+ });
+ },
+
+ findFeatureById : function(id) {
+ $assert($defined(id), 'id can not be null');
+ return this._feature.filter(function(feature) {
+ return feature.getId() == id;
+ })[0];
},
getPropertiesKeys : function() {
@@ -64,67 +94,10 @@ mindplot.model.NodeModel = new Class({
});
result._properties = Object.clone(this._properties);
- result._icons = this._icons.clone();
- result._links = this._links.clone();
- result._notes = this._notes.clone();
+ result._feature = this._feature.clone();
return result;
},
- addChildren : function() {
- $assert(child && child.isNodeModel(), 'Only NodeModel can be appended to Mindmap object');
- this._children.push(child);
- child._parent = this;
- },
-
- createLink : function(url) {
- $assert(url, 'Link URL must be specified.');
- return new mindplot.model.LinkModel(url, this);
- },
-
- addLink : function(link) {
- $assert(link && link.isLinkModel(), 'Only LinkModel can be appended to Mindmap object as links');
- this._links.push(link);
- },
-
- _removeLink : function(link) {
- $assert(link && link.isLinkModel(), 'Only LinkModel can be appended to Mindmap object as links');
- this._links.erase(link);
- },
-
- createNote : function(text) {
- $assert(text != null, 'note text must be specified.');
- return new mindplot.model.NoteModel(text, this);
- },
-
- addNote : function(note) {
- $assert(note && note.isNoteModel(), 'Only NoteModel can be appended to Mindmap object as links');
- this._notes.push(note);
- },
-
- removeNote : function(note) {
- $assert(note && note.isNoteModel(), 'Only NoteModel can be appended to Mindmap object as links');
- this._notes.erase(note);
- },
-
- createIcon : function(iconType) {
- $assert(iconType, 'IconType must be specified.');
- return new mindplot.model.IconModel(iconType, this);
- },
-
- addIcon : function(icon) {
- $assert(icon && icon.isIconModel(), 'Only IconModel can be appended to Mindmap object as icons');
- this._icons.push(icon);
- },
-
- removeIcon : function(icon) {
- $assert(icon && icon.isIconModel(), 'Only IconModel can be appended to Mindmap object as icons');
- this._icons.erase(icon);
- },
-
- removeLastIcon : function() {
- this._icons.pop();
- },
-
appendChild : function(child) {
$assert(child && child.isNodeModel(), 'Only NodeModel can be appended to Mindmap object');
this._children.push(child);
@@ -141,18 +114,6 @@ mindplot.model.NodeModel = new Class({
return this._children;
},
- getIcons : function() {
- return this._icons;
- },
-
- getLinks : function() {
- return this._links;
- },
-
- getNotes : function() {
- return this._notes;
- },
-
getParent : function() {
return this._parent;
},
diff --git a/mindplot/src/main/javascript/model/NoteModel.js b/mindplot/src/main/javascript/model/NoteModel.js
index b41e43ea..2cd6f62f 100644
--- a/mindplot/src/main/javascript/model/NoteModel.js
+++ b/mindplot/src/main/javascript/model/NoteModel.js
@@ -17,26 +17,20 @@
*/
mindplot.model.NoteModel = new Class({
- initialize : function(text, topic) {
- $assert(text, 'text text can not be null');
- $assert(topic, 'topic can not be null');
- this._text = text;
- this._topic = topic;
+ Extends: mindplot.model.FeatureModel,
+ initialize : function(topic, attributes) {
+ this.parent(mindplot.model.NoteModel.FEATURE_TYPE, topic);
+ this.setText(attributes.text);
},
getText:function() {
- return this._text;
+ return this.getAttribute('text');
},
setText : function(text) {
- this._text = text;
- },
-
- getTopic : function() {
- return this._topic;
- },
-
- isNoteModel : function() {
- return true;
+ $assert(text, 'text can not be null');
+ this.setAttribute('text', text);
}
-});
\ No newline at end of file
+});
+
+mindplot.model.NoteModel.FEATURE_TYPE = "note";
diff --git a/mindplot/src/main/javascript/persistence/XMLSerializer_Beta.js b/mindplot/src/main/javascript/persistence/XMLSerializer_Beta.js
index bf680c63..6d40edd6 100644
--- a/mindplot/src/main/javascript/persistence/XMLSerializer_Beta.js
+++ b/mindplot/src/main/javascript/persistence/XMLSerializer_Beta.js
@@ -260,13 +260,13 @@ mindplot.persistence.XMLSerializer_Beta = new Class({
childTopic.connectTo(topic);
} else if (child.tagName == "icon") {
var icon = this._deserializeIcon(child, topic);
- topic.addIcon(icon);
+ topic.addFeature(icon);
} else if (child.tagName == "link") {
var link = this._deserializeLink(child, topic);
- topic.addLink(link);
+ topic.addFeature(link);
} else if (child.tagName == "note") {
var note = this._deserializeNote(child, topic);
- topic.addNote(note);
+ topic.addFeature(note);
}
}
}
@@ -277,15 +277,15 @@ mindplot.persistence.XMLSerializer_Beta = new Class({
_deserializeIcon : function(domElem, topic) {
var icon = domElem.getAttribute("id");
icon = icon.replace("images/", "icons/legacy/");
- return topic.createIcon(icon);
+ return mindplot.TopicFeature.createModel(mindplot.TopicFeature.Icon.id, topic, {id:icon});
},
_deserializeLink : function(domElem, topic) {
- return topic.createLink(domElem.getAttribute("url"));
+ return mindplot.TopicFeature.createModel(mindplot.TopicFeature.Link.id, topic, {url:domElem.getAttribute("url")});
},
_deserializeNote : function(domElem, topic) {
- return topic.createNote(domElem.getAttribute("text"));
+ return mindplot.TopicFeature.createModel(mindplot.TopicFeature.Note.id, topic, {text:domElem.getAttribute("url")});
}});
mindplot.persistence.XMLSerializer_Beta.MAP_ROOT_NODE = 'map';
\ No newline at end of file
diff --git a/mindplot/src/main/javascript/persistence/XMLSerializer_Pela.js b/mindplot/src/main/javascript/persistence/XMLSerializer_Pela.js
index 4bf42f23..d094ecbb 100644
--- a/mindplot/src/main/javascript/persistence/XMLSerializer_Pela.js
+++ b/mindplot/src/main/javascript/persistence/XMLSerializer_Pela.js
@@ -47,8 +47,6 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
// Create Relationships
var relationships = mindmap.getRelationships();
if (relationships.length > 0) {
-// var relationshipDom=document.createElement("relationships");
-// mapElem.appendChild(relationshipDom);
for (var j = 0; j < relationships.length; j++) {
var relationDom = this._relationshipToXML(document, relationships[j]);
mapElem.appendChild(relationDom);
@@ -124,60 +122,38 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
parentTopic.setAttribute('brColor', brColor);
}
- //ICONS
- var icons = topic.getIcons();
- for (var i = 0; i < icons.length; i++) {
- var icon = icons[i];
- var iconDom = this._iconToXML(document, icon);
- parentTopic.appendChild(iconDom);
- }
+ // Serialize features ...
+ var features = topic.getFeatures();
+ for (var i = 0; i < features.length; i++) {
+ var feature = features[i];
- //LINKS
- var links = topic.getLinks();
- for (var i = 0; i < links.length; i++) {
- var link = links[i];
- var linkDom = this._linkToXML(document, link);
- parentTopic.appendChild(linkDom);
- }
+ var featureType = feature.getType();
+ var featureDom = document.createElement(featureType);
+ var attributes = feature.getAttributes();
- var notes = topic.getNotes();
- for (var i = 0; i < notes.length; i++) {
- var note = notes[i];
- var noteDom = this._noteToXML(document, note);
- parentTopic.appendChild(noteDom);
+ for (var key in attributes) {
+ var value = attributes[key];
+ if (key == 'text') {
+ var cdata = document.createCDATASection(value);
+ featureDom.appendChild(cdata);
+ } else {
+ featureDom.setAttribute(key, value);
+ }
+ }
+ parentTopic.appendChild(featureDom);
}
//CHILDREN TOPICS
var childTopics = topic.getChildren();
- for (var i = 0; i < childTopics.length; i++) {
- var childTopic = childTopics[i];
+ for (var j = 0; j < childTopics.length; j++) {
+ var childTopic = childTopics[j];
var childDom = this._topicToXML(document, childTopic);
parentTopic.appendChild(childDom);
}
-
return parentTopic;
},
- _iconToXML : function(document, icon) {
- var iconDom = document.createElement("icon");
- iconDom.setAttribute('id', icon.getIconType());
- return iconDom;
- },
-
- _linkToXML : function(document, link) {
- var linkDom = document.createElement("link");
- linkDom.setAttribute('url', link.getUrl());
- return linkDom;
- },
-
- _noteToXML : function(document, note) {
- var noteDom = document.createElement("note");
- var cdata = document.createCDATASection(note.getText());
- noteDom.appendChild(cdata);
- return noteDom;
- },
-
_noteTextToXML : function(document, elem, text) {
if (text.indexOf('\n') == -1) {
elem.setAttribute('text', text);
@@ -305,17 +281,6 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
if ($defined(borderColor)) {
topic.setBorderColor(borderColor);
}
-//
-// } else {
-// var sizeStr = domElem.getAttribute('size');
-// $assert(sizeStr, "size can not be null");
-// var size = sizeStr.split(',');
-// topic.setSize(size[0], size[1]);
-//
-// var url = domElem.getAttribute('image');
-// $assert(url, "url can not be null");
-// topic.setImageUrl(url);
-// }
var order = domElem.getAttribute('order');
if ($defined(order)) {
@@ -338,40 +303,40 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
for (var i = 0; i < children.length; i++) {
var child = children[i];
if (child.nodeType == Node.ELEMENT_NODE) {
- $assert(child.tagName == "topic" || child.tagName == "icon" || child.tagName == "link" || child.tagName == "note" || child.tagName == "text", 'Illegal node type:' + child.tagName);
if (child.tagName == "topic") {
var childTopic = this._deserializeNode(child, mindmap);
childTopic.connectTo(topic);
- } else if (child.tagName == "icon") {
- var icon = this._deserializeIcon(child, topic);
- topic.addIcon(icon);
- } else if (child.tagName == "link") {
- var link = this._deserializeLink(child, topic);
- topic.addLink(link);
- } else if (child.tagName == "note") {
- var note = this._deserializeNote(child, topic);
- topic.addNote(note);
+ } else if (mindplot.TopicFeature.isSupported(child.tagName)) {
+
+ // Load attributes ...
+ var namedNodeMap = child.attributes;
+ var attributes = {};
+ for (var j = 0; j < namedNodeMap.length; j++) {
+ var attribute = namedNodeMap.item(j);
+ attributes[attribute.name] = attribute.value;
+ }
+
+ // Has text node ?.
+ var textAttr = this._deserializeTextAttr(child);
+ if (textAttr) {
+ attributes['text'] = textAttr;
+ }
+
+ // Create a new element ....
+ var featureType = child.tagName;
+ var feature = mindplot.TopicFeature.createModel(featureType, topic, attributes);
+ topic.addFeature(feature);
+
} else if (child.tagName == "text") {
var nodeText = this._deserializeNodeText(child);
topic.setText(nodeText);
}
-
}
}
return topic;
},
- _deserializeIcon : function(domElem, topic) {
- var icon = domElem.getAttribute("id");
- icon = icon.replace("images/", "icons/legacy/");
- return topic.createIcon(icon);
- },
-
- _deserializeLink : function(domElem, topic) {
- return topic.createLink(domElem.getAttribute("url"));
- },
-
- _deserializeNote : function(domElem, topic) {
+ _deserializeTextAttr : function(domElem) {
var value = domElem.getAttribute("text");
if (!$defined(value)) {
var children = domElem.childNodes;
@@ -382,11 +347,10 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
}
}
}
- return topic.createNote(value);
+ return value;
},
_deserializeNodeText: function(domElem) {
-
var children = domElem.childNodes;
var value = null;
for (var i = 0; i < children.length; i++) {
diff --git a/wise-webapp/src/test/java/com/wisemapping/test/freemind/pepe.xml b/wise-webapp/src/test/java/com/wisemapping/test/freemind/pepe.xml
index 02985956..4d83d907 100644
--- a/wise-webapp/src/test/java/com/wisemapping/test/freemind/pepe.xml
+++ b/wise-webapp/src/test/java/com/wisemapping/test/freemind/pepe.xml
@@ -1,20 +1,49 @@
-Actual :
-