KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > java2html > gui > DirectTextConversionPanel


1 package de.java2html.gui;
2
3 import java.awt.Font JavaDoc;
4 import java.awt.GridBagConstraints JavaDoc;
5 import java.awt.GridBagLayout JavaDoc;
6 import java.awt.Insets JavaDoc;
7 import java.io.IOException JavaDoc;
8 import java.io.StringWriter JavaDoc;
9
10 import javax.swing.JComponent JavaDoc;
11 import javax.swing.JLabel JavaDoc;
12 import javax.swing.JPanel JavaDoc;
13 import javax.swing.JScrollPane JavaDoc;
14 import javax.swing.JTextArea JavaDoc;
15 import javax.swing.JTextField JavaDoc;
16 import javax.swing.border.EmptyBorder JavaDoc;
17 import javax.swing.event.ChangeEvent JavaDoc;
18 import javax.swing.event.ChangeListener JavaDoc;
19 import javax.swing.event.DocumentEvent JavaDoc;
20 import javax.swing.event.DocumentListener JavaDoc;
21
22 import de.java2html.JavaSourceConversionSettings;
23 import de.java2html.converter.IJavaSourceConverter;
24 import de.java2html.javasource.JavaSource;
25 import de.java2html.javasource.JavaSourceParser;
26 import de.java2html.util.Ensure;
27
28 public class DirectTextConversionPanel {
29
30   private final JComponent JavaDoc content;
31   private final static Font JavaDoc FONT = new Font JavaDoc("Monospaced", Font.PLAIN, 11);
32   private final JTextArea JavaDoc taInput;
33   private final JTextArea JavaDoc taOutput;
34   private final JTextField JavaDoc tfTitle;
35   private final Java2HtmlOptionsPanel optionsPanel;
36   private final IStatisticsView statisticsView;
37
38   public DirectTextConversionPanel(Java2HtmlOptionsPanel optionsPanel, IStatisticsView statisticsView) {
39     Ensure.ensureArgumentNotNull(optionsPanel);
40     Ensure.ensureArgumentNotNull(statisticsView);
41     this.statisticsView = statisticsView;
42     this.optionsPanel = optionsPanel;
43     //Create UI:
44
JLabel JavaDoc l1 = new JLabel JavaDoc("Title (optional):");
45     tfTitle = new JTextField JavaDoc(30);
46     final DocumentListener JavaDoc documentListener = new DocumentListener JavaDoc() {
47       public void changedUpdate(DocumentEvent JavaDoc e) {
48         convert();
49       }
50
51       public void removeUpdate(DocumentEvent JavaDoc e) {
52         convert();
53       }
54
55       public void insertUpdate(DocumentEvent JavaDoc e) {
56         convert();
57       }
58     };
59     tfTitle.getDocument().addDocumentListener(documentListener);
60
61     taInput = new JTextArea JavaDoc(10, 80);
62     taInput.getDocument().addDocumentListener(documentListener);
63     taInput.setFont(FONT);
64     taOutput = new JTextArea JavaDoc(10, 80);
65     taOutput.setEditable(false);
66     taOutput.setFont(FONT);
67
68     final JPanel JavaDoc panel = new JPanel JavaDoc(new GridBagLayout JavaDoc());
69     panel.setBorder(new EmptyBorder JavaDoc(5, 6, 5, 6));
70
71     final GridBagConstraints JavaDoc twoColumnLineConstraints = new GridBagConstraints JavaDoc();
72     twoColumnLineConstraints.anchor = GridBagConstraints.WEST;
73     twoColumnLineConstraints.gridx = 0;
74     twoColumnLineConstraints.gridwidth = 2;
75     twoColumnLineConstraints.fill = GridBagConstraints.HORIZONTAL;
76     twoColumnLineConstraints.weightx = 1.0;
77     twoColumnLineConstraints.insets = new Insets JavaDoc(6, 2, 2, 2);
78
79     final GridBagConstraints JavaDoc twoColumnBlockConstraints = new GridBagConstraints JavaDoc();
80     twoColumnBlockConstraints.anchor = GridBagConstraints.WEST;
81     twoColumnBlockConstraints.gridx = 0;
82     twoColumnBlockConstraints.gridwidth = 2;
83     twoColumnBlockConstraints.fill = GridBagConstraints.BOTH;
84     twoColumnBlockConstraints.weightx = 1.0;
85     twoColumnBlockConstraints.weighty = 1.0;
86     twoColumnBlockConstraints.insets = new Insets JavaDoc(2, 2, 2, 2);
87
88     final GridBagConstraints JavaDoc leftColumnConstraints = new GridBagConstraints JavaDoc();
89     leftColumnConstraints.insets = new Insets JavaDoc(2, 2, 2, 2);
90     leftColumnConstraints.gridx = 0;
91     leftColumnConstraints.anchor = GridBagConstraints.EAST;
92
93     final GridBagConstraints JavaDoc rightColumnConstraints = new GridBagConstraints JavaDoc();
94     rightColumnConstraints.insets = new Insets JavaDoc(2, 2, 2, 2);
95     rightColumnConstraints.gridx = 1;
96     rightColumnConstraints.fill = GridBagConstraints.HORIZONTAL;
97     rightColumnConstraints.anchor = GridBagConstraints.WEST;
98
99     panel.add(l1, leftColumnConstraints);
100     panel.add(tfTitle, rightColumnConstraints);
101     panel.add(new JLabel JavaDoc("Java source (paste your source code here):"), twoColumnLineConstraints);
102     panel.add(new JScrollPane JavaDoc(taInput), twoColumnBlockConstraints);
103     panel.add(
104         new JLabel JavaDoc("Converted source (copy and paste this to where you want it):"),
105         twoColumnLineConstraints);
106     panel.add(new JScrollPane JavaDoc(taOutput), twoColumnBlockConstraints);
107
108     optionsPanel.addChangeListener(new ChangeListener JavaDoc() {
109       public void stateChanged(ChangeEvent JavaDoc e) {
110         convert();
111       }
112     });
113
114     this.content = panel;
115   }
116
117   public JComponent JavaDoc getContent() {
118     return content;
119   }
120
121   private void convert() {
122     String JavaDoc title = tfTitle.getText();
123     if (title.equals("")) {
124       title = null;
125     }
126
127     String JavaDoc input = taInput.getText();
128     if (input.trim().equals("")) {
129       taOutput.setText("");
130       statisticsView.setStatistics(null);
131       return;
132     }
133     JavaSourceConversionSettings settings = optionsPanel.getConversionSettings();
134     settings.getConversionOptions().setShowJava2HtmlLink(true);
135     JavaSourceParser parser = new JavaSourceParser(settings.getConversionOptions());
136     JavaSource source = parser.parse(input);
137     source.setFileName(title);
138
139     //Create the converter
140
IJavaSourceConverter converter = settings.createConverter();
141
142     StringWriter JavaDoc writer = new StringWriter JavaDoc();
143     try {
144       converter.writeDocumentHeader(writer, settings.getConversionOptions(), title);
145       converter.convert(source, settings.getConversionOptions(), writer);
146       converter.writeDocumentFooter(writer, settings.getConversionOptions());
147     }
148     catch (IOException JavaDoc e) {
149       throw new RuntimeException JavaDoc(e); //should never happen
150
}
151
152     taOutput.setText(writer.toString());
153     statisticsView.setStatistics(source.getStatistic());
154     taOutput.selectAll();
155   }
156
157   public void requestFocus() {
158     taInput.requestFocus();
159   }
160 }
Popular Tags