KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > meshcms > util > XHTMLTagStack


1 /*
2  * MeshCMS - A simple CMS based on SiteMesh
3  * Copyright (C) 2004-2007 Luciano Vernaschi
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, writeBodyContent to the Free Software
17  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18  *
19  * You can contact the author at http://www.cromoteca.com
20  * and at info@cromoteca.com
21  */

22
23 package org.meshcms.util;
24
25 import java.util.*;
26 import javax.xml.transform.*;
27
28 public abstract class XHTMLTagStack {
29   public static final String JavaDoc A = "a";
30   public static final String JavaDoc ABBR = "abbr";
31   public static final String JavaDoc ACRONYM = "acronym";
32   public static final String JavaDoc ADDRESS = "address";
33   public static final String JavaDoc AREA = "area";
34   public static final String JavaDoc B = "b";
35   public static final String JavaDoc BASE = "base";
36   public static final String JavaDoc BDO = "bdo";
37   public static final String JavaDoc BIG = "big";
38   public static final String JavaDoc BLOCKQUOTE = "blockquote";
39   public static final String JavaDoc BODY = "body";
40   public static final String JavaDoc BR = "br";
41   public static final String JavaDoc BUTTON = "button";
42   public static final String JavaDoc CAPTION = "caption";
43   public static final String JavaDoc CITE = "cite";
44   public static final String JavaDoc CODE = "code";
45   public static final String JavaDoc COL = "col";
46   public static final String JavaDoc COLGROUP = "colgroup";
47   public static final String JavaDoc DD = "dd";
48   public static final String JavaDoc DEL = "del";
49   public static final String JavaDoc DIV = "div";
50   public static final String JavaDoc DFN = "dfn";
51   public static final String JavaDoc DL = "dl";
52   public static final String JavaDoc DT = "dt";
53   public static final String JavaDoc EM = "em";
54   public static final String JavaDoc FIELDSET = "fieldset";
55   public static final String JavaDoc FORM = "form";
56   public static final String JavaDoc FRAME = "frame";
57   public static final String JavaDoc FRAMESET = "frameset";
58   public static final String JavaDoc H1 = "h1";
59   public static final String JavaDoc H2 = "h2";
60   public static final String JavaDoc H3 = "h3";
61   public static final String JavaDoc H4 = "h4";
62   public static final String JavaDoc H5 = "h5";
63   public static final String JavaDoc H6 = "h6";
64   public static final String JavaDoc HEAD = "head";
65   public static final String JavaDoc HR = "hr";
66   public static final String JavaDoc HTML = "html";
67   public static final String JavaDoc I = "i";
68   public static final String JavaDoc IFRAME = "iframe";
69   public static final String JavaDoc IMG = "img";
70   public static final String JavaDoc INPUT = "input";
71   public static final String JavaDoc INS = "ins";
72   public static final String JavaDoc KBD = "kbd";
73   public static final String JavaDoc LABEL = "label";
74   public static final String JavaDoc LEGEND = "legend";
75   public static final String JavaDoc LI = "li";
76   public static final String JavaDoc LINK = "link";
77   public static final String JavaDoc MAP = "map";
78   public static final String JavaDoc META = "meta";
79   public static final String JavaDoc NOFRAMES = "noframes";
80   public static final String JavaDoc NOSCRIPT = "noscript";
81   public static final String JavaDoc OBJECT = "object";
82   public static final String JavaDoc OL = "ol";
83   public static final String JavaDoc OPTGROUP = "optgroup";
84   public static final String JavaDoc OPTION = "option";
85   public static final String JavaDoc P = "p";
86   public static final String JavaDoc PARAM = "param";
87   public static final String JavaDoc PRE = "pre";
88   public static final String JavaDoc Q = "q";
89   public static final String JavaDoc SAMP = "samp";
90   public static final String JavaDoc SCRIPT = "script";
91   public static final String JavaDoc SELECT = "select";
92   public static final String JavaDoc SMALL = "small";
93   public static final String JavaDoc SPAN = "span";
94   public static final String JavaDoc STRONG = "strong";
95   public static final String JavaDoc STYLE = "style";
96   public static final String JavaDoc SUB = "sub";
97   public static final String JavaDoc SUP = "sup";
98   public static final String JavaDoc TABLE = "table";
99   public static final String JavaDoc TBODY = "tbody";
100   public static final String JavaDoc TD = "td";
101   public static final String JavaDoc TEXTAREA = "textarea";
102   public static final String JavaDoc TFOOT = "tfoot";
103   public static final String JavaDoc TH = "th";
104   public static final String JavaDoc THEAD = "thead";
105   public static final String JavaDoc TITLE = "title";
106   public static final String JavaDoc TR = "tr";
107   public static final String JavaDoc TT = "tt";
108   public static final String JavaDoc UL = "ul";
109   public static final String JavaDoc VAR = "var";
110   
111   public static final String JavaDoc ATTR_ACCESSKEY = "accesskey";
112   public static final String JavaDoc ATTR_CLASS = "class";
113   public static final String JavaDoc ATTR_DIR = "dir";
114   public static final String JavaDoc ATTR_ID = "id";
115   public static final String JavaDoc ATTR_LANG = "lang";
116   public static final String JavaDoc ATTR_STYLE = "style";
117   public static final String JavaDoc ATTR_TABINDEX = "tabindex";
118   public static final String JavaDoc ATTR_TITLE = "title";
119   
120   protected Stack tagStack;
121   
122   public XHTMLTagStack() {
123     tagStack = new Stack();
124   }
125   
126   public abstract XHTMLTagStack addCDATA(String JavaDoc textData);
127   
128   public abstract XHTMLTagStack addText(String JavaDoc textData);
129   
130   public abstract String JavaDoc getCurrentTagName();
131   
132   public abstract XHTMLTagStack openTag(String JavaDoc tagName);
133   
134   public abstract XHTMLTagStack setAttribute(String JavaDoc name, String JavaDoc value);
135   
136   protected abstract void performCloseTag();
137   
138   public XHTMLTagStack closeTag() {
139     return closeTag(null);
140   }
141   
142   public XHTMLTagStack closeTag(String JavaDoc tagName) {
143     if (tagStack.empty()) {
144       throw new IllegalStateException JavaDoc("No tag to close");
145     }
146     
147     if (tagName != null) {
148       String JavaDoc currentTagName = getCurrentTagName();
149       
150       if (!currentTagName.equals(tagName)) {
151         throw new IllegalStateException JavaDoc("Current tag is " + currentTagName +
152             ", not " + tagName);
153       }
154     }
155     
156     performCloseTag();
157     return this;
158   }
159   
160   public static void configureTransformer(Transformer t, String JavaDoc charset) {
161     t.setOutputProperty(OutputKeys.METHOD, "xml");
162     t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
163     t.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd");
164     t.setOutputProperty(OutputKeys.INDENT, "yes");
165     
166     if (charset != null) {
167       t.setOutputProperty(OutputKeys.ENCODING, charset);
168     }
169   }
170   
171   public void test() {
172     openTag(SCRIPT); {
173       setAttribute("type", "text/javascript");
174       addCDATA("alert('ciao');");
175     } closeTag();
176     openTag(FORM); {
177       setAttribute("action", "");
178       setAttribute("method", "post");
179       openTag(FIELDSET); {
180         openTag(LEGEND).addText("Mail Form").closeTag();
181         openTag(DIV); {
182           setAttribute(ATTR_CLASS, "field");
183           openTag(LABEL); {
184             setAttribute("for", "msgmail");
185             addText("Your Mail:");
186           } closeTag();
187           openTag(INPUT); {
188             setAttribute("type", "text");
189             setAttribute(ATTR_ID, "msgmail");
190             setAttribute("name", "msgmail");
191           } closeTag();
192         } closeTag();
193         openTag(DIV); {
194           setAttribute(ATTR_CLASS, "field");
195           openTag(LABEL); {
196             setAttribute("for", "msgtext");
197             addText("Message Body:");
198           } closeTag();
199           openTag(TEXTAREA); {
200             setAttribute(ATTR_ID, "msgtext");
201             setAttribute("name", "msgtext");
202             addText("A line of text\n");
203             addText("Other text");
204           } closeTag();
205         } closeTag();
206         openTag(DIV).setAttribute(ATTR_CLASS, "buttons"); {
207           openTag(INPUT).setAttribute("value", "Send").closeTag();
208         } closeTag();
209       } closeTag(FIELDSET); // specify tag name just to check if correct
210
} closeTag();
211   }
212 }
213
Popular Tags