    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    }