KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > bridge > jsp > taglib > typehandler > XmlHandler


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10
11 package org.mmbase.bridge.jsp.taglib.typehandler;
12
13 import javax.servlet.jsp.JspTagException JavaDoc;
14 import org.mmbase.bridge.*;
15 import org.mmbase.bridge.jsp.taglib.FieldInfoTag;
16 import org.mmbase.util.StringBufferWriter;
17 import org.mmbase.util.logging.Logging;
18 import java.io.*;
19 import javax.xml.transform.*;
20 import javax.xml.transform.Transformer JavaDoc;
21 import javax.xml.transform.dom.DOMSource JavaDoc;
22 import javax.xml.transform.stream.StreamResult JavaDoc;
23 import org.mmbase.util.transformers.*;
24
25 /**
26  * @javadoc
27  *
28  * @author Gerard van de Looi
29  * @author Michiel Meeuwissen
30  * @since MMBase-1.6
31  * @version $Id: XmlHandler.java,v 1.16 2006/04/27 17:37:25 michiel Exp $
32  */

33
34 public class XmlHandler extends StringHandler {
35
36     /**
37      * Constructor for XmlHandler.
38      * @param tag
39      */

40     public XmlHandler(FieldInfoTag tag) {
41         super(tag);
42     }
43
44     private static ChainedCharTransformer ct;
45
46     static {
47         ct = new ChainedCharTransformer();
48         ct.add(new TabToSpacesTransformer(2));
49         Xml x = new Xml();
50         x.configure(Xml.ESCAPE);
51         ct.add(x);
52     }
53
54
55     /**
56      * @see TypeHandler#htmlInput(Node, Field, boolean)
57      */

58     public String JavaDoc htmlInput(Node node, Field field, boolean search) throws JspTagException JavaDoc {
59         if(! search) {
60             StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
61             // the wrap attribute is not valid in XHTML, but it is really needed for netscape < 6
62
// wrap attribute removed, we want to produce valid XHTML, and who is still using netscape < 6?
63
buffer.append("<textarea class=\"big " + getClasses(field) + "\" rows=\"10\" cols=\"80\" ");
64             buffer.append("name=\"").append(prefix(field.getName())).append("\" ");
65             buffer.append("id=\"").append(prefixID(field.getName())).append("\" ");
66             addExtraAttributes(buffer);
67             buffer.append(">");
68             String JavaDoc value;
69             if (node != null) {
70                 value = org.mmbase.util.Encode.encode("ESCAPE_XML", tag.decode(node.getStringValue(field.getName()), node));
71             } else {
72                 value = "";
73             }
74             buffer.append(value);
75             String JavaDoc opt = tag.getOptions();
76             if (opt != null && opt.indexOf("noempty") > -1 && value.equals("")) {
77                 buffer.append(" ");
78             }
79             buffer.append("</textarea>");
80             return buffer.toString();
81         } else {
82             return super.htmlInput(node, field, search);
83         }
84
85     }
86
87
88 }
89
Popular Tags