package de.wwwu.awolf.view.listener; import de.wwwu.awolf.presenter.Presenter; 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(() -> { 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); 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, 70); 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 type = datasetTypeComboBox.getSelectedIndex(); Thread t = new Thread(() -> presenter.generateDataset(n, type)); t.start(); dialog.dispose(); }); dialog.setVisible(true); } }); } }