326 lines
11 KiB
Java
326 lines
11 KiB
Java
package de.wwwu.awolf.view;
|
|
|
|
|
|
import de.wwwu.awolf.model.Line;
|
|
import de.wwwu.awolf.presenter.algorithms.Algorithm;
|
|
import de.wwwu.awolf.presenter.data.DataHandler;
|
|
import de.wwwu.awolf.presenter.util.Logging;
|
|
import de.wwwu.awolf.view.controller.AlgorithmTabController;
|
|
import de.wwwu.awolf.view.services.DataService;
|
|
import javafx.application.Platform;
|
|
import javafx.event.ActionEvent;
|
|
import javafx.event.EventHandler;
|
|
import javafx.fxml.FXMLLoader;
|
|
import javafx.scene.Node;
|
|
import javafx.scene.Parent;
|
|
import javafx.scene.control.*;
|
|
|
|
import java.io.IOException;
|
|
import java.util.Collection;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden.
|
|
*
|
|
* @Author: Armin Wolf
|
|
* @Email: a_wolf28@uni-muenster.de
|
|
* @Date: 28.05.2017.
|
|
*/
|
|
public class ViewController {
|
|
|
|
private static final String TITLE = "Beta JavaFX";
|
|
private Parent pane;
|
|
|
|
public TabPane tabPane;
|
|
public MenuBar menuBar;
|
|
public TextArea logArea;
|
|
|
|
public ViewController() {
|
|
super();
|
|
}
|
|
|
|
public void initGui() {
|
|
initMenuBar();
|
|
initTabbedPane();
|
|
}
|
|
|
|
private void initTabbedPane() {
|
|
//TODO
|
|
Map<String, String> props = new HashMap<>();
|
|
props.put("sfsdf", "dsadasd");
|
|
props.put("dfd", "dsadasd");
|
|
props.put("sdfdsfg", "dsadasd");
|
|
props.put("dsfsdfsdf", "dsadasd");
|
|
|
|
|
|
|
|
try {
|
|
for (Algorithm.Type value : Algorithm.Type.values()) {
|
|
FXMLLoader loader = new FXMLLoader();
|
|
loader.setLocation(AlgorithmTabController.class.getResource("/views/AlgorithmTab.fxml"));
|
|
Parent parent = loader.load();
|
|
AlgorithmTabController controller = loader.getController();
|
|
controller.setAlgorithmType(value);
|
|
controller.setProperties(props);
|
|
controller.init();
|
|
Tab tab = new Tab(value.getName(), parent);
|
|
tab.setId(value.name());
|
|
tabPane.getTabs().add(tab);
|
|
}
|
|
|
|
} catch (IOException e) {
|
|
Logging.logError("Error while reading AlgorithmTab.fxml", e);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
private void initMenuBar() {
|
|
// Create menus
|
|
Menu fileMenu = new Menu("File");
|
|
Menu toolsMenu = new Menu("Tools");
|
|
Menu helpMenu = new Menu("Help");
|
|
|
|
// Create MenuItems
|
|
MenuItem exportItem = new MenuItem("Export");
|
|
MenuItem importItem = new MenuItem("Import");
|
|
MenuItem exitItem = new MenuItem("Exit");
|
|
MenuItem aboutItem = new MenuItem("About");
|
|
|
|
MenuItem generationItem = new MenuItem("Generate");
|
|
generationItem.setOnAction(new EventHandler<ActionEvent>() {
|
|
@Override
|
|
public void handle(ActionEvent actionEvent) {
|
|
//TODO
|
|
new DataService(DataHandler.DataType.LINE, 100).start();
|
|
}
|
|
});
|
|
MenuItem evaluationItem = new MenuItem("Evaluate");
|
|
|
|
// Add menuItems to the Menus
|
|
fileMenu.getItems().addAll(importItem, exportItem, exitItem);
|
|
toolsMenu.getItems().addAll(generationItem, evaluationItem);
|
|
helpMenu.getItems().addAll(aboutItem);
|
|
|
|
// Add Menus to the MenuBar
|
|
menuBar.getMenus().addAll(fileMenu, toolsMenu, helpMenu);
|
|
|
|
}
|
|
|
|
|
|
/*******************************************************************************************************************
|
|
* visualisierungs methoden
|
|
******************************************************************************************************************/
|
|
|
|
|
|
/**
|
|
* Visualisiert das Ergebnis des LMS-Schätzers
|
|
*
|
|
* @param line Line
|
|
*/
|
|
public void visualizeLMS(final Line line) {
|
|
// plotLMS = new PlotPanel();
|
|
// lmsPanel.setPlotPanel(plotLMS);
|
|
// createPlot(line.getM(), line.getB(), plotLMS, lmsPanel, "LMS");
|
|
}
|
|
|
|
/**
|
|
* Visualisiert das Ergebnis des RM-Schätzers
|
|
*
|
|
* @param line Line
|
|
*/
|
|
public void visualizeRM(final Line line) {
|
|
// plotRM = new PlotPanel();
|
|
// rmPanel.setPlotPanel(plotRM);
|
|
// createPlot(line.getM(), line.getB(), plotRM, rmPanel, "RM");
|
|
}
|
|
|
|
|
|
/**
|
|
* Visualisiert das Ergebnis des TS-Schätzers
|
|
*
|
|
* @param line Line
|
|
*/
|
|
public void visualizeTS(final Line line) {
|
|
// plotTS = new PlotPanel();
|
|
// tsPanel.setPlotPanel(plotTS);
|
|
// createPlot(line.getM(), line.getB(), plotTS, tsPanel, "TS");
|
|
}
|
|
|
|
/**
|
|
* Fügt der Evaluations-Tabelle eine Zeile mit Daten hinzu
|
|
*
|
|
* @param tableEntries Data of the Table
|
|
*/
|
|
public void appendEvalResult(Map<Algorithm.Type, Map<String, String>> tableEntries) {
|
|
|
|
// SwingUtilities.invokeLater(() -> {
|
|
// evaluationPanel.addRow(tableEntries);
|
|
// evaluationPanel.repaint();
|
|
// evaluationPanel.revalidate();
|
|
// });
|
|
}
|
|
|
|
/**
|
|
* Fügt der Evaluations-Tabelle eine Zeile mit Daten hinzu
|
|
*
|
|
* @param res Daten der Spalte
|
|
*/
|
|
public void appendEvalResults(Map<Algorithm.Type, Map<String, String>> res) {
|
|
appendEvalResult(res);
|
|
}
|
|
|
|
|
|
/*******************************************************************************************************************
|
|
* init GUI
|
|
******************************************************************************************************************/
|
|
/**
|
|
* Komponenten werden in Container gesetzt
|
|
*/
|
|
private void addComponents() {
|
|
// toolBar.add(importButton);
|
|
// toolBar.add(exportButton);
|
|
// toolBar.add(generateButton);
|
|
// toolBar.setFloatable(false);
|
|
//
|
|
// setJMenuBar(menu.getMenuBar());
|
|
// add(toolBar);
|
|
//
|
|
// setupSplitPane();
|
|
// setupTabbedPane();
|
|
// ((JPanel) progressDialog.getContentPane()).setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY));
|
|
//
|
|
// this.add(toolBar, BorderLayout.NORTH);
|
|
// this.add(splitpane, BorderLayout.CENTER);
|
|
}
|
|
|
|
|
|
/**
|
|
* Initialisierung der Komponenten
|
|
*/
|
|
private void initializeComponents(Collection<Node> list) {
|
|
|
|
// //panels
|
|
// toolBar = new JToolBar();
|
|
// lmsPanel = new LMSPanel();
|
|
// rmPanel = new RMPanel();
|
|
// tsPanel = new TSPanel();
|
|
// menu = new MenuBar();
|
|
//
|
|
// //Dialogs
|
|
// progressDialog = new JDialog();
|
|
// progressDialog.setLocationRelativeTo(null);
|
|
// progressContent = progressDialog.getContentPane();
|
|
// progressBar = new JProgressBar();
|
|
//
|
|
// //Panes
|
|
// tabbedPane = new JTabbedPane();
|
|
// output = new InfoPanel();
|
|
// splitpane = new JSplitPane();
|
|
//
|
|
// //Buttons
|
|
// importButton = new JButton();
|
|
// generateButton = new JButton();
|
|
// exportButton = new JButton();
|
|
|
|
}
|
|
|
|
/**
|
|
* Icons werden passend gesetzt
|
|
*/
|
|
private void setIcons() {
|
|
// try {
|
|
// ClassLoader classLoader = getClass().getClassLoader();
|
|
// Image imgImport = ImageIO.read(classLoader.getResource("import.png")).getScaledInstance(16, 16, Image.SCALE_SMOOTH);
|
|
// Image imgStart = ImageIO.read(classLoader.getResource("start.png")).getScaledInstance(32, 32, Image.SCALE_SMOOTH);
|
|
// Image imgGenerate = ImageIO.read(classLoader.getResource("generate.png")).getScaledInstance(16, 16, Image.SCALE_SMOOTH);
|
|
// Image imgExport = ImageIO.read(classLoader.getResource("export.png")).getScaledInstance(16, 16, Image.SCALE_SMOOTH);
|
|
// Image imgFrame = ImageIO.read(classLoader.getResource("frame.png")).getScaledInstance(32, 23, Image.SCALE_SMOOTH);
|
|
//
|
|
// importButton.setIcon(new ImageIcon(imgImport));
|
|
// exportButton.setIcon(new ImageIcon(imgExport));
|
|
// generateButton.setIcon(new ImageIcon(imgGenerate));
|
|
// lmsPanel.getStartButton().setIcon(new ImageIcon(imgStart));
|
|
// rmPanel.getStartButton().setIcon(new ImageIcon(imgStart));
|
|
// tsPanel.getStartButton().setIcon(new ImageIcon(imgStart));
|
|
// this.setIconImage(imgFrame);
|
|
// } catch (IOException e) {
|
|
// Logging.logError(e.getMessage(), e);
|
|
// }
|
|
}
|
|
|
|
/**
|
|
* Funktionalitäten werden hinzugefügt
|
|
*/
|
|
public void setActionListeners() {
|
|
// //action listener für MenuItems
|
|
// menu.addActionListeners();
|
|
//
|
|
// //action listener für diese Klasse
|
|
// lmsPanel.getStartButton().addActionListener(new StartAlgorithmListener(((Presenter) getPresenter()), lmsPanel));
|
|
// rmPanel.getStartButton().addActionListener(new StartAlgorithmListener(((Presenter) getPresenter()), rmPanel));
|
|
// tsPanel.getStartButton().addActionListener(new StartAlgorithmListener(((Presenter) getPresenter()), tsPanel));
|
|
// importButton.addActionListener(new ImportDataListener((Presenter) this.getPresenter()));
|
|
// exportButton.addActionListener(new ExportDataListener((Presenter) this.getPresenter()));
|
|
// generateButton.addActionListener(new GenerateDataListener((Presenter) this.getPresenter()));
|
|
|
|
}
|
|
|
|
/**
|
|
* Funktionalitäten werden aktiviert.
|
|
*/
|
|
public void enableFunctionality() {
|
|
// this.getLmsPanel().getStartButton().setEnabled(true);
|
|
// this.getRmPanel().getStartButton().setEnabled(true);
|
|
// this.getTsPanel().getStartButton().setEnabled(true);
|
|
// this.getExportButton().setEnabled(true);
|
|
}
|
|
|
|
/**
|
|
* Funktionalitäten werden deaktiviert.
|
|
*/
|
|
public void disableFunctionality() {
|
|
// this.getLmsPanel().getStartButton().setEnabled(false);
|
|
// this.getRmPanel().getStartButton().setEnabled(false);
|
|
// this.getTsPanel().getStartButton().setEnabled(false);
|
|
// this.getExportButton().setEnabled(false);
|
|
}
|
|
|
|
/*******************************************************************************************************************
|
|
* log Methode
|
|
******************************************************************************************************************/
|
|
/**
|
|
* @param s Text der ausgegeben wird
|
|
*/
|
|
public void logInfo(String s) {
|
|
Platform.runLater(() -> {
|
|
logArea.appendText(s + "\n");
|
|
});
|
|
}
|
|
|
|
/**
|
|
* @param s Fehlertext der ausgegeben wird
|
|
*/
|
|
public void logError(String s) {
|
|
Platform.runLater(() -> {
|
|
logArea.appendText(s + "\n");
|
|
});
|
|
}
|
|
|
|
/**
|
|
* @param s Text der in grüner Farbe ausgegeben wird
|
|
*/
|
|
public void logWarning(String s) {
|
|
Platform.runLater(() -> {
|
|
logArea.appendText(s + "\n");
|
|
});
|
|
}
|
|
|
|
|
|
/*******************************************************************************************************************
|
|
* Getter und Setter Methoden
|
|
******************************************************************************************************************/
|
|
}
|