001 package de.java2html.converter;
002
003 import java.io.BufferedWriter;
004 import java.io.IOException;
005
006 import de.java2html.javasource.TypedSource;
007 import de.java2html.options.JavaSourceConversionOptions;
008 import de.java2html.options.JavaSourceStyleTable;
009
010 /**
011 * @author Markus Gebhard
012 */
013 public class JavaSource2XhtmlConverter extends AbstractJavaSourceToXmlConverter {
014
015 private final static String XHTML_HEADER_END = "</head>\n<body>\n";
016 private final static String XHTML_FOOTER = "</body>\n</html>";
017
018 public JavaSource2XhtmlConverter() {
019 super(new ConverterMetaData("xhtml", "XHTML 1.0 Transitional (with stylesheet)", "xhtml"));
020 }
021
022 @Override
023 protected String getHeaderEnd() {
024 return XHTML_HEADER_END;
025 }
026
027 @Override
028 protected String getFooter() {
029 return XHTML_FOOTER;
030 }
031
032 @Override
033 protected String createHeader(JavaSourceStyleTable styleTable, String title, String charset) {
034 return XML_HEADER + createHeaderStart(styleTable, title, charset);
035 }
036
037 private String createHeaderStart(JavaSourceStyleTable styleTable, String title, String charset) {
038 if (title == null) {
039 title = ""; //$NON-NLS-1$
040 }
041 return "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
042 + "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
043 + "<head>\n<style type=\"text/css\">\n"
044 + createStyleSheet(styleTable)
045 + "</style>\n"
046 + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset="
047 + charset
048 + "\" />\n"
049 + "<title>"
050 + title
051 + "</title>\n";
052 }
053
054 @Override
055 public void convert(TypedSource source, JavaSourceConversionOptions options, BufferedWriter writer)
056 throws IOException {
057 if (source == null) {
058 throw new IllegalStateException("Trying to write out converted code without having source set.");
059 }
060 if (options.isShowLineNumbers()) {
061 writer.write("<table class=\"java\">\n<tr class=\"java\">\n<td valign=\"top\" class=\"java-ln\">");
062 writer.write("\n");
063
064 if (isPre()) {
065 writer.write("<pre class=\"java-ln\">");
066 }
067 else {
068 writer.write("<tt class=\"java-ln\">");
069 }
070 for (int i = 1; i <= source.getLineCount(); i++) {
071 writer.write(String.valueOf(i) + getLineEnd());
072 writer.write("\n");
073 }
074
075 if (isPre()) {
076 writer.write("</pre>\n");
077 }
078 else {
079 writer.write("</tt>\n");
080 }
081 writer.write("</td>\n");
082 writer.write("<td valign=\"top\" class=\"java\">");
083 writer.write("\n");
084 }
085
086 if (isPre()) {
087 writer.write("<pre class=\"java\">");
088 }
089 else {
090 writer.write("<tt class=\"java\">");
091 }
092
093 writeCodeToXml(writer, source, options);
094
095 if (isPre()) {
096 writer.write("</pre>");
097 }
098 else {
099 writer.write("</tt>");
100 }
101
102 if (options.isShowLineNumbers()) {
103 writer.write("</td>\n</tr>\n</table>");
104 writer.write("\n");
105 }
106 }
107 }
|