001 /*
002 * Copyright (c) 2005 Marko Karppinen & Co. LLC
003 *
004 * Permission is hereby granted, free of charge, to any person obtaining a
005 * copy of this software and associated documentation files (the "Software"),
006 * to deal in the Software without restriction, including without limitation
007 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
008 * and/or sell copies of the Software, and to permit persons to whom the
009 * Software is furnished to do so, subject to the following conditions:
010 *
011 * The above copyright notice and this permission notice shall be included in
012 * all copies or substantial portions of the Software.
013 *
014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
015 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
016 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
017 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
018 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
019 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
020 * DEALINGS IN THE SOFTWARE.
021 */
022
023 package fi.karppinen.xml;
024
025 import java.util.Locale;
026
027 import org.xml.sax.ContentHandler;
028 import org.xml.sax.SAXException;
029
030 import fi.iki.hsivonen.xml.XhtmlSaxEmitter;
031
032 /**
033 * Additional methods to <code>XhtmlSaxEmitter</code>.
034 *
035 * @version $Id: XhtmlEmitter.java,v 1.2 2006/12/01 12:37:00 hsivonen Exp $
036 * @author hsivonen
037 */
038 public class XhtmlEmitter extends XhtmlSaxEmitter {
039 protected AttributesImpl attrs = new AttributesImpl();
040
041 /**
042 * @param contentHandler
043 */
044 public XhtmlEmitter(ContentHandler contentHandler) {
045 super(contentHandler);
046 }
047
048 public void startElementWithClass(String name, String clazz) throws SAXException {
049 attrs.clear();
050 attrs.addAttribute("class", clazz);
051 startElement(name, attrs);
052 }
053
054 public void headCell(String text, String align) throws SAXException {
055 attrs.clear();
056 attrs.addAttribute("align", align);
057 attrs.addAttribute("valign", "top");
058 startElement("th", attrs);
059 characters(text);
060 endElement("th");
061 }
062
063 public void textCell(String text, String align) throws SAXException {
064 attrs.clear();
065 attrs.addAttribute("align", align);
066 attrs.addAttribute("valign", "top");
067 startElement("td", attrs);
068 characters(text);
069 endElement("td");
070 }
071
072
073 public void radioButton(String name, String value, boolean checked) throws SAXException {
074 attrs.clear();
075 attrs.addAttribute("name", name);
076 attrs.addAttribute("value", value);
077 attrs.addAttribute("type", "radio");
078 if(checked) {
079 attrs.addAttribute("checked", "checked");
080 }
081 startElement("input", attrs);
082 endElement("input");
083 }
084 public void checkbox(String name, boolean checked) throws SAXException {
085 attrs.clear();
086 attrs.addAttribute("name", name);
087 attrs.addAttribute("value", "checked");
088 attrs.addAttribute("type", "checkbox");
089 if(checked) {
090 attrs.addAttribute("checked", "checked");
091 }
092 startElement("input", attrs);
093 endElement("input");
094 }
095 public void radioButtonCell(String name, String value, boolean checked, String align) throws SAXException {
096 attrs.clear();
097 attrs.addAttribute("align", align);
098 attrs.addAttribute("valign", "top");
099 startElement("td", attrs);
100 radioButton(name, value, checked);
101 endElement("td");
102 }
103 public void submitButton(String name, String value) throws SAXException {
104 attrs.clear();
105 attrs.addAttribute("name", name);
106 attrs.addAttribute("value", value);
107 attrs.addAttribute("type", "submit");
108 startElement("input", attrs);
109 endElement("input");
110 }
111 public void textarea(String name, String value) throws SAXException {
112 attrs.clear();
113 attrs.addAttribute("name", name);
114 attrs.addAttribute("rows", "10");
115 attrs.addAttribute("cols", "40");
116 startElement("textarea", attrs);
117 characters(value);
118 endElement("textarea");
119 }
120 public void startElement(String name, Locale lang) throws SAXException {
121 StringBuilder buf = new StringBuilder();
122 buf.append(lang.getLanguage());
123 String country = lang.getCountry();
124 if(country.length() > 1) {
125 buf.append('-');
126 buf.append(country);
127 }
128 AttributesImpl attrs = new AttributesImpl();
129 attrs.addAttribute("http://www.w3.org/XML/1998/namespace", "lang", "xml:lang", "CDATA", buf.toString());
130 super.startElement(name, attrs);
131 }
132
133 /**
134 * @param string
135 * @param answer
136 * @throws SAXException
137 */
138 public void textInput(String name, String value) throws SAXException {
139 attrs.clear();
140 attrs.addAttribute("name", name);
141 attrs.addAttribute("value", value);
142 attrs.addAttribute("type", "text");
143 attrs.addAttribute("size", "40");
144 startElement("input", attrs);
145 endElement("input");
146 }
147
148 /**
149 * @param string
150 * @param answer
151 * @throws SAXException
152 */
153 public void hidden(String name, String value) throws SAXException {
154 attrs.clear();
155 attrs.addAttribute("name", name);
156 attrs.addAttribute("value", value);
157 attrs.addAttribute("type", "hidden");
158 startElement("input", attrs);
159 endElement("input");
160 }
161
162 }