001 // This file is part of the Attempto Java Packages.
002 // Copyright 2008, Attempto Group, University of Zurich (see http://attempto.ifi.uzh.ch).
003 //
004 // The Attempto Java Packages is free software: you can redistribute it and/or modify it under the
005 // terms of the GNU Lesser General Public License as published by the Free Software Foundation,
006 // either version 3 of the License, or (at your option) any later version.
007 //
008 // The Attempto Java Packages is distributed in the hope that it will be useful, but WITHOUT ANY
009 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
010 // PURPOSE. See the GNU Lesser General Public License for more details.
011 //
012 // You should have received a copy of the GNU Lesser General Public License along with the Attempto
013 // Java Packages. If not, see http://www.gnu.org/licenses/.
014
015 package ch.uzh.ifi.attempto.echocomp;
016
017 import nextapp.echo2.webrender.output.HtmlDocument;
018 import nextapp.echo2.webrender.output.XmlDocument;
019
020 import org.w3c.dom.Document;
021 import org.w3c.dom.Element;
022
023 /**
024 * This class can be used to create user-defined messages in the case of server delay.
025 *
026 * @author Tobias Kuhn
027 */
028 public class ServerDelayMessage extends nextapp.echo2.webrender.ServerDelayMessage {
029
030 private static final long serialVersionUID = 2045507176304630957L;
031
032 private Element element;
033
034 /**
035 * Creates a new server delay message.
036 *
037 * @param message The message text.
038 */
039 public ServerDelayMessage(String message) {
040 this(message, null);
041 }
042
043 /**
044 * Creates a new server delay message.
045 *
046 * @param message The message text.
047 * @param imageLocation A link to the image which is displayed above the text.
048 */
049 public ServerDelayMessage(String message, String imageLocation) {
050 XmlDocument xmlDocument = new XmlDocument("div", null, null, HtmlDocument.XHTML_1_0_NAMESPACE_URI);
051 Document document = xmlDocument.getDocument();
052 Element divElement = document.getDocumentElement();
053 divElement.setAttribute("id", ELEMENT_ID_MESSAGE);
054 divElement.setAttribute("style",
055 "position:absolute;" +
056 "top:0px;" +
057 "left:0px;" +
058 "width:100%;" +
059 "height:100%;" +
060 "cursor:wait;" +
061 "margin:0px;" +
062 "padding:0px;" +
063 "visibility:hidden;" +
064 "z-index:10000;"
065 );
066
067 Element tableElement = document.createElement("table");
068 tableElement.setAttribute("style",
069 "width:100%;" +
070 "height:100%;" +
071 "border:0px;" +
072 "padding:0px;"
073 );
074 divElement.appendChild(tableElement);
075
076 Element tbodyElement = document.createElement("tbody");
077 tableElement.appendChild(tbodyElement);
078
079 Element trElement = document.createElement("tr");
080 tbodyElement.appendChild(trElement);
081
082 Element tdElement = document.createElement("td");
083 trElement.appendChild(tdElement);
084
085 Element messageElement = document.createElement("div");
086 messageElement.setAttribute("id", ELEMENT_ID_LONG_MESSAGE);
087 messageElement.setAttribute("style",
088 "margin-top:40px;" +
089 "margin-left:auto;" +
090 "margin-right:auto;" +
091 "background-color:#e6e6e6;" +
092 "color:#000000;" +
093 "padding:40px;" +
094 "width:200px;" +
095 "border:solid 2px #000000;" +
096 "font-family:verdana,arial,helvetica,sans-serif;" +
097 "font-size:10pt;" +
098 "text-align:left;"
099 );
100
101 if (imageLocation != null) {
102 Element img = document.createElement("img");
103 img.setAttribute("src", imageLocation);
104 messageElement.appendChild(img);
105 }
106
107 messageElement.appendChild(document.createElement("br"));
108 messageElement.appendChild(document.createElement("br"));
109
110 messageElement.appendChild(document.createTextNode(message));
111
112 tdElement.appendChild(messageElement);
113 element = divElement;
114 }
115
116 public Element getMessage() {
117 return element;
118 }
119
120 }