01: package org.dbbrowser.ui.helper.exporthelper.wizard.paneldescriptors;
02:
03: import java.awt.event.WindowAdapter;
04: import java.awt.event.WindowEvent;
05: import java.io.File;
06: import infrastructure.internationalization.InternationalizationManager;
07: import javax.swing.JOptionPane;
08: import javax.swing.table.AbstractTableModel;
09: import org.dbbrowser.ui.helper.exporthelper.ExportHelper;
10: import org.dbbrowser.ui.helper.exporthelper.ExportHelperFactory;
11: import org.dbbrowser.ui.helper.exporthelper.wizard.WizardState;
12: import org.dbbrowser.ui.helper.exporthelper.wizard.panel.ExportWizardProgressPanel;
13: import com.nexes.wizard.WizardPanelDescriptor;
14:
15: public class ExportProgressPanelDescriptor extends
16: WizardPanelDescriptor implements Runnable {
17: public static final String IDENTIFIER = "EXPORT_PROGRESS_PANEL";
18: private static final String TITLE = InternationalizationManager
19: .getInstance().getMessage("dbbrowser-ui",
20: "dbbrowser-ui-dbbrowser-window-title-label", null);;
21: private AbstractTableModel abstractTableModel = null;
22: private ExportHelper exportHelper = null;
23:
24: public ExportProgressPanelDescriptor(
25: AbstractTableModel abstractTableModel) {
26: super (IDENTIFIER, new ExportWizardProgressPanel());
27: this .abstractTableModel = abstractTableModel;
28: }
29:
30: public Object getNextPanelDescriptor() {
31: return WizardPanelDescriptor.FINISH;
32: }
33:
34: public Object getBackPanelDescriptor() {
35: return ExportConfirmationPanelDescriptor.IDENTIFIER;
36: }
37:
38: public void aboutToDisplayPanel() {
39: ((ExportWizardProgressPanel) getPanelComponent()).setupPanel();
40: getWizard().setNextFinishButtonEnabled(false);
41: getWizard().setBackButtonEnabled(false);
42: }
43:
44: public void displayingPanel() {
45: //Set the maximum value
46: ((ExportWizardProgressPanel) getPanelComponent())
47: .setMaximumValue(abstractTableModel.getRowCount() - 1);
48:
49: //Start a new thread to do the export
50: Thread t = new Thread(this );
51: t.start();
52: }
53:
54: public void run() {
55: try {
56: //Add this as a listener for window closing event. Stop thread when window is closed
57: this .getWizard().getDialog().addWindowListener(
58: new WindowCloseListener());
59:
60: //Start the export
61: this .exportHelper = ExportHelperFactory
62: .getExportHelper((String) WizardState.getInstance()
63: .getState("Export type"));
64: this .exportHelper.export(this .abstractTableModel,
65: ((ExportWizardProgressPanel) getPanelComponent()),
66: new File((String) WizardState.getInstance()
67: .getState("Save as")));
68:
69: //Enable Finish button
70: getWizard().setNextFinishButtonEnabled(true);
71: getWizard().setCancelButtonEnabled(false);
72: } catch (Exception exc) {
73: Object[] params = new Object[] { exc.getMessage() };
74: String ERROR_MESSAGE = InternationalizationManager
75: .getInstance()
76: .getMessage(
77: "dbbrowser-export-wizard",
78: "dbbrowser-ui-export-wizard-export-failed-message",
79: params);
80: ;
81: JOptionPane.showMessageDialog(null, ERROR_MESSAGE, TITLE,
82: JOptionPane.ERROR_MESSAGE, null);
83:
84: //Enable Cancel and previous button
85: getWizard().setBackButtonEnabled(true);
86: }
87: }
88:
89: private class WindowCloseListener extends WindowAdapter {
90: public void windowClosed(WindowEvent e) {
91: if (exportHelper != null) {
92: exportHelper.stop();
93: }
94: }
95: }
96: }
|