diff --git a/mindplot/pom.xml b/mindplot/pom.xml index 1e0f199a..649957b9 100644 --- a/mindplot/pom.xml +++ b/mindplot/pom.xml @@ -187,6 +187,7 @@ + 0) { - this._actionDispatcher.addLinkToTopic(topicsIds[0], url); - } - }, - addLink : function() { - var selectedTopics = this.getModel().filterSelectedTopics(); - var topic = null; - if (selectedTopics.length > 0) { - topic = selectedTopics[0]; - if (!$defined(topic._hasLink)) { - var msg = new Element('div'); - var urlText = new Element('div').inject(msg); - urlText.innerHTML = "URL:"; - var formElem = new Element('form', {'action': 'none', 'id':'linkFormId'}); - var urlInput = new Element('input', {'type': 'text', 'size':30}); - urlInput.inject(formElem); - formElem.inject(msg); - - var okButtonId = "linkOkButtonId"; - formElem.addEvent('submit', function(e) { - $(okButtonId).fireEvent('click', e); - e = new Event(e); - e.stop(); - }); - - - var okFunction = function() { - var url = urlInput.value; - var result = false; - if ("" != url.trim()) { - this.addLink2Node(url); - result = true; - } - return result; - }.bind(this); - - var dialog = mindplot.LinkIcon.buildDialog(this, okFunction, okButtonId); - dialog.adopt(msg).show(); - - // IE doesn't like too much this focus action... - if (!Browser.ie) { - urlInput.focus(); - } - } - } else { - core.Monitor.getInstance().logMessage('At least one topic must be selected to execute this operation.'); - } + var model = this.getModel(); + var topic = model.selectedTopic(); + topic.showLinkEditor(); }, addNote : function() { var model = this.getModel(); var topic = model.selectedTopic(); - if (topic != null) { - topic.showNoteEditor(); - } else { - core.Monitor.getInstance().logMessage('At least one topic must be selected to execute this operation.'); - } + topic.showNoteEditor(); }, goToNode : function(node) { diff --git a/mindplot/src/main/javascript/Note.js b/mindplot/src/main/javascript/Note.js index 08197f91..b3d0ba68 100644 --- a/mindplot/src/main/javascript/Note.js +++ b/mindplot/src/main/javascript/Note.js @@ -41,6 +41,7 @@ mindplot.Note = new Class({ // Content can also be a function of the target element! content: function() { var result = new Element('div'); + result.setStyles({padding:'5px'}); var title = new Element('div', {text:'Note'}); title.setStyles({ @@ -63,9 +64,10 @@ mindplot.Note = new Class({ return result; }.bind(this), html: true, - position: 'bottom', // Bottom positioned - center: true, // Place the tip aligned with target - arrowSize: 6, // A bigger arrow! ); // Title attribute will be used as tip. + position: 'bottom', + arrowOffset : 10, + center: true, + arrowSize: 15, offset : {x:10,y:20} }); }, diff --git a/mindplot/src/main/javascript/Topic.js b/mindplot/src/main/javascript/Topic.js index 1c3d6dc2..1fa5b103 100644 --- a/mindplot/src/main/javascript/Topic.js +++ b/mindplot/src/main/javascript/Topic.js @@ -329,7 +329,7 @@ mindplot.Topic = new Class({ model.addIcon(iconModel); var imageIcon = new mindplot.ImageIcon(this, iconModel); - iconGroup.addIcon(imageIcon,true); + iconGroup.addIcon(imageIcon, true); this._adjustShapes(); return imageIcon; }, @@ -753,6 +753,37 @@ mindplot.Topic = new Class({ editor.show(); }, + showLinkEditor : function() { + + var topicId = this.getId(); + var model = this.getModel(); + var editorModel = { + getValue : function() { +// var notes = model.getNotes(); +// var result; +// if (notes.length > 0) +// result = notes[0].getText(); +// +// return result; + }, + + setValue : function(value) { +// var dispatcher = mindplot.ActionDispatcher.getInstance(); +// if (!$defined(value)) { +// dispatcher.removeNoteFromTopic(topicId); +// } +// else { +// dispatcher.changeNoteToTopic(topicId, value); +// } + } + }; + + this.closeEditors(); + var editor = new mindplot.widget.LinkEditor(editorModel); + editor.show(); + }, + + closeEditors : function() { this._textEditor.close(true); }, diff --git a/mindplot/src/main/javascript/widget/LinkEditor.js b/mindplot/src/main/javascript/widget/LinkEditor.js new file mode 100644 index 00000000..ed87f982 --- /dev/null +++ b/mindplot/src/main/javascript/widget/LinkEditor.js @@ -0,0 +1,124 @@ +/* + * 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.widget.LinkEditor = new Class({ + Extends:MooDialog, + initialize : function(model) { + $assert(model, "model can not be null"); + var panel = this._buildPanel(model); + this.parent({ + closeButton:true, + destroyOnClose:true, + title:'Link', + onInitialize: function(wrapper) { + wrapper.setStyle('opacity', 0); + this.fx = new Fx.Morph(wrapper, { + duration: 600, + transition: Fx.Transitions.Bounce.easeOut + }); + this.overlay = new Overlay(this.options.inject, { + duration: this.options.duration + }); + if (this.options.closeOnOverlayClick) this.overlay.addEvent('click', this.close.bind(this)); + }, + + onBeforeOpen: function() { + this.overlay.open(); + this.fx.start({ + 'margin-top': [-200, -100], + opacity: [0, 1] + }).chain(function() { + this.fireEvent('show'); + }.bind(this)); + }, + + onBeforeClose: function() { + this.fx.start({ + 'margin-top': [-100, 0], + opacity: 0 + }).chain(function() { + this.fireEvent('hide'); + }.bind(this)); + this.overlay.close(); + } + }); + this.setContent(panel); + }, + + _buildPanel : function (model) { + var result = new Element('div'); + var form = new Element('form', {'action': 'none', 'id':'linkFormId'}); + + // Add textarea ... + var textArea = new Element('textarea', {placeholder: 'Write your note here ...'}); + if (model.getValue() != null) + textArea.value = model.getValue(); + + textArea.setStyles({'width':'100%', 'height':80,resize: 'none' + }); + textArea.inject(form); + + // Add buttons ... + var buttonContainer = new Element('div').setStyles({paddingTop:5, textAlign:'center'}); + + // Create accept button ... + var okButton = new Element('input', {type:'button', value:'Accept','class':'btn-primary'}); + okButton.addClass('button'); + okButton.addEvent('click', function() { + model.setValue(textArea.value); + this.close(); + }.bind(this)); + okButton.inject(buttonContainer); + + // Create remove button ... + if ($defined(model.getValue())) { + var rmButton = new Element('input', {type:'button', value:'Remove','class':'btn-primary'}); + rmButton.setStyle('margin', '5px'); + rmButton.addClass('button'); + rmButton.inject(buttonContainer); + rmButton.addEvent('click', function() { + model.setValue(null); + this.close(); + }.bind(this)); + buttonContainer.inject(form); + } + + + // Create cancel button ... + var cButton = new Element('input', {type:'button', value:'Cancel','class':'btn-primary'}); + cButton.setStyle('margin', '5px'); + cButton.addClass('button'); + cButton.inject(buttonContainer); + cButton.addEvent('click', function() { + this.close(); + }.bind(this)); + buttonContainer.inject(form); + + result.addEvent('keydown', function(event) { + event.stopPropagation(); + }); + + form.inject(result); + return result; + }, + + show : function() { + this.open(); + } + +}); diff --git a/wise-doc/src/main/webapp/css/common.css b/wise-doc/src/main/webapp/css/common.css index 3806223d..14b98fad 100644 --- a/wise-doc/src/main/webapp/css/common.css +++ b/wise-doc/src/main/webapp/css/common.css @@ -644,4 +644,5 @@ div.installCFG h2{ -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.2); } \ No newline at end of file diff --git a/wise-webapp/src/main/webapp/css/common.css b/wise-webapp/src/main/webapp/css/common.css index 89a50752..5c24311d 100644 --- a/wise-webapp/src/main/webapp/css/common.css +++ b/wise-webapp/src/main/webapp/css/common.css @@ -593,13 +593,15 @@ div.installCFG h2 { top: 0; margin: 0; } + .floating-tip { background-color: #dfcf3c; padding: 5px 15px; color: #666666; - font-weight: bold; - font-size: 11px; + /*font-weight: bold;*/ + /*width: 100px;*/ + font-size: 13px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; -} + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.2);