- Improve logging mechanism

- Manage errors on editor loading.
This commit is contained in:
Paulo Veiga 2009-06-11 17:43:45 +00:00
parent fab4f67e9d
commit 3114b448ea
21 changed files with 3118 additions and 774 deletions

View File

@ -1,3 +1 @@
- Check mail jars
- Google Tracking
- Customizable JSP Replacements

View File

@ -51,7 +51,7 @@
<include>${basedir}/target/tmp/header-min.js</include>
<include>${basedir}/target/tmp/ColorPicker-min.js</include>
<include>${basedir}/target/tmp/Loader-min.js</include>
<include>${basedir}/target/tmp/Logger-min.js</include>
<include>${basedir}/target/tmp/log4js-min.js</include>
<include>${basedir}/target/tmp/Monitor-min.js</include>
<include>${basedir}/target/tmp/Point-min.js</include>
<include>${basedir}/target/tmp/UserAgent-min.js</include>

View File

@ -1,129 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
core.Logger =
{
_enabled: false,
setEnabled: function (enabled) {
this._enabled = enabled;
},init: function(serverLogger)
{
this._serverLogger = serverLogger;
if (window.onerror) {
// Save any previously defined handler to call
core.Logger._origOnWindowError = window.onerror;
}
window.onerror = core.Logger._onWindowError;
},
log: function(message, severity, src)
{
if (!severity)
{
severity = core.LoggerSeverity.DEBUG;
}
// Error messages must be loggued in the server ...
if (severity >= core.LoggerSeverity.ERROR)
{
if (this._serverLogger)
{
try
{
this._serverLogger.logError(core.LoggerSeverity.ERROR, message);
} catch(e)
{
}
}
}
// // Finally, log the error in debug console if it's enabled.
if (this._enabled)
{
this._browserLogger(message);
}
},
_browserLogger: function(message) {
// Firebug is not enabled.
if (core.Logger._origOnWindowError) {
core.Logger._origOnWindowError();
}
if (!console)
{
if (!this._isInitialized)
{
this._console = window.document.createElement("div");
this._console.style.position = "absolute";
this._console.style.width = "300px";
this._console.style.height = "200px";
this._console.style.bottom = 0;
this._console.style.right = 0;
this._console.style.border = '1px solid black';
this._console.style.background = 'yellow';
this._console.style.zIndex = 60000;
this._textArea = window.document.createElement("textarea");
this._textArea.cols = "40";
this._textArea.rows = "10";
this._console.appendChild(this._textArea);
window.document.body.appendChild(this._console);
this._isInitialized = true;
}
this._textArea.value = this._textArea.value + "\n" + msg;
} else
{
// Firebug console...
console.log(message);
}
},
/**
* Handles logging of messages due to window error events.
*
* @method _onWindowError
* @param sMsg {String} The error message.
* @param sUrl {String} URL of the error.
* @param sLine {String} Line number of the error.
* @private
*/
_onWindowError: function(sMsg, sUrl, sLine) {
// Logger is not in scope of this event handler
// http://cfis.savagexi.com/articles/2007/05/08/what-went-wrong-with-my-javascript
try {
core.Logger.log(sMsg + ' (' + sUrl + ', line ' + sLine + ')', core.LoggerSeverity.ERROR, "window");
}
catch(e) {
return false;
}
return true;
},
logError: function(msg) {
core.Logger.log(msg, core.LoggerSeverity.ERROR, "code");
}
};
core.LoggerSeverity =
{
DEBUG: 1,
WARNING: 2,
ERROR: 3,
WINDOW: 4
};

View File

