1 18 package org.apache.beehive.netui.tags.rendering; 19 20 import org.apache.beehive.netui.tags.html.HtmlConstants; 21 22 import java.util.HashMap ; 23 24 28 abstract public class HtmlTag extends TagHtmlBase implements HtmlConstants 29 { 30 public static void add(HashMap html, HashMap htmlQuirks, HashMap 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 lang; 40 public String 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 |