1 package be
.nikiroo
.fanfix
.reader
.ui
;
3 import java
.io
.IOException
;
4 import java
.util
.Arrays
;
6 import be
.nikiroo
.fanfix
.Instance
;
7 import be
.nikiroo
.fanfix
.data
.Chapter
;
8 import be
.nikiroo
.fanfix
.data
.Paragraph
;
9 import be
.nikiroo
.fanfix
.data
.Story
;
10 import be
.nikiroo
.fanfix
.output
.BasicOutput
;
13 * This class can export a chapter into HTML3 code ready for Java Swing support.
17 public class GuiReaderViewerTextOutput
{
18 private StringBuilder builder
;
19 private BasicOutput output
;
20 private Story fakeStory
;
23 * Create a new {@link GuiReaderViewerTextOutput} that will convert a
24 * {@link Chapter} into HTML3 suited for Java Swing.
26 public GuiReaderViewerTextOutput() {
27 builder
= new StringBuilder();
28 fakeStory
= new Story();
30 output
= new BasicOutput() {
31 private boolean paraInQuote
;
34 protected void writeChapterHeader(Chapter chap
) throws IOException
{
35 builder
.append("<HTML>");
37 builder
.append("<H1>");
38 builder
.append("Chapter ");
39 builder
.append(chap
.getNumber());
41 builder
.append(chap
.getName());
42 builder
.append("</H1>");
44 builder
.append("<JUSTIFY>");
45 for (Paragraph para
: chap
) {
51 protected void writeChapterFooter(Chapter chap
) throws IOException
{
53 builder
.append("</DIV>");
57 builder
.append("</JUSTIFY>");
58 builder
.append("</HTML>");
62 protected void writeParagraph(Paragraph para
) throws IOException
{
63 switch (para
.getType()) {
65 builder
.append(decorateText(para
.getContent()));
66 builder
.append("<BR>");
69 builder
.append("<BR>");
72 builder
.append("<BR>* * *<BR><BR>");
76 builder
.append("<DIV>");
78 builder
.append("</DIV>");
80 paraInQuote
= !paraInQuote
;
82 builder
.append("<DIV>");
83 builder
.append("– ");
84 builder
.append(decorateText(para
.getContent()));
85 builder
.append("</DIV>");
93 protected String
enbold(String word
) {
94 return "<B COLOR='BLUE'>" + word
+ "</B>";
98 protected String
italize(String word
) {
99 return "<I COLOR='GRAY'>" + word
+ "</I>";
105 * Convert the chapter into HTML3 code.
108 * the {@link Chapter} to convert.
110 * @return HTML3 code tested with Java Swing
112 public String
convert(Chapter chap
) {
113 builder
.setLength(0);
115 fakeStory
.setChapters(Arrays
.asList(chap
));
116 output
.process(fakeStory
, null, null);
117 } catch (IOException e
) {
118 Instance
.getTraceHandler().error(e
);
120 return builder
.toString();