KickJava   Java API By Example, From Geeks To Geeks.

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


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  */

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

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