KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > beehive > netui > tags > rendering > HtmlTag


1 /*
2  * Copyright 2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  * $Header:$
17  */

18 package org.apache.beehive.netui.tags.rendering;
19
20 import org.apache.beehive.netui.tags.html.HtmlConstants;
21
22 import java.util.HashMap JavaDoc;
23
24 /**
25  * Renderthe HTML <form> element. In HTML 4.01 both the start and end tag are rquired.
26  * The action is a required attribute.
27  */

28 abstract public class HtmlTag extends TagHtmlBase implements HtmlConstants
29 {
30     public static void add(HashMap JavaDoc html, HashMap JavaDoc htmlQuirks, HashMap JavaDoc xhtml)
31     {
32         html.put(HTML_TAG, new HtmlTag.HtmlRendering());
33         htmlQuirks.put(HTML_TAG, new HtmlTag.HtmlQuirksRendering());
34         xhtml.put(HTML_TAG, new HtmlTag.XhtmlRendering());
35     }
36
37     public static class State extends AbstractAttributeState
38     {
39         public String JavaDoc lang;
40         public String JavaDoc dir;
41
42         public void clear()
43         {
44             super.clear();
45
46             lang = null;
47             dir = null;
48         }
49     }
50
51     public void doStartTag(AbstractRenderAppender sb, AbstractTagState renderState)
52     {
53         State state = (State) renderState;
54
55         renderDocType(sb);
56         sb.append("\n");
57         renderTag(sb, HTML);
58         renderAttribute(sb, LANG, state.lang);
59         renderAttribute(sb, DIR, state.dir);
60         renderAdditionalAttributes(sb, state);
61         renderAttributes(AbstractHtmlState.ATTR_GENERAL, sb, state);
62
63         sb.append(">");
64     }
65
66     public void doEndTag(AbstractRenderAppender sb)
67     {
68         renderEndTag(sb, HTML);
69     }
70
71     abstract protected void renderAdditionalAttributes(AbstractRenderAppender sb, State renderState);
72
73     abstract protected void renderDocType(AbstractRenderAppender sb);
74
75     private static class HtmlRendering extends HtmlTag
76     {
77         protected void renderDocType(AbstractRenderAppender sb)
78         {
79             sb.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n\t\"http://www.w3.org/TR/html4/loose.dtd\">");
80         }
81
82         protected void renderAdditionalAttributes(AbstractRenderAppender sb, State renderState)
83         {
84         }
85     }
86
87     private static class HtmlQuirksRendering extends HtmlTag
88     {
89         protected void renderDocType(AbstractRenderAppender sb)
90         {
91             sb.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n>");
92         }
93
94         protected void renderAdditionalAttributes(AbstractRenderAppender sb, State renderState)
95         {
96         }
97     }
98
99     private static class XhtmlRendering extends HtmlTag
100     {
101         protected void renderDocType(AbstractRenderAppender sb)
102         {
103             sb.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\t\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
104         }
105
106         protected void renderAdditionalAttributes(AbstractRenderAppender sb, State renderState)
107         {
108             renderAttribute(sb, "xml:lang", renderState.lang);
109             renderAttribute(sb, "xmlns", "http://www.w3.org/1999/xhtml");
110         }
111     }
112 }
113
Popular Tags