package de.wwwu.awolf.view.listener; import de.wwwu.awolf.presenter.Presenter; import de.wwwu.awolf.presenter.data.DataProvider; import de.wwwu.awolf.presenter.util.Logging; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; /** * Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden. * * @Author: Armin Wolf * @Email: a_wolf28@uni-muenster.de * @Date: 10.09.2017. */ public class GenerateDataListener implements ActionListener { private Presenter presenter; private JDialog dialog; /** * Konstruktor * * @param presenter Presenter */ public GenerateDataListener(Presenter presenter) { this.presenter = presenter; } @Override public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(() -> { Logging.logInfo("Thread: " + Thread.currentThread().getName()); if (dialog == null || !dialog.isVisible()) { dialog = new JDialog(); dialog.setTitle("generiere Datensatz"); dialog.setAlwaysOnTop(true); NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.getDefault()); DecimalFormat decimalFormat = (DecimalFormat) numberFormat; decimalFormat.setGroupingUsed(false); JTextField textField = new JFormattedTextField(decimalFormat); Dimension preferredSize = textField.getPreferredSize(); textField.setPreferredSize(new Dimension((int) preferredSize.getWidth(), (int) preferredSize.getHeight() + 5)); textField.setColumns(10); textField.setText("20"); JButton aproveButton = new JButton("start"); String[] options = {"Punktwolke", "Gerade", "Kreis und Gerade"}; JComboBox datasetTypeComboBox = new JComboBox<>(options); dialog.setSize(350, 80); dialog.setLayout(new FlowLayout()); dialog.setResizable(false); dialog.setLocationRelativeTo(presenter.getView()); dialog.add(datasetTypeComboBox); dialog.add(textField); dialog.add(aproveButton); aproveButton.addActionListener(e1 -> { int n = Integer.parseInt(textField.getText()); int index = datasetTypeComboBox.getSelectedIndex(); Thread t = new Thread(() -> presenter.generateDataset(n, DataProvider.DataType.values()[index])); t.start(); dialog.dispose(); }); dialog.setVisible(true); } }); } }