mirror of
https://bitbucket.org/wisemapping/wisemapping-open-source.git
synced 2024-09-20 11:10:07 +02:00
349 lines
12 KiB
JavaScript
349 lines
12 KiB
JavaScript
/*
|
|
* 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.Menu = new Class({
|
|
initialize : function(designer, containerId, readOnly) {
|
|
$assert(designer, "designer can not be null");
|
|
$assert(containerId, "containerId can not be null");
|
|
// @Todo: Remove hardcode ...
|
|
var baseUrl = "/mindplot/src/main/javascript/widget";
|
|
|
|
// Init variables ...
|
|
this._designer = designer;
|
|
this._toolbarElems = [];
|
|
this._containerId = containerId;
|
|
|
|
// Stop event propagation ...
|
|
$(this._containerId).addEvent('click', function(event) {
|
|
event.stopPropagation();
|
|
return false;
|
|
});
|
|
|
|
$(this._containerId).addEvent('dblclick', function(event) {
|
|
event.stopPropagation();
|
|
return false;
|
|
});
|
|
|
|
// Create panels ...
|
|
var designerModel = designer.getModel();
|
|
var fontFamilyModel = {
|
|
getValue: function() {
|
|
var nodes = designerModel.filterSelectedTopics();
|
|
var result = null;
|
|
for (var i = 0; i < nodes.length; i++) {
|
|
var fontFamily = nodes[i].getFontFamily();
|
|
if (result != null && result != fontFamily) {
|
|
result = null;
|
|
break;
|
|
}
|
|
result = fontFamily;
|
|
}
|
|
return result;
|
|
},
|
|
|
|
setValue: function(value) {
|
|
designer.changeFontFamily(value);
|
|
|
|
}
|
|
};
|
|
this._toolbarElems.push(new mindplot.widget.FontFamilyPanel("fontFamily", fontFamilyModel));
|
|
|
|
var fontSizeModel = {
|
|
getValue: function() {
|
|
var nodes = designerModel.filterSelectedTopics();
|
|
var result = null;
|
|
for (var i = 0; i < nodes.length; i++) {
|
|
var fontSize = nodes[i].getFontSize();
|
|
if (result != null && result != fontSize) {
|
|
result = null;
|
|
break;
|
|
}
|
|
result = fontSize;
|
|
}
|
|
return result;
|
|
},
|
|
setValue: function(value) {
|
|
designer.changeFontSize(value);
|
|
}
|
|
};
|
|
this._toolbarElems.push(new mindplot.widget.FontSizePanel("fontSize", fontSizeModel));
|
|
|
|
var topicShapeModel = {
|
|
getValue: function() {
|
|
var nodes = designerModel.filterSelectedTopics();
|
|
var result = null;
|
|
for (var i = 0; i < nodes.length; i++) {
|
|
var shapeType = nodes[i].getShapeType();
|
|
if (result != null && result != shapeType) {
|
|
result = null;
|
|
break;
|
|
}
|
|
result = shapeType;
|
|
}
|
|
return result;
|
|
},
|
|
setValue: function(value) {
|
|
designer.changeTopicShape(value);
|
|
}
|
|
};
|
|
this._toolbarElems.push(new mindplot.widget.TopicShapePanel("topicShape", topicShapeModel));
|
|
|
|
// Create icon panel dialog ...
|
|
var topicIconModel = {
|
|
getValue: function() {
|
|
return null;
|
|
},
|
|
setValue: function(value) {
|
|
designer.addIconType(value);
|
|
}
|
|
};
|
|
this._toolbarElems.push(new mindplot.widget.IconPanel('topicIcon', topicIconModel));
|
|
|
|
// Topic color item ...
|
|
var topicColorModel =
|
|
{
|
|
getValue : function() {
|
|
var nodes = designerModel.filterSelectedTopics();
|
|
var result = null;
|
|
for (var i = 0; i < nodes.length; i++) {
|
|
var color = nodes[i].getBackgroundColor();
|
|
if (result != null && result != color) {
|
|
result = null;
|
|
break;
|
|
}
|
|
result = color;
|
|
}
|
|
return result;
|
|
},
|
|
setValue : function (hex) {
|
|
designer.changeBackgroundColor(hex);
|
|
}
|
|
};
|
|
this._toolbarElems.push(new mindplot.widget.ColorPalettePanel('topicColor', topicColorModel, baseUrl));
|
|
|
|
// Border color item ...
|
|
var borderColorModel =
|
|
{
|
|
getValue : function() {
|
|
var nodes = designerModel.filterSelectedTopics();
|
|
var result = null;
|
|
for (var i = 0; i < nodes.length; i++) {
|
|
var color = nodes[i].getBorderColor();
|
|
if (result != null && result != color) {
|
|
result = null;
|
|
break;
|
|
}
|
|
result = color;
|
|
}
|
|
return result;
|
|
},
|
|
setValue : function (hex) {
|
|
designer.changeBorderColor(hex);
|
|
}
|
|
};
|
|
this._toolbarElems.push(new mindplot.widget.ColorPalettePanel('topicBorder', borderColorModel, baseUrl));
|
|
|
|
// Font color item ...
|
|
var fontColorModel =
|
|
{
|
|
getValue : function() {
|
|
var result = null;
|
|
var nodes = designerModel.filterSelectedTopics();
|
|
for (var i = 0; i < nodes.length; i++) {
|
|
var color = nodes[i].getFontColor();
|
|
if (result != null && result != color) {
|
|
result = null;
|
|
break;
|
|
}
|
|
result = color;
|
|
}
|
|
return result;
|
|
},
|
|
setValue : function (hex) {
|
|
designer.changeFontColor(hex);
|
|
}
|
|
};
|
|
this._toolbarElems.push(new mindplot.widget.ColorPalettePanel('fontColor', fontColorModel, baseUrl));
|
|
|
|
// Register on close events ...
|
|
this._toolbarElems.forEach(function(elem) {
|
|
elem.addEvent('show', function() {
|
|
this.clear()
|
|
}.bind(this));
|
|
}.bind(this));
|
|
|
|
|
|
// Register Events ...
|
|
$('zoomIn').addEvent('click', function() {
|
|
this.clear();
|
|
designer.zoomIn();
|
|
}.bind(this));
|
|
|
|
$('zoomOut').addEvent('click', function() {
|
|
this.clear();
|
|
designer.zoomOut();
|
|
}.bind(this));
|
|
|
|
$('undoEdition').addEvent('click', function() {
|
|
this.clear();
|
|
designer.undo();
|
|
}.bind(this));
|
|
|
|
$('redoEdition').addEvent('click', function() {
|
|
this.clear();
|
|
designer.redo();
|
|
}.bind(this));
|
|
|
|
$('addTopic').addEvent('click', function() {
|
|
this.clear();
|
|
designer.createChildForSelectedNode();
|
|
}.bind(this));
|
|
|
|
$('deleteTopic').addEvent('click', function() {
|
|
this.clear();
|
|
designer.deleteCurrentNode();
|
|
}.bind(this));
|
|
|
|
|
|
$('topicLink').addEvent('click', function() {
|
|
this.clear();
|
|
designer.addLink();
|
|
}.bind(this));
|
|
|
|
$('topicRelation').addEvent('click', function(event) {
|
|
designer.addRelationShip(event);
|
|
});
|
|
|
|
$('topicNote').addEvent('click', function() {
|
|
this.clear();
|
|
designer.addNote();
|
|
}.bind(this));
|
|
|
|
$('fontBold').addEvent('click', function() {
|
|
designer.changeFontWeight();
|
|
});
|
|
|
|
$('fontItalic').addEvent('click', function() {
|
|
designer.changeFontStyle();
|
|
});
|
|
|
|
designer.addEvent("modelUpdate", function(event) {
|
|
if (event.undoSteps > 0) {
|
|
$("undoEdition").setStyle("background-image", "url(../images/file_undo.png)");
|
|
} else {
|
|
$("undoEdition").setStyle("background-image", "url(../images/file_undo_dis.png)");
|
|
}
|
|
|
|
if (event.redoSteps > 0) {
|
|
$("redoEdition").setStyle("background-image", "url(../images/file_redo.png)");
|
|
} else {
|
|
$("redoEdition").setStyle("background-image", "url(../images/file_redo_dis.png)");
|
|
}
|
|
|
|
});
|
|
|
|
var saveElem = $('saveButton');
|
|
if (saveElem) {
|
|
saveElem.addEvent('click', function() {
|
|
|
|
if (!readOnly) {
|
|
$('saveButton').setStyle('cursor', 'wait');
|
|
(function() {
|
|
designer.save(function() {
|
|
// var monitor = core.Monitor.getInstance();
|
|
// monitor.logMessage('Save completed successfully');
|
|
|
|
saveElem.setStyle('cursor', 'pointer');
|
|
}, true);
|
|
}).delay(1);
|
|
} else {
|
|
new Windoo.Confirm('This option is not enabled in try mode. You must by signed in order to execute this action.<br/> to create an account click <a href="userRegistration.htm">here</a>',
|
|
{
|
|
'window': {theme:Windoo.Themes.wise,
|
|
title:''
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
var discartElem = $('discartElem');
|
|
if (discartElem) {
|
|
discartElem.addEvent('click', function() {
|
|
|
|
if (!readOnly) {
|
|
displayLoading();
|
|
window.document.location = "mymaps.htm";
|
|
} else {
|
|
displayLoading();
|
|
window.document.location = "home.htm";
|
|
}
|
|
});
|
|
}
|
|
|
|
if (readOnly) {
|
|
$('tagIt').addEvent('click', function(event) {
|
|
new Windoo.Confirm('This option is not enabled in try mode. You must by signed in order to execute this action.',
|
|
{
|
|
'window': {theme:Windoo.Themes.wise,
|
|
title:''
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
$('shareIt').addEvent('click', function(event) {
|
|
new Windoo.Confirm('This option is not enabled in try mode. You must by signed in order to execute this action.',
|
|
{
|
|
'window': {theme:Windoo.Themes.wise,
|
|
title:''
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
$('publishIt').addEvent('click', function(event) {
|
|
new Windoo.Confirm('This option is not enabled in try mode. You must by signed in order to execute this action.',
|
|
{
|
|
'window': {theme:Windoo.Themes.wise,
|
|
title:''
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
$('history').addEvent('click', function(event) {
|
|
new Windoo.Confirm('This option is not enabled in try mode. You must by signed in order to execute this action.',
|
|
{
|
|
'window': {theme:Windoo.Themes.wise,
|
|
title:''
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
},
|
|
|
|
clear : function() {
|
|
this._toolbarElems.forEach(function(elem) {
|
|
elem.hide();
|
|
});
|
|
}
|
|
}); |