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

174 lines
6.0 KiB
Java

package View;
import Presenter.Presenter;
import javax.swing.*;
import java.awt.*;
import java.util.List;
/**
* 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 OutputPanel output;
private JPanel menupanel;
private JPanel sidepanel;
private JSplitPane splitpane;
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(), getPresenter().getModel().getNodes());
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);
}
}
/**
* init GUI
*/
protected void initGUI() {
this.setTitle("MainFrame");
this.setSize(1900, 1000);
this.setLayout(new BorderLayout());
pane = new JPanel();
sidepanel = new SidePanel();
sidepanel.setMinimumSize(new Dimension(400,500));
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 OutputPanel();
splitpane = new JSplitPane();
output.setMinimumSize(new Dimension(400,500));
arrangementButton = new JButton("Arrangement");
plotButton = new JButton("Plot");
button3 = new JButton("Import");
arrangementButton.addActionListener(e -> getPresenter().startArrangementVisualization());
plotButton.addActionListener(e -> getPresenter().startScatterPlotVisualization());
button3.addActionListener(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);
splitpane.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
splitpane.setResizeWeight(.5d);
splitpane.setContinuousLayout(true);
splitpane.setLeftComponent(output);
splitpane.setRightComponent(sidepanel);
this.add(pane, BorderLayout.SOUTH);
this.add(splitpane, BorderLayout.CENTER);
this.add(menupanel, BorderLayout.NORTH);
// this.add(output, BorderLayout.CENTER);
// this.add(sidepanel, BorderLayout.EAST);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
/**
* log Methode
*/
public void log(String s) {
SwingUtilities.invokeLater(() -> output.appendParagraph(s));
}
public void logError(String s){
SwingUtilities.invokeLater(() -> output.appendParagraphRed(s));
}
public void logSuccess(String s){
SwingUtilities.invokeLater(() -> output.appendParagraphGreen(s));
}
public void logHeading(String s){
SwingUtilities.invokeLater(() -> output.appendParagraphWithHeading(s));
}
public void createTable(List<String> heading, List<List<String>> rows){
SwingUtilities.invokeLater(() -> output.logTable(heading, rows));
}
}