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 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() { @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> 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> 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 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 ******************************************************************************************************************/ }