diff --git a/mindplot/src/main/javascript/IconGroup.js b/mindplot/src/main/javascript/IconGroup.js index b1d4fd1e..5a59a869 100644 --- a/mindplot/src/main/javascript/IconGroup.js +++ b/mindplot/src/main/javascript/IconGroup.js @@ -17,12 +17,12 @@ */ mindplot.IconGroup = new Class({ - initialize : function(topicId, iconSize) { + initialize:function (topicId, iconSize) { $assert($defined(topicId), "topicId can not be null"); $assert($defined(iconSize), "iconSize can not be null"); this._icons = []; - this._group = new web2d.Group({width: 0, height:iconSize,x: 0, y:0, coordSizeWidth:0,coordSizeHeight:100}); + this._group = new web2d.Group({width:0, height:iconSize, x:0, y:0, coordSizeWidth:0, coordSizeHeight:100}); this._removeTip = new mindplot.IconGroup.RemoveTip(this._group, topicId); this.seIconSize(iconSize, iconSize); @@ -30,28 +30,28 @@ mindplot.IconGroup = new Class({ }, - setPosition : function(x, y) { + setPosition:function (x, y) { this._group.setPosition(x, y); }, - getPosition : function() { + getPosition:function () { return this._group.getPosition(); }, - getNativeElement : function() { + getNativeElement:function () { return this._group; }, - getSize : function() { + getSize:function () { return this._group.getSize(); }, - seIconSize : function(width, height) { - this._iconSize = {width:width,height:height}; + seIconSize:function (width, height) { + this._iconSize = {width:width, height:height}; this._resize(this._icons.length); }, - addIcon : function(icon, remove) { + addIcon:function (icon, remove) { $defined(icon, "icon is not defined"); icon.setGroup(this); @@ -70,9 +70,9 @@ mindplot.IconGroup = new Class({ } }, - _findIconFromModel : function(iconModel) { + _findIconFromModel:function (iconModel) { var result = null; - this._icons.each(function(icon) { + this._icons.each(function (icon) { var elModel = icon.getModel(); if (elModel.getId() == iconModel.getId()) { result = icon; @@ -86,14 +86,14 @@ mindplot.IconGroup = new Class({ return result; }, - removeIconByModel : function(featureModel) { + removeIconByModel:function (featureModel) { $assert(featureModel, "featureModel can not be null"); var icon = this._findIconFromModel(featureModel); this._removeIcon(icon); }, - _removeIcon : function(icon) { + _removeIcon:function (icon) { $assert(icon, "icon can not be null"); this._removeTip.close(0); @@ -103,36 +103,36 @@ mindplot.IconGroup = new Class({ this._resize(this._icons.length); // Add all again ... - this._icons.each(function(elem, i) { + this._icons.each(function (elem, i) { this._positionIcon(elem, i); }.bind(this)); }, - moveToFront : function() { + moveToFront:function () { this._group.moveToFront(); }, - _registerListeners : function() { - this._group.addEvent('click', function(event) { + _registerListeners:function () { + this._group.addEvent('click', function (event) { // Avoid node creation ... event.stopPropagation(); }); - this._group.addEvent('dblclick', function(event) { + this._group.addEvent('dblclick', function (event) { event.stopPropagation(); }); }, - _resize : function(iconsLength) { + _resize:function (iconsLength) { this._group.setSize(iconsLength * this._iconSize.width, this._iconSize.height); var iconSize = mindplot.Icon.SIZE + (mindplot.IconGroup.ICON_PADDING * 2); this._group.setCoordSize(iconsLength * iconSize, iconSize); }, - _positionIcon : function(icon, order) { + _positionIcon:function (icon, order) { var iconSize = mindplot.Icon.SIZE + (mindplot.IconGroup.ICON_PADDING * 2); icon.getImage().setPosition(iconSize * order + mindplot.IconGroup.ICON_PADDING, mindplot.IconGroup.ICON_PADDING); @@ -141,13 +141,13 @@ mindplot.IconGroup = new Class({ mindplot.IconGroup.ICON_PADDING = 5; mindplot.IconGroup.RemoveTip = new Class({ - initialize : function(container) { + initialize:function (container) { $assert(container, "group can not be null"); this._fadeElem = container; }, - show : function(topicId, icon) { + show:function (topicId, icon) { $assert(icon, 'icon can not be null'); // Nothing to do ... @@ -162,15 +162,15 @@ mindplot.IconGroup.RemoveTip = new Class({ // Register events ... var widget = this._buildWeb2d(); - widget.addEvent('click', function() { + widget.addEvent('click', function () { icon.remove(); }); - widget.addEvent('mouseover', function() { + widget.addEvent('mouseover', function () { this.show(topicId, icon); }.bind(this)); - widget.addEvent('mouseout', function() { + widget.addEvent('mouseout', function () { this.hide(); }.bind(this)); @@ -186,11 +186,11 @@ mindplot.IconGroup.RemoveTip = new Class({ } }, - hide : function() { + hide:function () { this.close(200); }, - close : function(delay) { + close:function (delay) { // This is not ok, trying to close the same dialog twice ? if (this._closeTimeoutId) { @@ -199,7 +199,7 @@ mindplot.IconGroup.RemoveTip = new Class({ if (this._activeIcon) { var widget = this._widget; - var close = function() { + var close = function () { this._activeIcon = null; this._fadeElem.removeChild(widget); @@ -218,19 +218,19 @@ mindplot.IconGroup.RemoveTip = new Class({ } }, - _buildWeb2d : function() { + _buildWeb2d:function () { var result = new web2d.Group({ - width: 10, + width:10, height:10, - x: 0, + x:0, y:0, coordSizeWidth:10, coordSizeHeight:10 }); var outerRect = new web2d.Rect(0, { - x: 0, - y: 0, + x:0, + y:0, width:10, height:10, stroke:'0', @@ -240,8 +240,8 @@ mindplot.IconGroup.RemoveTip = new Class({ outerRect.setCursor('pointer'); var innerRect = new web2d.Rect(0, { - x: 1, - y: 1, + x:1, + y:1, width:8, height:8, stroke:'1 solid white', @@ -260,10 +260,10 @@ mindplot.IconGroup.RemoveTip = new Class({ result.appendChild(line2); // Some events ... - result.addEvent('mouseover', function() { + result.addEvent('mouseover', function () { innerRect.setFill('#CC0033'); }); - result.addEvent('mouseout', function() { + result.addEvent('mouseout', function () { innerRect.setFill('gray'); }); @@ -271,14 +271,14 @@ mindplot.IconGroup.RemoveTip = new Class({ return result; }, - decorate : function(topicId, icon) { + decorate:function (topicId, icon) { if (!icon.__remove) { - icon.addEvent('mouseover', function() { + icon.addEvent('mouseover', function () { this.show(topicId, icon); }.bind(this)); - icon.addEvent('mouseout', function() { + icon.addEvent('mouseout', function () { this.hide(); }.bind(this)); icon.__remove = true; diff --git a/mindplot/src/main/javascript/ImageIcon.js b/mindplot/src/main/javascript/ImageIcon.js index 0f21d438..f1812724 100644 --- a/mindplot/src/main/javascript/ImageIcon.js +++ b/mindplot/src/main/javascript/ImageIcon.js @@ -18,27 +18,23 @@ mindplot.ImageIcon = new Class({ Extends:mindplot.Icon, - initialize:function(topic, iconModel) { + initialize:function (topic, iconModel, readOnly) { $assert(iconModel, 'iconModel can not be null'); $assert(topic, 'topic can not be null'); this._topicId = topic.getId(); this._featureModel = iconModel; - // @Todo: Read only must be a property ... - this._readOnly = designer._readOnly; - // Build graph image representation ... var iconType = iconModel.getIconType(); var imgUrl = this._getImageUrl(iconType); this.parent(imgUrl); - //Remove - if (!this._readOnly) { + if (!readOnly) { //Icon var image = this.getImage(); - image.addEvent('click', function() { + image.addEvent('click', function () { var iconType = iconModel.getIconType(); var newIconType = this._getNextFamilyIconId(iconType); @@ -52,15 +48,15 @@ mindplot.ImageIcon = new Class({ } }, - _getImageUrl : function(iconId) { + _getImageUrl:function (iconId) { return "icons/" + iconId + ".png"; }, - getModel : function() { + getModel:function () { return this._featureModel; }, - _getNextFamilyIconId : function(iconId) { + _getNextFamilyIconId:function (iconId) { var familyIcons = this._getFamilyIcons(iconId); $assert(familyIcons != null, "Family Icon not found!"); @@ -81,7 +77,7 @@ mindplot.ImageIcon = new Class({ return result; }, - _getFamilyIcons : function(iconId) { + _getFamilyIcons:function (iconId) { $assert(iconId != null, "id must not be null"); $assert(iconId.indexOf("_") != -1, "Invalid icon id (it must contain '_')"); @@ -98,7 +94,7 @@ mindplot.ImageIcon = new Class({ return result; }, - remove : function() { + remove:function () { var actionDispatcher = mindplot.ActionDispatcher.getInstance(); var featureId = this._featureModel.getId(); var topicId = this._topicId; @@ -108,29 +104,29 @@ mindplot.ImageIcon = new Class({ 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"]} + {"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/LinkIcon.js b/mindplot/src/main/javascript/LinkIcon.js index b259c611..839a8cef 100644 --- a/mindplot/src/main/javascript/LinkIcon.js +++ b/mindplot/src/main/javascript/LinkIcon.js @@ -18,32 +18,34 @@ mindplot.LinkIcon = new Class({ - Extends: mindplot.Icon, - initialize : function(topic, linkModel) { + Extends:mindplot.Icon, + initialize:function (topic, linkModel, readOnly) { $assert(topic, 'topic can not be null'); $assert(linkModel, 'linkModel can not be null'); - this.parent(mindplot.LinkIcon.IMAGE_URL); this._linksModel = linkModel; this._topic = topic; + this._readOnly = readOnly; this._registerEvents(); }, - _registerEvents : function() { + _registerEvents:function () { this._image.setCursor('pointer'); - // Add on click event to open the editor ... - this.addEvent('click', function(event) { - this._topic.showLinkEditor(); - event.stopPropagation(); - }.bind(this)); + if (!this._readOnly) { + // Add on click event to open the editor ... + this.addEvent('click', function (event) { + this._topic.showLinkEditor(); + event.stopPropagation(); + }.bind(this)); + } this._tip = new mindplot.widget.LinkIconTooltip(this); }, - getModel : function() { + getModel:function () { return this._linksModel; } }); diff --git a/mindplot/src/main/javascript/NoteIcon.js b/mindplot/src/main/javascript/NoteIcon.js index ebdf0c48..9c39c07f 100644 --- a/mindplot/src/main/javascript/NoteIcon.js +++ b/mindplot/src/main/javascript/NoteIcon.js @@ -17,29 +17,33 @@ */ mindplot.NoteIcon = new Class({ - Extends: mindplot.Icon, - initialize : function(topic, noteModel) { + Extends:mindplot.Icon, + initialize:function (topic, noteModel, readOnly) { $assert(topic, 'topic can not be null'); this.parent(mindplot.NoteIcon.IMAGE_URL); this._linksModel = noteModel; this._topic = topic; + this._readOnly = readOnly; this._registerEvents(); }, - _registerEvents : function() { + _registerEvents:function () { this._image.setCursor('pointer'); - // Add on click event to open the editor ... - this.addEvent('click', function(event) { - this._topic.showNoteEditor(); - event.stopPropagation(); - }.bind(this)); + if (!this._readOnly) { + + // Add on click event to open the editor ... + this.addEvent('click', function (event) { + this._topic.showNoteEditor(); + event.stopPropagation(); + }.bind(this)); + } this._tip = new mindplot.widget.FloatingTip(this.getImage()._peer._native, { // Content can also be a function of the target element! - content: function() { + content:function () { var result = new Element('div'); result.setStyles({padding:'5px'}); @@ -48,14 +52,14 @@ mindplot.NoteIcon = new Class({ 'font-weight':'bold', color:'black', 'padding-bottom':'5px', - width: '100px' + width:'100px' }); title.inject(result); var text = new Element('div', {text:this._linksModel.getText()}); text.setStyles({ - 'white-space': 'pre-wrap', - 'word-wrap': 'break-word' + 'white-space':'pre-wrap', + 'word-wrap':'break-word' } ); text.inject(result); @@ -63,17 +67,17 @@ mindplot.NoteIcon = new Class({ return result; }.bind(this), - html: true, - position: 'bottom', - arrowOffset : 10, - center: true, - arrowSize: 15, - offset : {x:10,y:20}, + html:true, + position:'bottom', + arrowOffset:10, + center:true, + arrowSize:15, + offset:{x:10, y:20}, className:'notesTip' }); }, - getModel : function() { + getModel:function () { return this._linksModel; } }); diff --git a/mindplot/src/main/javascript/Topic.js b/mindplot/src/main/javascript/Topic.js index cf8b51e5..940c5e78 100644 --- a/mindplot/src/main/javascript/Topic.js +++ b/mindplot/src/main/javascript/Topic.js @@ -267,8 +267,8 @@ mindplot.Topic = new Class({ 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 ... + var icon = mindplot.TopicFeature.createIcon(this, featureModel, this.isReadOnly()); + result.addIcon(icon, featureModel.getType() == mindplot.TopicFeature.Icon.id && !this.isReadOnly()); } return result; @@ -284,8 +284,8 @@ mindplot.Topic = new Class({ 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 result = mindplot.TopicFeature.createIcon(this, feature, this.isReadOnly()); + iconGroup.addIcon(result, type == mindplot.TopicFeature.Icon.id && !this.isReadOnly()); this._adjustShapes(); return result; @@ -669,6 +669,7 @@ mindplot.Topic = new Class({ showNoteEditor:function () { + var topicId = this.getId(); var model = this.getModel(); var editorModel = { diff --git a/mindplot/src/main/javascript/TopicFeature.js b/mindplot/src/main/javascript/TopicFeature.js index f1dda874..b144ecd6 100644 --- a/mindplot/src/main/javascript/TopicFeature.js +++ b/mindplot/src/main/javascript/TopicFeature.js @@ -17,51 +17,51 @@ */ mindplot.TopicFeature = { - Icon: { + Icon:{ id:mindplot.model.IconModel.FEATURE_TYPE, - model: mindplot.model.IconModel, - icon : mindplot.ImageIcon + model:mindplot.model.IconModel, + icon:mindplot.ImageIcon }, - Link: { - id: mindplot.model.LinkModel.FEATURE_TYPE, - model: mindplot.model.LinkModel, - icon : mindplot.LinkIcon + 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 + Note:{ + id:mindplot.model.NoteModel.FEATURE_TYPE, + model:mindplot.model.NoteModel, + icon:mindplot.NoteIcon }, - isSupported : function(id) { - return mindplot.TopicFeature._featuresMetadataById.some(function(elem) { + isSupported:function (id) { + return mindplot.TopicFeature._featuresMetadataById.some(function (elem) { return elem.id == id; }); }, - createModel : function(id, attributes) { + createModel:function (id, attributes) { $assert(id, 'type can not be null'); $assert(attributes, 'attributes can not be null'); - var model = mindplot.TopicFeature._featuresMetadataById.filter(function(elem) { + var model = mindplot.TopicFeature._featuresMetadataById.filter(function (elem) { return elem.id == id; })[0].model; return new model(attributes); }, - createIcon : function(topic, model) { + createIcon:function (topic, model, readOnly) { $assert(topic, 'topic can not be null'); $assert(model, 'model can not be null'); - var icon = mindplot.TopicFeature._featuresMetadataById.filter(function(elem) { + var icon = mindplot.TopicFeature._featuresMetadataById.filter(function (elem) { return elem.id == model.getType(); })[0].icon; - return new icon(topic, model); + return new icon(topic, model, readOnly); } }; -mindplot.TopicFeature._featuresMetadataById = [mindplot.TopicFeature.Icon,mindplot.TopicFeature.Link,mindplot.TopicFeature.Note]; +mindplot.TopicFeature._featuresMetadataById = [mindplot.TopicFeature.Icon, mindplot.TopicFeature.Link, mindplot.TopicFeature.Note]; diff --git a/wise-webapp/src/main/webapp/jsp/mindmapEditor.jsp b/wise-webapp/src/main/webapp/jsp/mindmapEditor.jsp index 957356ce..ff6164ef 100644 --- a/wise-webapp/src/main/webapp/jsp/mindmapEditor.jsp +++ b/wise-webapp/src/main/webapp/jsp/mindmapEditor.jsp @@ -12,7 +12,7 @@ - <spring:message code="SITE.TITLE"/> - ${mindmap.title} + <spring:message code="SITE.TITLE"/> - <c:out value="${mindmap.title}"/> @@ -73,14 +73,15 @@ | - "> + "> -
: ${mindmap.title}
+
:
<%@ include file="/jsp/mindmapEditorToolbar.jsf" %> diff --git a/wise-webapp/src/main/webapp/jsp/mindmapList.jsp b/wise-webapp/src/main/webapp/jsp/mindmapList.jsp index 75780f40..2f2fe599 100644 --- a/wise-webapp/src/main/webapp/jsp/mindmapList.jsp +++ b/wise-webapp/src/main/webapp/jsp/mindmapList.jsp @@ -58,7 +58,7 @@ bUseRendered:false, mDataProp:"title", fnRender:function (obj) { - return $('').text(obj.aData.title).html(); + return '' + $('').text(obj.aData.title).html() + ''; } }, {