1 package de.java2html.converter; 2 3 import java.io.BufferedWriter ; 4 import java.io.IOException ; 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 14 public class JavaSource2XhtmlConverter extends AbstractJavaSourceToXmlConverter { 15 16 private final static String XHTML_HEADER_END = "</head>\n<body>\n"; 17 private final static String 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 getHeaderEnd() { 24 return XHTML_HEADER_END; 25 } 26 27 protected String getFooter() { 28 return XHTML_FOOTER; 29 } 30 31 protected String createHeader(JavaSourceStyleTable styleTable, String title) { 32 return XML_HEADER + createHeaderStart(styleTable, title); 33 } 34 35 private String createHeaderStart(JavaSourceStyleTable styleTable, String title) { 36 if (title == null) { 37 title = ""; } 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 writer) 51 throws IOException { 52 if (source == null) { 53 throw new IllegalStateException ("Trying to write out converted code without having source set."); 54 } 55 56 String 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 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 |