KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > java2html > converter > JavaSource2Xhtml11Converter


1 package de.java2html.converter;
2
3 import java.io.BufferedWriter JavaDoc;
4 import java.io.IOException JavaDoc;
5
6 import de.java2html.javasource.JavaSource;
7 import de.java2html.javasource.JavaSourceType;
8 import de.java2html.options.JavaSourceConversionOptions;
9 import de.java2html.options.JavaSourceStyleTable;
10
11 /**
12  * @author Markus Gebhard
13  * @author Christian Hujer (adaption to XHTML 1.1)
14  */

15 public class JavaSource2Xhtml11Converter extends AbstractJavaSourceToXmlConverter {
16
17   private final static String JavaDoc XHTML_HEADER_END = "</head>\n<body>\n";
18   private final static String JavaDoc XHTML_FOOTER = "</body>\n</html>";
19
20   public JavaSource2Xhtml11Converter() {
21     super(new ConverterMetaData("xhtml11", "XHTML 1.1 (with stylesheet)", "xhtml"));
22   }
23
24   protected String JavaDoc getHeaderEnd() {
25     return XHTML_HEADER_END;
26   }
27
28   protected String JavaDoc getFooter() {
29     return XHTML_FOOTER;
30   }
31
32   protected String JavaDoc createHeader(JavaSourceStyleTable styleTable, String JavaDoc title) {
33     return XML_HEADER + createHeaderStart(styleTable, title);
34   }
35
36   private String JavaDoc createHeaderStart(JavaSourceStyleTable styleTable, String JavaDoc title) {
37     if (title == null) {
38       title = ""; //$NON-NLS-1$
39
}
40     return "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n"
41         + "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">\n"
42         + "<head>\n<style type=\"text/css\">\n"
43         + createStyleSheet(styleTable)
44         + "</style>\n"
45         + "<meta http-equiv=\"Content-Type\" content=\"application/xhtml+xml; charset=UTF-8\" />\n"
46         + "<title>"
47         + title
48         + "</title>\n";
49   }
50
51   public void convert(JavaSource source, JavaSourceConversionOptions options, BufferedWriter JavaDoc writer)
52       throws IOException JavaDoc {
53     if (source == null) {
54       throw new IllegalStateException JavaDoc("Trying to write out converted code without having source set.");
55     }
56
57     String JavaDoc sourceCode = source.getCode();
58     JavaSourceType[] sourceTypes = source.getClassification();
59
60     if (lineNumbers) {
61       writer.write("<table class=\"java\">\n<tr class=\"java\">\n<td valign=\"top\" class=\"java-ln\">");
62       writer.newLine();
63
64       if (pre) {
65         writer.write("<pre class=\"java-ln\">");
66       }
67       else {
68         writer.write("<code class=\"java-ln\">");
69       }
70       for (int i = 1; i <= source.getLineCount(); i++) {
71         writer.write(String.valueOf(i) + lineEnd);
72         writer.newLine();
73       }
74       // sb.append(new Integer(source.getLineCount()).toString());
75

76       if (pre) {
77         writer.write("</pre>\n");
78       }
79       else {
80         writer.write("</code>\n");
81       }
82       writer.write("</td>\n");
83       writer.write("<td valign=\"top\" class=\"java\">");
84       writer.newLine();
85     }
86
87     else if (pre) {
88       writer.write("<pre class=\"java\">");
89     }
90     else {
91       writer.write("<div class=\"java\"><code class=\"java\">");
92     }
93
94     int start = 0;
95     int end = 0;
96
97     while (start < sourceTypes.length) {
98       while (end < sourceTypes.length - 1
99           && (sourceTypes[end + 1] == sourceTypes[start] || sourceTypes[end + 1] == JavaSourceType.BACKGROUND)) {
100         ++end;
101       }
102       toXml(sourceCode, sourceTypes, start, end, writer);
103       start = end + 1;
104       end = start;
105     }
106
107     if (pre) {
108       writer.write("</pre>");
109     }
110     else {
111       writer.write("</code>");
112     }
113
114     if (lineNumbers) {
115       writer.write("</td>\n</tr>\n</table>");
116       writer.newLine();
117     }
118     else if (!pre) {
119       writer.write("</div>");
120     }
121   }
122 }
Popular Tags