KickJava   Java API By Example, From Geeks To Geeks.

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


1 package de.java2html.gui;
2
3 import java.awt.GridBagConstraints JavaDoc;
4 import java.awt.GridBagLayout JavaDoc;
5 import java.awt.Insets JavaDoc;
6 import java.awt.event.ItemEvent JavaDoc;
7 import java.awt.event.ItemListener JavaDoc;
8 import java.util.ArrayList JavaDoc;
9 import java.util.Iterator JavaDoc;
10 import java.util.List JavaDoc;
11
12 import javax.swing.JCheckBox JavaDoc;
13 import javax.swing.JComboBox JavaDoc;
14 import javax.swing.JComponent JavaDoc;
15 import javax.swing.JLabel JavaDoc;
16 import javax.swing.JPanel JavaDoc;
17 import javax.swing.JSpinner JavaDoc;
18 import javax.swing.SpinnerNumberModel JavaDoc;
19 import javax.swing.event.ChangeEvent JavaDoc;
20 import javax.swing.event.ChangeListener JavaDoc;
21
22 import de.java2html.JavaSourceConversionSettings;
23 import de.java2html.converter.IJavaSourceConverter;
24 import de.java2html.converter.JavaSourceConverterProvider;
25 import de.java2html.options.HorizontalAlignment;
26 import de.java2html.options.JavaSourceConversionOptions;
27 import de.java2html.options.JavaSourceStyleTable;
28
29 public class Java2HtmlOptionsPanel {
30   private final static JavaSourceStyleTable[] styles = JavaSourceStyleTable.getPredefinedTables();
31   private final static HorizontalAlignment[] alignments = new HorizontalAlignment[]{
32       HorizontalAlignment.LEFT,
33       HorizontalAlignment.CENTER,
34       HorizontalAlignment.RIGHT };
35
36   private final SpinnerNumberModel JavaDoc tabModel = new SpinnerNumberModel JavaDoc(2, 0, 16, 1);
37
38   private final JSpinner JavaDoc chTab;
39   private final JComboBox JavaDoc chTarget;
40   private final JComboBox JavaDoc chStyle;
41   private final JComboBox JavaDoc chAlignment;
42   private final JCheckBox JavaDoc cbShowLineNumbers;
43   private final JCheckBox JavaDoc cbShowTableBorder;
44   private final List JavaDoc/*<ChangeListener>*/listeners = new ArrayList JavaDoc();
45
46   private final JComponent JavaDoc content;
47
48   public Java2HtmlOptionsPanel() {
49     chTab = new JSpinner JavaDoc(tabModel);
50     ItemListener JavaDoc itemListener = new ItemListener JavaDoc() {
51       public void itemStateChanged(ItemEvent JavaDoc e) {
52         fireStateChanged();
53       }
54     };
55     tabModel.addChangeListener(new ChangeListener JavaDoc() {
56       public void stateChanged(ChangeEvent JavaDoc e) {
57         fireStateChanged();
58       }
59     });
60
61     chTarget = new JComboBox JavaDoc(JavaSourceConverterProvider.getAllConverters());
62     chTarget.setRenderer(new AbstractSimpleListCellRenderer() {
63       protected String JavaDoc getLabel(Object JavaDoc value) {
64         IJavaSourceConverter converter = (IJavaSourceConverter) value;
65         return converter.getMetaData().getPrintName();
66       }
67     });
68     chTarget.addItemListener(itemListener);
69
70     chStyle = new JComboBox JavaDoc(styles);
71     chStyle.setRenderer(new AbstractSimpleListCellRenderer() {
72       protected String JavaDoc getLabel(Object JavaDoc value) {
73         JavaSourceStyleTable table = (JavaSourceStyleTable) value;
74         return table.getName();
75       }
76     });
77     chStyle.addItemListener(itemListener);
78
79     chAlignment = new JComboBox JavaDoc(alignments);
80     chAlignment.setRenderer(new AbstractSimpleListCellRenderer() {
81       protected String JavaDoc getLabel(Object JavaDoc value) {
82         HorizontalAlignment alignment = (HorizontalAlignment) value;
83         return alignment.getName();
84       }
85     });
86     chAlignment.addItemListener(itemListener);
87
88     cbShowLineNumbers = new JCheckBox JavaDoc("Line numbers", true);
89     cbShowLineNumbers.addItemListener(itemListener);
90
91     cbShowTableBorder = new JCheckBox JavaDoc("Table border", true);
92     cbShowTableBorder.addItemListener(itemListener);
93
94     JPanel JavaDoc panel = new JPanel JavaDoc(new GridBagLayout JavaDoc());
95     final GridBagConstraints JavaDoc leftColumnConstraints = new GridBagConstraints JavaDoc();
96     leftColumnConstraints.insets = new Insets JavaDoc(2, 2, 2, 2);
97     leftColumnConstraints.gridx = 0;
98     leftColumnConstraints.anchor = GridBagConstraints.EAST;
99
100     final GridBagConstraints JavaDoc rightColumnConstraints = new GridBagConstraints JavaDoc();
101     rightColumnConstraints.insets = new Insets JavaDoc(2, 2, 2, 2);
102     rightColumnConstraints.gridx = 1;
103     rightColumnConstraints.fill = GridBagConstraints.NONE;
104     rightColumnConstraints.anchor = GridBagConstraints.WEST;
105
106     final GridBagConstraints JavaDoc twoColumnConstraints = new GridBagConstraints JavaDoc();
107     twoColumnConstraints.insets = new Insets JavaDoc(2, 2, 2, 2);
108     twoColumnConstraints.gridx = 0;
109     twoColumnConstraints.gridwidth = 2;
110     twoColumnConstraints.anchor = GridBagConstraints.WEST;
111
112     panel.add(new JLabel JavaDoc("Target:"), leftColumnConstraints);
113     panel.add(chTarget, rightColumnConstraints);
114     panel.add(new JLabel JavaDoc("Style:"), leftColumnConstraints);
115     panel.add(chStyle, rightColumnConstraints);
116     panel.add(new JLabel JavaDoc("Tab-space:"), leftColumnConstraints);
117     panel.add(chTab, rightColumnConstraints);
118     panel.add(new JLabel JavaDoc("Alignment:"), leftColumnConstraints);
119     panel.add(chAlignment, rightColumnConstraints);
120     panel.add(cbShowLineNumbers, twoColumnConstraints);
121     panel.add(cbShowTableBorder, twoColumnConstraints);
122
123     this.content = panel;
124
125     initDefaultOptions();
126   }
127
128   public JComponent JavaDoc getContent() {
129     return content;
130   }
131
132   private void initDefaultOptions() {
133     JavaSourceConversionOptions options = JavaSourceConversionOptions.getDefault();
134     tabModel.setValue(new Integer JavaDoc(options.getTabSize()));
135
136     chStyle.setSelectedItem(options.getStyleTable());
137     cbShowLineNumbers.setSelected(options.isShowLineNumbers());
138     cbShowTableBorder.setSelected(options.isShowTableBorder());
139     chAlignment.setSelectedItem(options.getHorizontalAlignment());
140   }
141
142   public JavaSourceConversionSettings getConversionSettings() {
143     final IJavaSourceConverter selectedConverter = JavaSourceConverterProvider.getAllConverters()[chTarget
144         .getSelectedIndex()];
145     String JavaDoc converterName = selectedConverter.getMetaData().getName();
146     return new JavaSourceConversionSettings(getConversionOptions(), converterName);
147   }
148
149   private JavaSourceConversionOptions getConversionOptions() {
150     JavaSourceConversionOptions options = JavaSourceConversionOptions.getDefault();
151     int tabs = tabModel.getNumber().intValue();
152     options.setTabSize(tabs);
153     options.setStyleTable(styles[chStyle.getSelectedIndex()]);
154     options.setShowLineNumbers(cbShowLineNumbers.isSelected());
155     options.setShowTableBorder(cbShowTableBorder.isSelected());
156     options.setHorizontalAlignment(alignments[chAlignment.getSelectedIndex()]);
157     return options;
158   }
159
160   public synchronized void addChangeListener(ChangeListener JavaDoc listener) {
161     listeners.add(listener);
162   }
163
164   public synchronized void removeChangeListener(ChangeListener JavaDoc listener) {
165     listeners.remove(listener);
166   }
167
168   private synchronized void fireStateChanged() {
169     ChangeEvent JavaDoc event = new ChangeEvent JavaDoc(this);
170     for (Iterator JavaDoc iter = new ArrayList JavaDoc(listeners).iterator(); iter.hasNext();) {
171       ChangeListener JavaDoc listener = (ChangeListener JavaDoc) iter.next();
172       listener.stateChanged(event);
173     }
174   }
175 }
Popular Tags