package husacct.analyse.presentation; //TODO Due to time issues this was done here. THis class needs to move to the control service.. import husacct.control.task.threading.ThreadWithLoader; import husacct.ServiceProvider; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.filechooser.FileNameExtensionFilter; class ExportDependenciesDialog extends JDialog { private static final long serialVersionUID = -6928586336028017253L; private JLabel pathLabel; private JTextField pathField; private JButton browseButton, exportButton; private File selectedFile; private AnalyseUIController uiController; public ExportDependenciesDialog(AnalyseUIController uiController) { this.uiController = uiController; setTitle(uiController.translate("ExportDependencies")); setup(); addComponents(); setListeners(); super.setVisible(true); } private void setup() { this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); this.setLayout(new FlowLayout()); this.setSize(new Dimension(350, 100)); this.setResizable(false); ServiceProvider.getInstance().getControlService().centerDialog(this); } private void addComponents() { pathLabel = new JLabel(uiController.translate("PathLabelShort")); pathField = new JTextField(20); browseButton = new JButton(uiController.translate("BrowseButton")); exportButton = new JButton(uiController.translate("ExportButton")); exportButton.setEnabled(false); pathField.setEnabled(false); getRootPane().setDefaultButton(exportButton); add(pathLabel); add(pathField); add(browseButton); add(exportButton); } private void setListeners() { browseButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { showFileDialog(); } }); exportButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { if (validateSelectedFile()) { dispose(); ThreadedDependencyExport dependencyExport = new ThreadedDependencyExport(uiController, selectedFile.getAbsolutePath()); ThreadWithLoader analyseExportThread = ServiceProvider.getInstance().getControlService().getThreadWithLoader(ServiceProvider.getInstance().getLocaleService().getTranslatedString("ExportingDependencies"), dependencyExport); analyseExportThread.run(); } } }); } private void showFileDialog() { FileNameExtensionFilter filter = new FileNameExtensionFilter("xls", "xls", "xls"); FileDialog fileDialog = new FileDialog(JFileChooser.FILES_ONLY, uiController.translate("OpenButton"), filter); int returnVal = fileDialog.showDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { if (fileDialog.getSelectedFile().exists()) { setFile(fileDialog.getSelectedFile()); } else { setFile(new File(fileDialog.getSelectedFile().getAbsolutePath() + "." + fileDialog.getFileFilter().getDescription())); } } } private void setFile(File file) { selectedFile = file; pathField.setText(file.getAbsolutePath()); exportButton.setEnabled(true); } public boolean validateSelectedFile() { if (selectedFile == null) { ServiceProvider.getInstance().getControlService().showErrorMessage(uiController.translate("NoFileLocationError")); return false; } else if (!Regex.matchRegex(Regex.filenameRegex, selectedFile.getName())) { ServiceProvider.getInstance().getControlService().showErrorMessage(uiController.translate("InvalidFilenameError")); return false; } return true; } }