package de.wwwu.awolf.view.listener; import de.wwwu.awolf.presenter.Presenter; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.filechooser.FileSystemView; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; /** * Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden. * * @Author: Armin Wolf * @Email: a_wolf28@uni-muenster.de * @Date: 10.09.2017. */ public class ExportDataListener implements ActionListener { private Presenter presenter; private Container component; /** * Konstruktor * * @param presenter Presenter * @param component visuelle Elternkomponente */ public ExportDataListener(Presenter presenter, Container component) { this.presenter = presenter; this.component = component; } @Override public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(() -> { File file = null; JFileChooser chooser = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory()); chooser.setPreferredSize(new Dimension(800, 700)); chooser.setFileFilter(new FileNameExtensionFilter("Comma-Separated Value, (*.csv)", "csv", "text")); chooser.setMultiSelectionEnabled(false); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); if (chooser.showSaveDialog(component) == JFileChooser.APPROVE_OPTION) { //Logging.logInfo ("Datei "+chooser.getSelectedFile()+ " ausgewählt."); file = chooser.getSelectedFile(); String filename = file.getAbsolutePath().contains(".csv") ? file.getAbsolutePath() : file.getAbsolutePath().concat(".csv"); File withExtension = new File(filename); final File input = withExtension; Thread t = new Thread(() -> presenter.startExport(input)); t.start(); } }); } }