algorithms-for-computing-li.../LinearRegressionTool/src/main/java/de/wwwu/awolf/view/ViewController.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
******************************************************************************************************************/
}