KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nextapp > echo2 > webcontainer > WindowHtmlService


1 /*
2  * This file is part of the Echo Web Application Framework (hereinafter "Echo").
3  * Copyright (C) 2002-2005 NextApp, Inc.
4  *
5  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6  *
7  * The contents of this file are subject to the Mozilla Public License Version
8  * 1.1 (the "License"); you may not use this file except in compliance with
9  * the License. You may obtain a copy of the License at
10  * http://www.mozilla.org/MPL/
11  *
12  * Software distributed under the License is distributed on an "AS IS" basis,
13  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14  * for the specific language governing rights and limitations under the
15  * License.
16  *
17  * Alternatively, the contents of this file may be used under the terms of
18  * either the GNU General Public License Version 2 or later (the "GPL"), or
19  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
20  * in which case the provisions of the GPL or the LGPL are applicable instead
21  * of those above. If you wish to allow use of your version of this file only
22  * under the terms of either the GPL or the LGPL, and not to allow others to
23  * use your version of this file under the terms of the MPL, indicate your
24  * decision by deleting the provisions above and replace them with the notice
25  * and other provisions required by the GPL or the LGPL. If you do not delete
26  * the provisions above, a recipient may use your version of this file under
27  * the terms of any one of the MPL, the GPL or the LGPL.
28  */

29
30 package nextapp.echo2.webcontainer;
31
32 import java.io.IOException JavaDoc;
33
34 import org.w3c.dom.Element JavaDoc;
35
36 import nextapp.echo2.app.ApplicationInstance;
37 import nextapp.echo2.webrender.BaseHtmlDocument;
38 import nextapp.echo2.webrender.Connection;
39 import nextapp.echo2.webrender.ContentType;
40 import nextapp.echo2.webrender.Service;
41 import nextapp.echo2.webrender.WebRenderServlet;
42 import nextapp.echo2.webrender.output.CssStyle;
43 import nextapp.echo2.webrender.service.CoreServices;
44
45 /**
46  * Completely re-renders a browser window.
47  * This is the default service invoked when the user visits an application.
48  */

49 public class WindowHtmlService
50 implements Service {
51     
52     public static final WindowHtmlService INSTANCE = new WindowHtmlService();
53
54     /**
55      * Root element identifier.
56      */

57     public static final String JavaDoc ROOT_ID = "c_root";
58     
59     /**
60      * @see nextapp.echo2.webrender.Service#getId()
61      */

62     public String JavaDoc getId() {
63         return WebRenderServlet.SERVICE_ID_DEFAULT;
64     }
65
66     /**
67      * @see nextapp.echo2.webrender.Service#getVersion()
68      */

69     public int getVersion() {
70         return DO_NOT_CACHE;
71     }
72
73     /**
74      * @see nextapp.echo2.webrender.Service#service(nextapp.echo2.webrender.Connection)
75      */

76     public void service(Connection conn) throws IOException JavaDoc {
77         ContainerInstance ci = (ContainerInstance) conn.getUserInstance();
78         conn.setContentType(ContentType.TEXT_HTML);
79         
80         boolean debug = !("false".equals(conn.getServlet().getInitParameter("echo2.debug")));
81
82         BaseHtmlDocument baseDoc = new BaseHtmlDocument(ROOT_ID);
83         baseDoc.setGenarator(ApplicationInstance.ID_STRING);
84         baseDoc.addJavaScriptInclude(ci.getServiceUri(CoreServices.CLIENT_ENGINE));
85
86         // Add initialization directive.
87
baseDoc.getBodyElement().setAttribute("onload", "EchoClientEngine.init('" + ci.getServletUri() + "', "
88                 + debug + ");");
89         
90         Element JavaDoc bodyElement = baseDoc.getBodyElement();
91         
92         // Set body element CSS style.
93
CssStyle cssStyle = new CssStyle();
94         cssStyle.setAttribute("position", "absolute");
95         cssStyle.setAttribute("font-family", "verdana, arial, helvetica, sans-serif");
96         cssStyle.setAttribute("font-size", "10pt");
97         cssStyle.setAttribute("height", "100%");
98         cssStyle.setAttribute("width", "100%");
99         cssStyle.setAttribute("padding", "0px");
100         cssStyle.setAttribute("margin", "0px");
101         cssStyle.setAttribute("overflow", "hidden");
102         bodyElement.setAttribute("style", cssStyle.renderInline());
103         
104         // Render.
105
baseDoc.render(conn.getWriter());
106     }
107 }
108
Popular Tags