algorithms-for-computing-li.../src/main/java/View/MainFrame.java

168 lines
5.7 KiB
Java

package View;
import Presenter.Presenter;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden.
*
* @Author: Armin Wolf
* @Email: a_wolf28@uni-muenster.de
* @Date: 28.05.2017.
*/
public class MainFrame extends JFrame {
private Presenter presenter;
//TODO refactoring
private JButton arrangementButton;
private JButton plotButton;
private JButton button3;
private JPanel pane;
private JDialog arrangementDialog;
private JDialog plotDialog;
private JTextArea output;
private JPanel menupanel;
private JScrollPane scrollPane;
private ArrangementDialog arrangement;
private PlotDialog plot;
public MainFrame(){
initGUI();
}
public Presenter getPresenter() {
return presenter;
}
public void setPresenter(Presenter presenter) {
this.presenter = presenter;
}
/**
* visualisierungs methoden
*/
public void createArrangement() {
if (arrangement == null){
arrangement = new ArrangementDialog();
arrangement.setPrameters(getPresenter().getMax(), getPresenter().getMin(), getPresenter().getLines());
arrangement.createArrangement();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
arrangementDialog.add(arrangement);
arrangementDialog.setVisible(true);
}
});
} else {
arrangementDialog.setVisible(true);
}
}
public void createLine() {
//TODO
}
public void createPlot() {
if (plot == null){
plot = new PlotDialog();
plot.createPlot(getPresenter().getLines());
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
plotDialog.add(plot);
plotDialog.setVisible(true);
}
});
} else {
plotDialog.setVisible(true);
}
}
/**
* log Methode
*/
public void log(String s){
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
output.append(s + "\n");
}
});
}
/**
* init GUI
*/
protected void initGUI(){
this.setTitle("MainFrame");
this.setSize(500,400);
this.setLayout(new BorderLayout());
pane = new JPanel();
pane.setLayout(new FlowLayout());
menupanel = new MenuPanel();
arrangementDialog = new JDialog();
plotDialog = new JDialog();
arrangementDialog.setSize(new Dimension(700,470));
plotDialog.setSize(new Dimension(700,470));
arrangementDialog.setTitle("Arrangement Dialog");
plotDialog.setTitle("Scatter Plot Dialog");
arrangementDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
plotDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
output = new JTextArea();
output.setEditable(false);
output.setLineWrap(true);
output.setWrapStyleWord(true);
scrollPane = new JScrollPane(output);
scrollPane.setWheelScrollingEnabled(true);
arrangementButton = new JButton("Arrangement");
plotButton = new JButton("Plot");
button3 = new JButton("Import");
arrangementButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
getPresenter().startArrangementVisualization();
}
});
plotButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
getPresenter().startScatterPlotVisualization();
}
});
button3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
log("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \n" +
"\n" +
"Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet,");
}
});
pane.add(arrangementButton);
pane.add(plotButton);
pane.add(button3);
this.add(menupanel, BorderLayout.NORTH);
this.add(pane, BorderLayout.SOUTH);
this.add(scrollPane, BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}