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 ; 8 import java.io.FileWriter ; 9 import java.io.FileOutputStream ; 10 import java.io.IOException ; 11 import java.awt.Frame ; 12 import java.awt.BorderLayout ; 13 import java.awt.event.ActionListener ; 14 import java.awt.event.ActionEvent ; 15 import java.util.prefs.Preferences ; 16 import javax.swing.*; 17 18 24 public class ExportWin extends JDialog implements ActionListener { 25 26 27 protected static Preferences prefs = 28 Preferences.userNodeForPackage(ExportWin.class); 29 30 protected Report report; 31 protected JComboBox combo; 32 33 39 public ExportWin(Frame owner, Report report) { 40 super(owner, I18N.get("ExportWin.title")); 41 this.report = report; 42 buildWindow(); 43 pack(); 44 setVisible(true); 45 } 46 47 50 protected void buildWindow() { 51 combo = new JComboBox(layoutNames()); 53 String 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 JPanel buttonPanel = buildButtonPanel(); 63 64 getContentPane().setLayout(new BorderLayout ()); 66 getContentPane().add(comboPanel, BorderLayout.CENTER); 67 getContentPane().add(buttonPanel, BorderLayout.SOUTH); 68 } 69 70 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 94 public void actionPerformed(ActionEvent e) { 95 String cmd = e.getActionCommand(); 96 if (I18N.get("GUI.ok").equals(cmd)) { 97 String choice = (String )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 [] layoutNames() { 107 String [] names = new String [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 125 protected void runReport(String choice) { 126 String 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 path = selectFile(extension); 143 if (path == null) return; 145 146 try { 147 LayoutEngine le = null; 148 if (I18N.get("ExportWin.le_comma").equals(choice)) 149 le = new CharSepLE(new PrintWriter (new FileWriter (path)), ','); 150 else if (I18N.get("ExportWin.le_tab").equals(choice)) 151 le = new CharSepLE(new PrintWriter (new FileWriter (path)), '\t'); 152 else if (I18N.get("ExportWin.le_docbook").equals(choice)) 153 le = new DocBookLE(new PrintWriter (new FileWriter (path))); 154 else if (I18N.get("ExportWin.le_html").equals(choice)) 155 le = new HTMLLE(new PrintWriter (new FileWriter (path))); 156 else if (I18N.get("ExportWin.le_latex").equals(choice)) 157 le = new LaTeXLE(new PrintWriter (new FileWriter (path))); 158 else if (I18N.get("ExportWin.le_pdf").equals(choice)) 159 le = new PDFLE(new FileOutputStream (path)); 160 else if (I18N.get("ExportWin.le_xml").equals(choice)) 161 le = new XMLLE(new XMLWriter(new FileOutputStream (path))); 162 163 if (le != null) { 164 report.setLayoutEngine(le); 165 report.run(); 166 } 167 } 168 catch (IOException e) { 169 ErrorHandler.error(I18N.get("ExportWin.err_msg"), 170 e, I18N.get("ExportWin.err_title")); 171 } 172 } 173 174 181 protected String selectFile(String 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 |