KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > caucho > xtpdoc > PreFormattedText


1 /*
2  * Copyright (c) 1998-2000 Caucho Technology -- all rights reserved
3  *
4  * This file is part of Resin(R) Open Source
5  *
6  * Each copy or derived work must preserve the copyright notice and this
7  * notice unmodified.
8  *
9  * Resin Open Source is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * Resin Open Source is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
17  * of NON-INFRINGEMENT. See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with Resin Open Source; if not, write to the
22  *
23  * Free Software Foundation, Inc.
24  * 59 Temple Place, Suite 330
25  * Boston, MA 02111-1307 USA
26  *
27  * @author Emil Ong
28  */

29
30 package com.caucho.xtpdoc;
31
32 import javax.xml.stream.XMLStreamException;
33 import javax.xml.stream.XMLStreamWriter;
34 import java.io.FilterWriter JavaDoc;
35 import java.io.IOException JavaDoc;
36 import java.io.PrintWriter JavaDoc;
37 import java.io.Writer JavaDoc;
38
39 public class PreFormattedText extends FormattedText {
40   public PreFormattedText(Document document)
41   {
42     super(document);
43   }
44
45   public void writeHtml(XMLStreamWriter out)
46     throws XMLStreamException
47   {
48     out.writeStartElement("pre");
49
50     super.writeHtml(out);
51
52     out.writeEndElement(); // pre
53
}
54
55   public void writeLaTeX(PrintWriter JavaDoc out)
56     throws IOException JavaDoc
57   {
58     super.writeLaTeX(new PrintWriter JavaDoc(new PreFormatFilterWriter(out)));
59   }
60
61   public void writeLaTeXEnclosed(PrintWriter JavaDoc out)
62     throws IOException JavaDoc
63   {
64     writeLaTeX(out);
65   }
66
67   public void writeLaTeXTop(PrintWriter JavaDoc out)
68     throws IOException JavaDoc
69   {
70     writeLaTeX(out);
71   }
72
73   private static class PreFormatFilterWriter extends FilterWriter JavaDoc {
74     public PreFormatFilterWriter(Writer out)
75     {
76       super(out);
77     }
78
79     public void write(char[] cbuf, int off, int len)
80       throws IOException JavaDoc
81     {
82       for (int i = off; i < len; i++)
83         filterChar(cbuf[i]);
84     }
85
86     public void write(int c)
87       throws IOException JavaDoc
88     {
89       filterChar(c);
90     }
91
92     public void write(String JavaDoc str, int off, int len)
93       throws IOException JavaDoc
94     {
95       for (int i = off; i < len; i++)
96         filterChar(str.charAt(i));
97     }
98
99     private void filterChar(int ch)
100       throws IOException JavaDoc
101     {
102       switch (ch) {
103         case ' ':
104         case '\t':
105           super.write('\\');
106           super.write(' ');
107           break;
108         case '\n':
109           super.write('\\');
110           super.write('\\');
111           break;
112         default:
113           super.write(ch);
114           break;
115       }
116     }
117   }
118 }
119
Popular Tags