KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jimm > datavision > gui > ExportWin


1 package jimm.datavision.gui;
2 import jimm.datavision.*;
3 import jimm.datavision.layout.*;
4 import jimm.datavision.layout.pdf.PDFLE;
5 import jimm.util.XMLWriter;
6 import jimm.util.I18N;
7 import java.io.PrintWriter JavaDoc;
8 import java.io.FileWriter JavaDoc;
9 import java.io.FileOutputStream JavaDoc;
10 import java.io.IOException JavaDoc;
11 import java.awt.Frame JavaDoc;
12 import java.awt.BorderLayout JavaDoc;
13 import java.awt.event.ActionListener JavaDoc;
14 import java.awt.event.ActionEvent JavaDoc;
15 import java.util.prefs.Preferences JavaDoc;
16 import javax.swing.*;
17
18 /**
19  * This dialog lets the user export report results using one of the
20  * layout engines.
21  *
22  * @author Jim Menard, <a HREF="mailto:jimm@io.com">jimm@io.com</a>
23  */

24 public class ExportWin extends JDialog implements ActionListener JavaDoc {
25
26
27 protected static Preferences JavaDoc prefs =
28   Preferences.userNodeForPackage(ExportWin.class);
29
30 protected Report report;
31 protected JComboBox combo;
32
33 /**
34  * Constructor.
35  *
36  * @param owner the parent window to which this dialog belongs
37  * @param report the report
38  */

39 public ExportWin(Frame JavaDoc owner, Report report) {
40     super(owner, I18N.get("ExportWin.title"));
41     this.report = report;
42     buildWindow();
43     pack();
44     setVisible(true);
45 }
46
47 /**
48  * Builds the window contents.
49  */

50 protected void buildWindow() {
51     // Panel containing list of layout engines
52
combo = new JComboBox(layoutNames());
53     String JavaDoc lastUsedEngine = prefs.get("last_used_engine", null);
54     if (lastUsedEngine != null)
55       combo.setSelectedItem(lastUsedEngine);
56
57     JPanel comboPanel = new JPanel();
58     comboPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
59     comboPanel.add(combo);
60
61     // OK and Cancel Buttons
62
JPanel buttonPanel = buildButtonPanel();
63
64     // Add list, cards, and buttons to window
65
getContentPane().setLayout(new BorderLayout JavaDoc());
66     getContentPane().add(comboPanel, BorderLayout.CENTER);
67     getContentPane().add(buttonPanel, BorderLayout.SOUTH);
68 }
69
70 /**
71  * Builds and returns a panel containing the OK and Cancel
72  *
73  * @return a panel
74  */

75 protected JPanel buildButtonPanel() {
76     JPanel buttonPanel = new JPanel();
77     JButton button;
78
79     buttonPanel.add(button = new JButton(I18N.get("GUI.ok")));
80     button.addActionListener(this);
81     button.setDefaultCapable(true);
82
83     buttonPanel.add(button = new JButton(I18N.get("GUI.cancel")));
84     button.addActionListener(this);
85
86     return buttonPanel;
87 }
88
89 /**
90  * Handles the OK and Cancel buttons.
91  *
92  * @param e action event
93  */

94 public void actionPerformed(ActionEvent JavaDoc e) {
95     String JavaDoc cmd = e.getActionCommand();
96     if (I18N.get("GUI.ok").equals(cmd)) {
97     String JavaDoc choice = (String JavaDoc)combo.getSelectedItem();
98     prefs.put("last_used_engine", choice);
99     dispose();
100     runReport(choice);
101     }
102     else if (I18N.get("GUI.cancel").equals(cmd))
103     dispose();
104 }
105
106 protected String JavaDoc[] layoutNames() {
107     String JavaDoc[] names = new String JavaDoc[7];
108     int i = 0;
109     names[i++] = I18N.get("ExportWin.le_comma");
110     names[i++] = I18N.get("ExportWin.le_tab");
111     names[i++] = I18N.get("ExportWin.le_docbook");
112     names[i++] = I18N.get("ExportWin.le_html");
113     names[i++] = I18N.get("ExportWin.le_latex");
114     names[i++] = I18N.get("ExportWin.le_pdf");
115     names[i++] = I18N.get("ExportWin.le_xml");
116     return names;
117 }
118
119 /**
120  * Given the user's choice of layout engine, ask user for output file
121  * and run the report.
122  *
123  * @param choice the combo box string that the user selected
124  */

125 protected void runReport(String JavaDoc choice) {
126     String JavaDoc extension = null;
127     if (I18N.get("ExportWin.le_comma").equals(choice))
128     extension = ".csv";
129     else if (I18N.get("ExportWin.le_tab").equals(choice))
130     extension = ".tab";
131     else if (I18N.get("ExportWin.le_docbook").equals(choice))
132     extension = ".sgml";
133     else if (I18N.get("ExportWin.le_html").equals(choice))
134     extension = ".html";
135     else if (I18N.get("ExportWin.le_latex").equals(choice))
136     extension = ".tex";
137     else if (I18N.get("ExportWin.le_pdf").equals(choice))
138     extension = ".pdf";
139     else if (I18N.get("ExportWin.le_xml").equals(choice))
140     extension = ".xml";
141
142     String JavaDoc path = selectFile(extension);
143     if (path == null) // Cancelled by user
144
return;
145
146     try {
147     LayoutEngine le = null;
148     if (I18N.get("ExportWin.le_comma").equals(choice))
149         le = new CharSepLE(new PrintWriter JavaDoc(new FileWriter JavaDoc(path)), ',');
150     else if (I18N.get("ExportWin.le_tab").equals(choice))
151         le = new CharSepLE(new PrintWriter JavaDoc(new FileWriter JavaDoc(path)), '\t');
152     else if (I18N.get("ExportWin.le_docbook").equals(choice))
153         le = new DocBookLE(new PrintWriter JavaDoc(new FileWriter JavaDoc(path)));
154     else if (I18N.get("ExportWin.le_html").equals(choice))
155         le = new HTMLLE(new PrintWriter JavaDoc(new FileWriter JavaDoc(path)));
156     else if (I18N.get("ExportWin.le_latex").equals(choice))
157         le = new LaTeXLE(new PrintWriter JavaDoc(new FileWriter JavaDoc(path)));
158     else if (I18N.get("ExportWin.le_pdf").equals(choice))
159         le = new PDFLE(new FileOutputStream JavaDoc(path));
160     else if (I18N.get("ExportWin.le_xml").equals(choice))
161         le = new XMLLE(new XMLWriter(new FileOutputStream JavaDoc(path)));
162
163     if (le != null) {
164         report.setLayoutEngine(le);
165         report.run();
166     }
167     }
168     catch (IOException JavaDoc e) {
169     ErrorHandler.error(I18N.get("ExportWin.err_msg"),
170                e, I18N.get("ExportWin.err_title"));
171     }
172 }
173
174 /**
175  * Lets user select output file. I'd like to be able to give a default
176  * file extension (thus the argument), but that will have to come later.
177  *
178  * @param extension default file name extension (unused)
179  * @return the path to the selected file
180  */

181 protected String JavaDoc selectFile(String JavaDoc extension) {
182     JFileChooser chooser = Designer.getChooser();
183     if (chooser.showSaveDialog(this.getOwner()) == JFileChooser.APPROVE_OPTION)
184     return chooser.getSelectedFile().getPath();
185     else
186     return null;
187 }
188
189 }
190
Popular Tags