@ -1,22 +1,22 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
core.UserAgent = {
_isVMLSupported:null,
isVMLSupported: function()
@ -31,10 +31,6 @@ core.UserAgent = {
{
return !core.UserAgent.isVMLSupported();
},
isIframeWorkaroundRequired: function()
{
return core.UserAgent.OS == "Mac" && core.UserAgent.browser == "Firefox" && core.UserAgent.version < 3;
},
isMozillaFamily: function()
{
return this.browser == "Netscape" || this.browser == "Firefox";

View File

@ -1,22 +1,22 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
core.Utils =
{
isDefined: function(val)
@ -70,21 +70,7 @@ core.assert = function(assert, message)
core.findElement = function(name)
{
var result;
if (core.UserAgent.isIframeWorkaroundRequired())
{
var iframe = $('mindplotIFrame');
var doc = iframe.contentDocument;
if (doc == undefined || doc == null)
doc = iframe.contentWindow.document;
result = $(doc.getElementById(name));
}
if (!result)
{
result = $(name);
}
return result;
return $(name);
}
Math.sign = function(value)

View File

@ -1,96 +1,47 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
/*
Created By: Chris Campbell
Website: http://particletree.com
Date: 2/1/2006
Created By: Chris Campbell
Website: http://particletree.com
Date: 2/1/2006
Inspired by the lightbox implementation found at http://www.huddletogether.com/projects/lightbox/
*/
Inspired by the lightbox implementation found at http://www.huddletogether.com/projects/lightbox/
/*-----------------------------------------------------------------------------------------------*/
/*-------------------------------GLOBAL VARIABLES------------------------------------*/
var detect = navigator.userAgent.toLowerCase();
var OS,browser,version,total,thestring;
/*-----------------------------------------------------------------------------------------------*/
//Browser detect script origionally created by Peter Paul Koch at http://www.quirksmode.org/
function getBrowserInfo(evt) {
if (checkIt('konqueror')) {
browser = "Konqueror";
OS = "Linux";
}
else if (checkIt('safari')) browser = "Safari"
else if (checkIt('omniweb')) browser = "OmniWeb"
else if (checkIt('opera')) browser = "Opera"
else if (checkIt('webtv')) browser = "WebTV";
else if (checkIt('icab')) browser = "iCab"
else if (checkIt('msie')) browser = "Internet Explorer"
else if (!checkIt('compatible')) {
browser = "Netscape Navigator"
version = detect.charAt(8);
}
else browser = "An unknown browser";
if (!version) version = detect.charAt(place + thestring.length);
if (!OS) {
if (checkIt('linux')) OS = "Linux";
else if (checkIt('x11')) OS = "Unix";
else if (checkIt('mac')) OS = "Mac"
else if (checkIt('win')) OS = "Windows"
else OS = "an unknown operating system";
}
}
function checkIt(string) {
place = detect.indexOf(string) + 1;
thestring = string;
return place;
}
/*-----------------------------------------------------------------------------------------------*/
$(window).addEvent('load', getBrowserInfo);
core.WaitDialog = new Class({
initialize: function(contentId) {
this.content = $(contentId);
},
yPos : 0,
xPos : 0,
// Turn everything on - mainly the IE fixes
activate: function(changeCursor)
initialize: function() {
},
// Turn everything on - mainly the IE fixes
activate: function(changeCursor, dialogContent)
{
// if (browser == 'Internet Explorer'){
//// this.getScroll();
// this.prepareIE('100%', 'hidden');
//// this.setScroll(0,0);
//// this.hideSelects('hidden');
// }
this.content = dialogContent;
this._initLightboxMarkup();
this.displayLightbox("block");
// Change to loading cursor.
@ -99,41 +50,27 @@ core.WaitDialog = new Class({
window.document.body.style.cursor = "wait";
}
},
changeContent: function(dialogContent, changeCursor)
{
this.content = dialogContent;
if (!$('lbContent'))
{
// Dialog is not activated. Nothing to do ...
window.document.body.style.cursor = "pointer";
return;
}
// Ie requires height to 100% and overflow hidden or else you can scroll down past the lightbox
prepareIE: function(height, overflow) {
bod = document.getElementsByTagName('body')[0];
bod.style.height = height;
bod.style.overflow = overflow;
this.processInfo();
htm = document.getElementsByTagName('html')[0];
htm.style.height = height;
htm.style.overflow = overflow;
},
// In IE, select elements hover on top of the lightbox
hideSelects: function(visibility) {
selects = document.getElementsByTagName('select');
for (i = 0; i < selects.length; i++) {
selects[i].style.visibility = visibility;
// Change to loading cursor.
if (changeCursor)
{
window.document.body.style.cursor = "wait";
}else
{
window.document.body.style.cursor = "auto";
}
},
// Taken from lightbox implementation found at http://www.huddletogether.com/projects/lightbox/
getScroll: function() {
if (self.pageYOffset) {
this.yPos = self.pageYOffset;
} else if (document.documentElement && document.documentElement.scrollTop) {
this.yPos = document.documentElement.scrollTop;
} else if (document.body) {
this.yPos = document.body.scrollTop;
}
},
setScroll: function(x, y) {
window.scrollTo(x, y);
},
displayLightbox: function(display) {
$('overlay').style.display = display;
$('lightbox').style.display = display;
@ -141,15 +78,19 @@ core.WaitDialog = new Class({
this.processInfo();
},
// Display Ajax response
// Display dialog content ...
processInfo: function() {
var info = new Element('div').setProperty('id', 'lbContent');
info.setHTML(this.content.innerHTML);
info.injectBefore($('lbLoadMessage'));
if ($('lbContent'))
$('lbContent').remove();
var lbContentElement = new Element('div').setProperty('id', 'lbContent');
lbContentElement.setHTML(this.content.innerHTML);
lbContentElement.injectBefore($('lbLoadMessage'));
$('lightbox').className = "done";
},
// Search through new links within the lightbox, and attach click event
// Search through new links within the lightbox, and attach click event
actions: function() {
lbActions = document.getElementsByClassName('lbAction');
@ -164,53 +105,31 @@ core.WaitDialog = new Class({
},
// Example of creating your own functionality once lightbox is initiated
insert: function(e) {
var event = new Event(e);
link = event.target;
if ($('lbContent'))
$('lbContent').remove();
var myAjax = new Ajax.Request(
link.href,
{method: 'post', parameters: "", onComplete: this.processInfo.pass(this)}
);
},
// Example of creating your own functionality once lightbox is initiated
// Example of creating your own functionality once lightbox is initiated
deactivate: function(time) {
if ($('lbContent'))
$('lbContent').remove();
//
// if (browser == "Internet Explorer"){
// this.setScroll(0,this.yPos);
// this.prepareIE("auto", "auto");
// this.hideSelects("visible");
// }
this.displayLightbox("none");
window.document.body.style.cursor = "default";
}
});
, _initLightboxMarkup:function()
{
// Add overlay element inside body ...
var bodyElem = document.getElementsByTagName('body')[0];
var overlayElem = new Element('div').setProperty('id', 'overlay');
overlayElem.injectInside(bodyElem);
/*-----------------------------------------------------------------------------------------------*/
// Add lightbox element inside body ...
var lightboxElem = new Element('div').setProperty('id', 'lightbox');
lightboxElem.addClass('loading');
// Onload, make all links that need to trigger a lightbox active
function initialize() {
addLightboxMarkup();
valid = new core.WaitDialog($('sampleDialog'));
}
var lbLoadMessageElem = new Element('div').setProperty('id', 'lbLoadMessage');
lbLoadMessageElem.injectInside(lightboxElem);
// Add in markup necessary to make this work. Basically two divs:
// Overlay holds the shadow
// Lightbox is the centered square that the content is put into.
function addLightboxMarkup() {
var body = document.getElementsByTagName('body')[0];
overlay = new Element('div').setProperty('id', 'overlay').injectInside(document.body);
var lb = new Element('div').setProperty('id', 'lightbox');
lb.addClass('loading');
var tmp = new Element('div').setProperty('id', 'lbLoadMessage').injectInside(lb);
lb.injectInside(document.body);
}
lightboxElem.injectInside(bodyElem);
}
});

View File

@ -1,21 +1,94 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
// Init default logger level ...
var wLogger = new Log4js.getLogger("WiseMapping");
wLogger.setLevel(Log4js.Level.ALL);
wLogger.addAppender(new Log4js.BrowserConsoleAppender());
// Is logger service available ?
if (window.LoggerService)
{
Log4js.WiseServerAppender = function()
{
this.layout = new Log4js.SimpleLayout();
};
Log4js.WiseServerAppender.prototype = Log4js.extend(new Log4js.Appender(), {
/**
* @see Log4js.Appender#doAppend
*/
doAppend: function(loggingEvent) {
try {
var message = this.layout.format(loggingEvent);
var level = this.levelCode(loggingEvent);
window.LoggerService.logError(level, message);
} catch (e) {
alert(e);
}
},
/**
* toString
*/
toString: function() {
return "Log4js.WiseServerAppender";
},
levelCode: function(loggingEvent)
{
var retval;
switch (loggingEvent.level) {
case Log4js.Level.FATAL:
retval = 3;
break;
case Log4js.Level.ERROR:
retval = 3;
break;
case Log4js.Level.WARN:
retval = 2;
break;
default:
retval = 1;
break;
}
return retval;
}
});
wLogger.addAppender(new Log4js.WiseServerAppender());
}
// Handle error events ...
window.onerror = function(sMsg, sUrl, sLine)
{
window.hasUnexpectedErrors = true;
var msg = sMsg + ' (' + sUrl + ', line ' + sLine + ')';
wLogger.fatal(msg);
return true;
};
window.__coreLoad = function()
{

View File

@ -17,4 +17,4 @@
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
var core = {};
var core = {};

File diff suppressed because it is too large Load Diff

View File

@ -426,6 +426,9 @@ mindplot.MindmapDesigner.prototype.loadFromXML = function(mapId, xmlContent)
// Place the focus on the Central Topic
var centralTopic = this.getCentralTopic();
this._goToNode.attempt(centralTopic, this);
this._fireEvent("loadsuccess");
};
mindplot.MindmapDesigner.prototype.load = function(mapId)
@ -444,6 +447,8 @@ mindplot.MindmapDesigner.prototype.load = function(mapId)
// Place the focus on the Central Topic
var centralTopic = this.getCentralTopic();
this._goToNode.attempt(centralTopic, this);
this._fireEvent("loadsuccess");
};
mindplot.MindmapDesigner.prototype._loadMap = function(mapId, mindmapModel)
@ -466,6 +471,8 @@ mindplot.MindmapDesigner.prototype._loadMap = function(mapId, mindmapModel)
nodeGraph.setBranchVisibility(true);
}
}
this._fireEvent("loadsuccess");
};

View File

@ -1,22 +1,22 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
mindplot.PersistanceManager = function(editorService)
{
this._editorService = editorService;
@ -43,7 +43,7 @@ mindplot.PersistanceManager.prototype.save = function(mindmap, chartType, xmlCha
if (response.msgCode != "OK")
{
monitor.logError("Save could not be completed. Please,try again in a couple of minutes.");
core.Logger.logError(response.msgDetails);
wLogger.error(response.msgDetails);
} else
{
// Execute on success handler ...
@ -56,7 +56,7 @@ mindplot.PersistanceManager.prototype.save = function(mindmap, chartType, xmlCha
errorHandler:function(message) {
var monitor = core.Monitor.getInstance();
monitor.logError("Save could not be completed. Please,try again in a couple of minutes.");
core.Logger.logError(message);
wLogger.error(message);
},
verb:"POST",
async: false
@ -89,7 +89,7 @@ mindplot.PersistanceManager.prototype.load = function(mapId)
var msg = response.msgDetails;
var monitor = core.Monitor.getInstance();
monitor.logFatal("We're sorry, an error has occurred and we can't load your map. Please try again in a few minutes.");
core.Logger.logError(msg);
wLogger.error(msg);
}
},
verb:"GET",
@ -97,7 +97,7 @@ mindplot.PersistanceManager.prototype.load = function(mapId)
errorHandler:function(msg) {
var monitor = core.Monitor.getInstance();
monitor.logFatal("We're sorry, an error has occurred and we can't load your map. Please try again in a few minutes.");
core.Logger.logError(msg);
wLogger.error(msg);
}
});

View File

@ -1,22 +1,22 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
web2d.peer.svg.GroupPeer = function()
{
var svgElement = window.document.createElementNS(this.svgNamespace, 'g');
@ -77,7 +77,6 @@ web2d.peer.svg.GroupPeer.prototype.updateTransform = function()
var cx = this._position.x - this._coordOrigin.x * sx;
var cy = this._position.y - this._coordOrigin.y * sy;
//Logger.logMsg("Group.updateTrasform:"+"translate("+ cx + "," + cy+ ") scale("+ sx + "," + sy + ")");
this._native.setAttribute("transform", "translate(" + cx + "," + cy + ") scale(" + sx + "," + sy + ")");
};

View File

@ -312,7 +312,8 @@ public class UserAgent implements Serializable {
public boolean isBrowserSupported() {
// Is it a supported browser ?.
final UserAgent.Product product = this.getProduct();
boolean result = product == UserAgent.Product.FIREFOX && this.isVersionGreatedOrEqualThan(1, 5);
boolean result = product == UserAgent.Product.FIREFOX && ((this.isVersionGreatedOrEqualThan(1, 5) && this.getOs() != UserAgent.OS.MAC) || (this.isVersionGreatedOrEqualThan(3, 0) && this.getOs() == UserAgent.OS.MAC));
result = result || product == UserAgent.Product.EXPLORER && this.isVersionGreatedOrEqualThan(6, 0) && this.getOs() == UserAgent.OS.WINDOWS;
result = result || product == UserAgent.Product.OPERA && this.isVersionGreatedOrEqualThan(9, 2);
return result;

View File

@ -70,6 +70,7 @@ YES=yes
NO=no
EDITOR.LOADING=Loading ...
EDITOR.ERROR_LOADING=An unexpected error has occurred initializing this page. <br/>We'll solve this problem as soon as possible. Please, click <a href="mymaps.htm">here</a> to return to your mindmap list.
SITE.TITLE=WiseMapping
SITE.SLOGAN=Visual Thinking Evolution
SAVE=Save

View File

@ -24,7 +24,7 @@ html {
top: 30px;
}
#loadingContainer {
#waitingContainer,#errorContainer {
position: relative;
top: 80px;
height: 120px; /*background: whitesmoke;*/
@ -36,7 +36,12 @@ html {
}
#loadingContainer .loadingText {
#errorContainer {
width: 400px;
border: 1px solid red;
}
#waitingContainer .loadingText {
position: relative;
top: 50%;
margin-top: -35px;
@ -47,9 +52,32 @@ html {
float: left;
}
#loadingContainer .loadingIcon {
#errorContainer .loadingText {
position: relative;
background: url( ../images/loadingIcon.gif ) no-repeat;
top: 50%;
margin-top: -80px;
font-size: 15px;
font-weight: bold;
vertical-align: text-bottom;
height: 30px;
float: right;
padding-left:120px;
}
#waitingContainer .loadingIcon {
position: relative;
background: url(../images/loadingIcon.gif) no-repeat;
top: 50%;
margin-top: -65px;
height: 100px;
width: 121px;
float: left;
clear: both;
}
#errorContainer .loadingIcon {
position: relative;
background: url(../images/errorIcon.png) no-repeat;
top: 50%;
margin-top: -65px;
height: 100px;
@ -107,7 +135,7 @@ div#toolbar .buttonContainer {
border: 1px solid #BBB4D6;
padding: 2px;
margin: 1px;
padding-bottom:4px;
padding-bottom: 4px;
}
.buttonContainer legend {
@ -118,8 +146,8 @@ div#toolbar .buttonContainer {
font-size: 11px;
text-align: right;
margin: 0px;
-moz-margin-start:7px;
-moz-margin-end:7px;
-moz-margin-start: 7px;
-moz-margin-end: 7px;
}
div#toolbar .button {
@ -128,7 +156,7 @@ div#toolbar .button {
float: left;
margin: 0px 2px 2px 2px;
cursor: pointer;
text-align:center;
text-align: center;
}
div#toolbar .comboButton {
@ -150,22 +178,21 @@ div#toolbar .comboButton:hover {
width: 34px;
}
div#toolbar .button img{
div#toolbar .button img {
width: 30px;
height: 30px;
border:0;
border: 0;
}
div#toolbar .toolbarLabel{
position:relative;
top:55%;
text-align:center;
width:34px;
height:36px;
font-size:10px;
div#toolbar .toolbarLabel {
position: relative;
top: 55%;
text-align: center;
width: 34px;
height: 36px;
font-size: 10px;
}
.mapSeparator {
width: 1px;
height: 20px;
@ -175,151 +202,149 @@ div#toolbar .toolbarLabel{
}
div#file, div#zoom, div#node, div#font, div#share {
position:absolute;
top:-6px;
left:3px;
position: absolute;
top: -6px;
left: 3px;
}
div#zoom {
left:229px;
left: 229px;
}
div#node {
left:311px;
left: 311px;
}
div#font {
left:619px;
/*left:581px;*/
left: 619px; /*left:581px;*/
}
div#share {
left:815px;
/*left:777px;*/
left: 815px; /*left:777px;*/
}
div#saveButton {
background: url( ../images/save.png) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/save.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
div#discardButton {
background: url( ../images/close.png) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/close.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
div#history {
background: url( ../images/history.png) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/history.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
div#print {
background: url( ../images/file_printer.png) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/file_printer.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
div#undoEdition {
background: url( ../images/file_undo_dis.png) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/file_undo_dis.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
div#redoEdition {
background: url( ../images/file_redo_dis.png) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/file_redo_dis.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
#export {
background: url( ../images/file_export.png) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/file_export.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
div#zoomIn {
background: url( ../images/zoom_in.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/zoom_in.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
#zoomOut {
background: url( ../images/zoom_out.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/zoom_out.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
#addTopic {
background: url( ../images/topic_add.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/topic_add.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
#deleteTopic {
background: url( ../images/topic_delete.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/topic_delete.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
div#topicColor {
background: url( ../images/topic_bgcolor.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/topic_bgcolor.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
z-index: 4;
}
div#topicIcon {
background: url( ../images/topic_icon.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/topic_icon.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
z-index: 4;
}
div#topicNote {
background: url( ../images/note.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/note.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
z-index: 4;
}
div#topicLink {
background: url( ../images/topic_link.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/topic_link.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
z-index: 4;
}
div#topicNote {
background-image: url( ../images/note.png );
behavior: url( ../css/iepngfix.htc );
background-image: url(../images/note.png);
behavior: url(../css/iepngfix.htc);
z-index: 4;
}
#topicBorder {
background: url( ../images/topic_border.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/topic_border.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
width: 30px;
}
#fontFamily {
background: url( ../images/font_type.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/font_type.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
#topicShape {
background: url( ../images/topic_shape.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/topic_shape.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
width: 30px;
}
#fontBold {
background: url( ../images/font_bold.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/font_bold.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
#fontItalic {
background: url( ../images/font_italic.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/font_italic.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
div#fontColor {
background: url( ../images/font_color.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/font_color.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
z-index: 4;
}
#fontSize {
float: left;
background: url( ../images/font_size.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/font_size.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
#font-size {
@ -336,19 +361,19 @@ div#fontColor {
}
#shareIt {
background: url( ../images/collab_share.png ) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/collab_share.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
#publishIt {
background: url( ../images/collab_publish.png) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/collab_publish.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
#tagIt {
background: url( ../images/collab_tag.png) no-repeat center top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/collab_tag.png) no-repeat center top;
behavior: url(../css/iepngfix.htc);
}
#colorPalette {
@ -414,7 +439,7 @@ div#actionsContainer {
width: 190px;
right: 0;
margin: 10px;
float:left;
float: left;
}
#actionsContainer .button {
@ -447,17 +472,16 @@ div#actionsContainer {
text-decoration: none;
}
#actionsContainer .buttonStart {
width: 6px;
height: 25px;
background: url( ../images/btnStart2.png ) no-repeat left top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/btnStart2.png) no-repeat left top;
behavior: url(../css/iepngfix.htc);
float: left;
}
#actionsContainer .buttonBody {
background: url( ../images/btnBody2.png );
background: url(../images/btnBody2.png);
float: left;
height: 18px;
padding: 0px 5px;
@ -469,8 +493,8 @@ div#actionsContainer {
#actionsContainer .buttonEnd {
width: 7px;
height: 23px;
background: url( ../images/btnEnd2.png ) no-repeat right top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/btnEnd2.png) no-repeat right top;
behavior: url(../css/iepngfix.htc);
float: left;
}
@ -489,8 +513,8 @@ div#footerEditor {
width: 80px;
float: right;
margin: 5px;
background: url( ../images/logo-vsmall.png ) no-repeat right top;
behavior: url( ../css/iepngfix.htc );
background: url(../images/logo-vsmall.png) no-repeat right top;
behavior: url(../css/iepngfix.htc);
}
#footerEditor .msgLoggerContainer {
@ -508,14 +532,14 @@ div#msgStart {
float: left;
height: 36px;
width: 16px;
background: url( ../images/footerStart.png ) no-repeat right top;
background: url(../images/footerStart.png) no-repeat right top;
}
div#msgEnd {
float: left;
height: 36px;
width: 16px;
background: url( ../images/footerEnd.png ) no-repeat right top;
background: url(../images/footerEnd.png) no-repeat right top;
}
@ -523,7 +547,7 @@ div#msgLogger {
float: left;
height: 36px;
width: 500px;
background: url( ../images/footerBody.png ) repeat-x right top;
background: url(../images/footerBody.png) repeat-x right top;
text-align: center;
white-space: nowrap;
padding: 5px;
@ -567,7 +591,7 @@ ol#toc li {
}
ol#toc a {
background: #fff url( ../images/tab4.png );
background: #fff url(../images/tab4.png);
color: #008;
display: block;
float: left;
@ -597,7 +621,7 @@ ol#toc li.current span {
}
ol#toc span {
background: #fff url( ../images/tab4.png ) 100% 0;
background: #fff url(../images/tab4.png) 100% 0;
display: block;
line-height: 2em;
padding-right: 10px;
@ -612,7 +636,7 @@ ol#toc span {
}
#workspaceContainer {
background: url( ../images/grid.gif ) bottom left repeat !important;
background: url(../images/grid.gif) bottom left repeat !important;
}
@ -653,8 +677,8 @@ span#lastSaved {
opacity: 0.9;
cursor: move;
background-color: #69686F;
filter: alpha( opacity = 90 );
color:#000c8f;
filter: alpha(opacity = 90);
color: #000c8f;
}
#tryEditorWarning a {
@ -681,7 +705,7 @@ div#helpContainer {
padding: 20px;
cursor: move;
background-color: #69686F;
filter: alpha( opacity = 90 );
filter: alpha(opacity = 90);
}
div#helpContent h1 {
@ -703,7 +727,7 @@ div.close {
top: 7px;
right: 10px;
cursor: pointer;
background: url( ../images/close12_1.gif ) bottom left no-repeat !important;
background: url(../images/close12_1.gif) bottom left no-repeat !important;
}
div#helpContent li {
@ -716,5 +740,5 @@ div#helpContent li {
div#small_error_icon {
padding-left: 18px;
min-height: 16px;
background: url( ../images/error_icon.png ) bottom left no-repeat !important;
background: url(../images/error_icon.png) bottom left no-repeat !important;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,22 +1,22 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
/*Extend mootools known keys*/
ExtendedKeys = {
'insert': 45,
@ -443,8 +443,14 @@ function afterWisemapLoading()
shapeTypePanel();
fontSizePanel();
// Disable loading dialog ...
setTimeout("loadingDialog.deactivate();", 500);
// If not problem has occured, I close the dialod ...
var closeDialog = function(){
if(!window.hasUnexpectedErrors)
{
waitDialog.deactivate();
}
}.delay(500);
}
function buildIconChooser() {
@ -497,36 +503,7 @@ function buildMindmapDesigner()
var monitor = new core.Monitor($('msgLoggerContainer'), $('msgLogger'));
core.Monitor.setInstance(monitor);
// Initialize logger...
core.Logger.init(window.LoggerService);
var container = $('mindplot');
var footer = $('footerEditor');
if (core.UserAgent.isIframeWorkaroundRequired())
{
var iframe = document.createElement('iframe');
iframe.id = "mindplotIFrame";
var top = container.offsetTop;
var bottom = footer.offsetTop;
iframe.setStyle('width', "100%");
iframe.setStyle('height', bottom - top + "px");
iframe.setStyle('overflow', "hidden");
iframe.setStyle('border', "none");
container.appendChild(iframe);
var mapContainer = "<div id='mindplot' style='background: url( ../images/grid.gif ) bottom left repeat !important;'></div><script>function styleMe() {" +
"var small_head = document.getElementsByTagName('head').item(0);" +
"var thestyle = document.createElement('link');" +
"thestyle.setAttribute('rel', 'stylesheet');thestyle.setAttribute('type', 'text/css');thestyle.setAttribute('href', '../css/bubble.css');small_head.appendChild(thestyle);}; styleMe();</script>";
var doc = iframe.contentDocument;
if (doc == undefined || doc == null)
doc = iframe.contentWindow.document;
doc.open();
doc.write(mapContainer);
doc.close();
$(doc.body).setStyle('margin', '0px');
container = doc.getElementById('mindplot');
}
// Initialize Editor ...
var persistantManager = new mindplot.PersistanceManager(window.MapEditorService);
@ -534,7 +511,7 @@ function buildMindmapDesigner()
var screenWidth = window.getWidth();
var screenHeight = window.getHeight();
// Positionate node ... h
// Positionate node ...
// header - footer
screenHeight = screenHeight - 90 - 61;

View File

@ -1,21 +1,21 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
*/
function afterCoreLoading()
{
@ -34,7 +34,6 @@ function afterWisemapLoading()
{
buildMindmapDesigner();
$('zoomIn').addEvent('click', function(event) {
designer.zoomIn();
});
@ -43,8 +42,16 @@ function afterWisemapLoading()
designer.zoomOut();
});
// Disable loading dialog ...
setTimeout("loadingDialog.deactivate();", 500);
// If not problem has occured, I close the dialod ...
var closeDialog = function() {
if (!window.hasUnexpectedErrors)
{
waitDialog.deactivate();
}
}.delay(500);
}
function setCurrentColorPicker(colorPicker)
@ -56,36 +63,7 @@ function setCurrentColorPicker(colorPicker)
function buildMindmapDesigner()
{
// Initialize logger...
core.Logger.init(window.LoggerService);
var container = $('mindplot');
var footer = $('embFooter');
if (core.UserAgent.isIframeWorkaroundRequired())
{
var iframe = document.createElement('iframe');
iframe.id = "mindplotIFrame";
var top = container.offsetTop;
var bottom = footer.offsetTop;
iframe.setStyle('width', "100%");
iframe.setStyle('height', bottom - top + "px");
iframe.setStyle('overflow', "hidden");
iframe.setStyle('border', "none");
container.appendChild(iframe);
var mapContainer = "<div id='mindplot' style='background: url( ../images/grid.gif ) bottom left repeat !important;'></div><script>function styleMe() {" +
"var small_head = document.getElementsByTagName('head').item(0);" +
"var thestyle = document.createElement('link');" +
"thestyle.setAttribute('rel', 'stylesheet');thestyle.setAttribute('type', 'text/css');thestyle.setAttribute('href', '../css/bubble.css');small_head.appendChild(thestyle);}; styleMe();</script>";
var doc = iframe.contentDocument;
if (doc == undefined || doc == null)
doc = iframe.contentWindow.document;
doc.open();
doc.write(mapContainer);
doc.close();
$(doc.body).setStyle('margin', '0px');
container = doc.getElementById('mindplot');
}
// Initialize Editor ...
var persistantManager = new mindplot.PersistanceManager(window.MapEditorService);
@ -93,10 +71,6 @@ function buildMindmapDesigner()
var screenWidth = window.getWidth();
var screenHeight = window.getHeight();
// Positionate node ...
// header - footer
screenHeight = screenHeight;
// body margin ...
editorProperties.width = screenWidth;
editorProperties.height = screenHeight;

View File

@ -9,8 +9,8 @@
<p>Although you can use our site with that browser, some features may not be functional.</p>
WiseMapping is optimized for use with:
<ul>
<li>Internet Explorer 6.0 or greater</li>
<li>Firefox 1.5 or greater</li>
<li>Internet Explorer 7.0 or greater</li>
<li>Firefox 3.0 or greater</li>
<li>Opera 9.21 or greater</li>
</ul>

View File

@ -23,10 +23,19 @@
</div>
</div>
<script type="text/javascript">
//Dialog box display ...
var loadingDialog = new core.WaitDialog('waitDialog');
addLightboxMarkup();
loadingDialog.activate(true);
var waitDialog = new core.WaitDialog();
waitDialog.activate(true, $("waitDialog"));
$(window).addEvent("error", function(event) {
// Show error dialog ...
waitDialog.changeContent($("errorDialog"), false);
return false;
});
var mapId = '${mindmap.id}';
var mapXml = '${mapXml}';
var editorProperties = {zoom:${zoom}};

View File

@ -20,6 +20,9 @@
<link rel="stylesheet" type="text/css" href="../css/bubble.css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/thirdparty.css">
<script type="text/javascript" src="../dwr/engine.js"></script>
<script type="text/javascript" src="../dwr/interface/LoggerService.js"></script>
<script type='text/javascript' src='../js/wiseLibrary.js'></script>
<script type='text/javascript' src='../js/core.js'></script>
@ -38,18 +41,35 @@
</form>
<div id="waitDialog" style="display:none">
<div id="loadingContainer">
<div id="waitingContainer">
<div class="loadingIcon"></div>
<div class="loadingText">
<spring:message code="EDITOR.LOADING"/>
</div>
</div>
</div>
<div id="errorDialog" style="display:none">
<div id="errorContainer">
<div class="loadingIcon"></div>
<div class="loadingText">
<spring:message code="EDITOR.ERROR_LOADING"/>
</div>
</div>
</div>
<script type="text/javascript">
//Dialog box display ...
var loadingDialog = new core.WaitDialog('waitDialog');
addLightboxMarkup();
loadingDialog.activate(true);
var waitDialog = new core.WaitDialog();
waitDialog.activate(true, $("waitDialog"));
$(window).addEvent("error", function(event) {
// Show error dialog ...
waitDialog.changeContent($("errorDialog"), false);
return false;
});
var mapId = '${mindmap.id}';
var mapXml = '${mapXml}';
var editorProperties = ${mindmap.properties};
@ -100,162 +120,163 @@
</div>
<div id="toolbar">
<div id="editTab" class="tabContent">
<div id="file" class="buttonContainer" title="<spring:message code="FILE"/>">
<fieldset>
<legend>
<spring:message code="FILE"/>
</legend>
<div id="saveButton" class="button" title="<spring:message code="SAVE"/>">
<div class="toolbarLabel"><p><spring:message code="SAVE"/></p></div>
</div>
<div id="discardButton" class="button" title="<spring:message code="CLOSE"/>">
<div class="toolbarLabel"><p><spring:message code="CLOSE"/></p></div>
</div>
<div id="undoEdition" class="button" title="<spring:message code="UNDO_EDITION"/>">
<div class="toolbarLabel"><p><spring:message code="UNDO"/></p></div>
</div>
<div id="redoEdition" class="button" title="<spring:message code="REDO_EDITION"/>">
<div class="toolbarLabel"><p><spring:message code="REDO"/></p></div>
</div>
<a id="printAnchor" href="javascript:printMap();" title="<spring:message code="PRINT"/>">
<div id="print" class="button" title="<spring:message code="PRINT"/>">
<div class="toolbarLabel"><p><spring:message code="PRINT"/></p></div>
</div>
</a>
<a id="exportAnchor" href="export.htm?mapId=${mindmap.id}" rel="moodalbox 600px 400px"
title="<spring:message code="EXPORT_DETAILS"/>">
<div id="export" class="button" title="<spring:message code="EXPORT"/>">
<div class="toolbarLabel"><p><spring:message code="EXPORT"/></p></div>
</div>
</a>
</fieldset>
</div>
<div id="zoom" class="buttonContainer" title="Zoom In">
<fieldset>
<legend>
<spring:message code="ZOOM"/>
</legend>
<div id="zoomIn" class="button" title="<spring:message code="ZOOM_IN"/>">
<div class="toolbarLabel"><p><spring:message code="IN"/></p></div>
</div>
<div id="zoomOut" class="button" title="<spring:message code="ZOOM_OUT"/>">
<div class="toolbarLabel"><p><spring:message code="OUT"/></p></div>
</div>
</fieldset>
</div>
<div id="node" class="buttonContainer" title="Node Properties">
<fieldset>
<legend>
<spring:message code="TOPIC"/>
</legend>
<div id="topicShape" class="button comboButton" title="<spring:message code="TOPIC_SHAPE"/>">
<div class="toolbarLabel"><p><spring:message code="SHAPE"/></p></div>
</div>
<div id="addTopic" class="button" title="<spring:message code="TOPIC_ADD"/>">
<div class="toolbarLabel"><p><spring:message code="ADD"/></p></div>
</div>
<div id="deleteTopic" class="button" title="<spring:message code="TOPIC_DELETE"/>">
<div class="toolbarLabel"><p><spring:message code="DELETE"/></p></div>
</div>
<div id="topicBorder" class="button comboButton" title="<spring:message code="TOPIC_BORDER_COLOR"/>">
<div class="toolbarLabel"><p><spring:message code="BORDER"/></p></div>
</div>
<div id="topicColor" class="button comboButton" title="<spring:message code="TOPIC_BACKGROUND_COLOR"/>">
<div class="toolbarLabel"><p><spring:message code="COLOR"/></p></div>
</div>
<div id="topicIcon" class="button comboButton" title="<spring:message code="TOPIC_ICON"/>">
<div class="toolbarLabel"><p><spring:message code="ICON"/></p></div>
</div>
<div id="topicNote" class="button comboButton" title="<spring:message code="TOPIC_NOTE"/>">
<div class="toolbarLabel"><p><spring:message code="NOTE"/></p></div>
</div>
<div id="topicLink" class="button" title="<spring:message code="TOPIC_LINK"/>">
<div class="toolbarLabel"><p><spring:message code="LINK"/></p></div>
</div>
</fieldset>
</div>
<div id="font" class="buttonContainer" title="Font Properties">
<fieldset>
<legend>
<spring:message code="FONT"/>
</legend>
<div id="fontFamily" class="button comboButton" title="<spring:message code="FONT_TYPE"/>">
<div class="toolbarLabel"><p><spring:message code="TYPE"/></p></div>
</div>
<div id="fontSize" class="button comboButton" title="<spring:message code="FONT_SIZE"/>">
<div class="toolbarLabel"><p><spring:message code="SIZE"/></p></div>
</div>
<div id="fontBold" class="button" title="<spring:message code="FONT_BOLD"/>">
<div class="toolbarLabel"><p><spring:message code="BOLD"/></p></div>
</div>
<div id="fontItalic" class="button" title="<spring:message code="FONT_ITALIC"/>">
<div class="toolbarLabel"><p><spring:message code="ITALIC"/></p></div>
</div>
<div id="fontColor" class="button comboButton" title="<spring:message code="FONT_COLOR"/>">
<div class="toolbarLabel"><p><spring:message code="COLOR"/></p></div>
</div>
</fieldset>
</div>
<div id="share" class="buttonContainer" title="Share Properties">
<c:choose>
<c:when test="${editorTryMode==false}">
<div id="editTab" class="tabContent">
<div id="file" class="buttonContainer" title="<spring:message code="FILE"/>">
<fieldset>
<legend>
<spring:message code="COLLABORATION"/>
<spring:message code="FILE"/>
</legend>
<a id="tagAnchor" href="tags.htm?mapId=${mindmap.id}" rel="moodalbox 400px 200px wizard"
title="<spring:message code="TAGS_DETAILS"/>">
<div id="tagIt" class="button" title="<spring:message code="TAG"/>">
<div class="toolbarLabel"><p><spring:message code="TAG"/></p></div>
<div id="saveButton" class="button" title="<spring:message code="SAVE"/>">
<div class="toolbarLabel"><p><spring:message code="SAVE"/></p></div>
</div>
<div id="discardButton" class="button" title="<spring:message code="CLOSE"/>">
<div class="toolbarLabel"><p><spring:message code="CLOSE"/></p></div>
</div>
<div id="undoEdition" class="button" title="<spring:message code="UNDO_EDITION"/>">
<div class="toolbarLabel"><p><spring:message code="UNDO"/></p></div>
</div>
<div id="redoEdition" class="button" title="<spring:message code="REDO_EDITION"/>">
<div class="toolbarLabel"><p><spring:message code="REDO"/></p></div>
</div>
<a id="printAnchor" href="javascript:printMap();" title="<spring:message code="PRINT"/>">
<div id="print" class="button" title="<spring:message code="PRINT"/>">
<div class="toolbarLabel"><p><spring:message code="PRINT"/></p></div>
</div>
</a>
<c:choose>
<c:when test="${mindmap.owner==user}">
<a id="shareAnchor" href="<c:out value="${shareMap}"/>&mapId=${mindmap.id}"
rel="moodalbox 780px 530px wizard" title="<spring:message code="SHARE_DETAILS"/>">
<div id="shareIt" class="button" title="<spring:message code="COLLABORATION"/>">
<div class="toolbarLabel"><p><spring:message code="SHARE"/></p></div>
</div>
</a>
<a id="publishAnchor" href="publish.htm?mapId=${mindmap.id}" rel="moodalbox 600px 400px wizard"
title="<spring:message code="PUBLISH_MSG"/>">
<div id="publishIt" class="button" title="<spring:message code="PUBLISH"/>">
<div class="toolbarLabel"><p><spring:message code="PUBLISH"/></p></div>
</div>
</a>
</c:when>
</c:choose>
<a id="historyAnchor" href="history.htm?action=list&mapId=${mindmap.id}"
rel="moodalbox 600px 400px wizard" title="<spring:message code="HISTORY_MSG"/>">
<div id="history" class="button" title="<spring:message code="HISTORY_MSG"/>">
<div class="toolbarLabel"><p><spring:message code="HISTORY"/></p></div>
<a id="exportAnchor" href="export.htm?mapId=${mindmap.id}" rel="moodalbox 600px 400px"
title="<spring:message code="EXPORT_DETAILS"/>">
<div id="export" class="button" title="<spring:message code="EXPORT"/>">
<div class="toolbarLabel"><p><spring:message code="EXPORT"/></p></div>
</div>
</a>
</fieldset>
</c:when>
<c:otherwise>
</div>
<div id="zoom" class="buttonContainer" title="Zoom In">
<fieldset>
<legend>
<spring:message code="COLLABORATION"/>
<spring:message code="ZOOM"/>
</legend>
<div id="tagIt" class="button" title="<spring:message code="TAG"/>">
<div class="toolbarLabel"><p><spring:message code="TAG"/></p></div>
<div id="zoomIn" class="button" title="<spring:message code="ZOOM_IN"/>">
<div class="toolbarLabel"><p><spring:message code="IN"/></p></div>
</div>
<div id="shareIt" class="button" title="<spring:message code="COLLABORATE"/>">
<div class="toolbarLabel"><p><spring:message code="SHARE"/></p></div>
</div>
<div id="publishIt" class="button" title="<spring:message code="PUBLISH"/>">
<div class="toolbarLabel"><p><spring:message code="PUBLISH"/></p></div>
</div>
<div id="history" class="button" title="<spring:message code="HISTORY_MSG"/>">
<div class="toolbarLabel"><p><spring:message code="HISTORY"/></p></div>
<div id="zoomOut" class="button" title="<spring:message code="ZOOM_OUT"/>">
<div class="toolbarLabel"><p><spring:message code="OUT"/></p></div>
</div>
</fieldset>
</c:otherwise>
</c:choose>
</div>
</div>
</div>
<div id="node" class="buttonContainer" title="Node Properties">
<fieldset>
<legend>
<spring:message code="TOPIC"/>
</legend>
<div id="topicShape" class="button comboButton" title="<spring:message code="TOPIC_SHAPE"/>">
<div class="toolbarLabel"><p><spring:message code="SHAPE"/></p></div>
</div>
<div id="addTopic" class="button" title="<spring:message code="TOPIC_ADD"/>">
<div class="toolbarLabel"><p><spring:message code="ADD"/></p></div>
</div>
<div id="deleteTopic" class="button" title="<spring:message code="TOPIC_DELETE"/>">
<div class="toolbarLabel"><p><spring:message code="DELETE"/></p></div>
</div>
<div id="topicBorder" class="button comboButton" title="<spring:message code="TOPIC_BORDER_COLOR"/>">
<div class="toolbarLabel"><p><spring:message code="BORDER"/></p></div>
</div>
<div id="topicColor" class="button comboButton" title="<spring:message code="TOPIC_BACKGROUND_COLOR"/>">
<div class="toolbarLabel"><p><spring:message code="COLOR"/></p></div>
</div>
<div id="topicIcon" class="button comboButton" title="<spring:message code="TOPIC_ICON"/>">
<div class="toolbarLabel"><p><spring:message code="ICON"/></p></div>
</div>
<div id="topicNote" class="button comboButton" title="<spring:message code="TOPIC_NOTE"/>">
<div class="toolbarLabel"><p><spring:message code="NOTE"/></p></div>
</div>
<div id="topicLink" class="button" title="<spring:message code="TOPIC_LINK"/>">
<div class="toolbarLabel"><p><spring:message code="LINK"/></p></div>
</div>
</fieldset>
</div>
<div id="font" class="buttonContainer" title="Font Properties">
<fieldset>
<legend>
<spring:message code="FONT"/>
</legend>
<div id="fontFamily" class="button comboButton" title="<spring:message code="FONT_TYPE"/>">
<div class="toolbarLabel"><p><spring:message code="TYPE"/></p></div>
</div>
<div id="fontSize" class="button comboButton" title="<spring:message code="FONT_SIZE"/>">
<div class="toolbarLabel"><p><spring:message code="SIZE"/></p></div>
</div>
<div id="fontBold" class="button" title="<spring:message code="FONT_BOLD"/>">
<div class="toolbarLabel"><p><spring:message code="BOLD"/></p></div>
</div>
<div id="fontItalic" class="button" title="<spring:message code="FONT_ITALIC"/>">
<div class="toolbarLabel"><p><spring:message code="ITALIC"/></p></div>
</div>
<div id="fontColor" class="button comboButton" title="<spring:message code="FONT_COLOR"/>">
<div class="toolbarLabel"><p><spring:message code="COLOR"/></p></div>
</div>
</fieldset>
</div>
<div id="share" class="buttonContainer" title="Share Properties">
<c:choose>
<c:when test="${editorTryMode==false}">
<fieldset>
<legend>
<spring:message code="COLLABORATION"/>
</legend>
<a id="tagAnchor" href="tags.htm?mapId=${mindmap.id}" rel="moodalbox 400px 200px wizard"
title="<spring:message code="TAGS_DETAILS"/>">
<div id="tagIt" class="button" title="<spring:message code="TAG"/>">
<div class="toolbarLabel"><p><spring:message code="TAG"/></p></div>
</div>
</a>
<c:choose>
<c:when test="${mindmap.owner==user}">
<a id="shareAnchor" href="<c:out value="${shareMap}"/>&mapId=${mindmap.id}"
rel="moodalbox 780px 530px wizard" title="<spring:message code="SHARE_DETAILS"/>">
<div id="shareIt" class="button" title="<spring:message code="COLLABORATION"/>">
<div class="toolbarLabel"><p><spring:message code="SHARE"/></p></div>
</div>
</a>
<a id="publishAnchor" href="publish.htm?mapId=${mindmap.id}"
rel="moodalbox 600px 400px wizard"
title="<spring:message code="PUBLISH_MSG"/>">
<div id="publishIt" class="button" title="<spring:message code="PUBLISH"/>">
<div class="toolbarLabel"><p><spring:message code="PUBLISH"/></p></div>
</div>
</a>
</c:when>
</c:choose>
<a id="historyAnchor" href="history.htm?action=list&mapId=${mindmap.id}"
rel="moodalbox 600px 400px wizard" title="<spring:message code="HISTORY_MSG"/>">
<div id="history" class="button" title="<spring:message code="HISTORY_MSG"/>">
<div class="toolbarLabel"><p><spring:message code="HISTORY"/></p></div>
</div>
</a>
</fieldset>
</c:when>
<c:otherwise>
<fieldset>
<legend>
<spring:message code="COLLABORATION"/>
</legend>
<div id="tagIt" class="button" title="<spring:message code="TAG"/>">
<div class="toolbarLabel"><p><spring:message code="TAG"/></p></div>
</div>
<div id="shareIt" class="button" title="<spring:message code="COLLABORATE"/>">
<div class="toolbarLabel"><p><spring:message code="SHARE"/></p></div>
</div>
<div id="publishIt" class="button" title="<spring:message code="PUBLISH"/>">
<div class="toolbarLabel"><p><spring:message code="PUBLISH"/></p></div>
</div>
<div id="history" class="button" title="<spring:message code="HISTORY_MSG"/>">
<div class="toolbarLabel"><p><spring:message code="HISTORY"/></p></div>
</div>
</fieldset>
</c:otherwise>
</c:choose>
</div>
</div>
</div>
<div id="mindplot"></div>
@ -272,14 +293,6 @@
<div id="msgEnd"></div>
</div>
</div>
<%if (userAgent != null && !(userAgent.getOs() == UserAgent.OS.MAC && userAgent.getProduct() == UserAgent.Product.FIREFOX && userAgent.getVersionMajor() < 3)) { %>
<div id="helpButton"
style="text-align:center; width:90px; height:20px; background-color:#f5f5f5; border: 1px solid #BBB6D6; cursor:pointer; padding-left:5px; margin-left:3px;">
<div style="float:left; position:relative; top:50%; margin-top:-8px; margin-left:15px;"><img
src="../images/help.png"/></div>
<div style="float:left; position:relative; top:50%; margin-top:-8px; margin-left:4px;">Help</div>
</div>
<% } else {%>
<div id="helpButtonFirstSteps"
style="text-align:center; width:90px; height:20px; background-color:#f5f5f5; border: 1px solid #BBB6D6; cursor:pointer; padding-left:5px; margin-left:3px;float:left;">
<div style="float:left; position:relative; top:50%; margin-top:-8px; margin-left:5px;"><img
@ -292,7 +305,6 @@
src="../images/help.png"/></div>
<div style="float:left; position:relative; top:50%; margin-top:-8px; margin-left:4px;">Shortcuts</div>
</div>
<% } %>
</div>
<c:if test="${editorTryMode==true}">
<div id="tryEditorWarning" class="sb">
@ -308,8 +320,6 @@
</div>
<script type="text/javascript">
// Register close event ...
//$('tryEditorWarning').makeRounded({radius: 8,borderColor: '#69686F',backgroundColor: '#69686F'});
var tryElem = $('tryEditorWarning');
tryElem.addClass('drag').makeDraggable();
$('tryClose').addEvent('click', function(event) {
@ -319,11 +329,9 @@
</script>
</c:if>
<div id="ffoxworkarround" style="display:none;"><input id="ffoxWorkarroundInput" type="text"></div>
<script type="text/javascript" src="../dwr/engine.js"></script>
<c:if test="${editorTryMode==false}">
<script type="text/javascript" src="../dwr/interface/MapEditorService.js"></script>
</c:if>
<script type="text/javascript" src="../dwr/interface/LoggerService.js"></script>
<script type="text/javascript" src="../js/editor.js"></script>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>