From 407105c8bfec02f9c91425fc21fa2bcce811af78 Mon Sep 17 00:00:00 2001 From: Eilert Tunheim <emtunhei@stud.ntnu.no> Date: Fri, 6 May 2022 13:35:31 +0200 Subject: [PATCH] Synced checkboxes with menubar boxes --- .../GUI/LineChartFunctionality.java | 31 +++- src/main/java/com/application/Main.java | 155 +++++++++++++++--- .../GUI/LineChartFunctionality.class | Bin 19225 -> 19899 bytes .../com/application/Main$1WorkerThread.class | Bin 2905 -> 2905 bytes target/classes/com/application/Main.class | Bin 11339 -> 14019 bytes 5 files changed, 159 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java index 837d2d4..23d1c10 100644 --- a/src/main/java/com/application/GUI/LineChartFunctionality.java +++ b/src/main/java/com/application/GUI/LineChartFunctionality.java @@ -22,6 +22,7 @@ import java.time.format.DateTimeFormatter; import java.util.*; import static com.application.GUI.LineChartFunctionality.getDataPointsXAxis; +import static com.application.Main.*; public class LineChartFunctionality { @@ -73,25 +74,40 @@ public class LineChartFunctionality { getLineChart().getData().clear(); - if(printRegressionConfidenceInterval){ + if(isPrintRegressionConfidenceInterval()){ updateLineChart(getRegressionSeriesConfidenceInterval()); + getMenuViewRegressionShadow().setSelected(true); + getRegressionConfidenceIntervalBox().setSelected(true); } else { updateLineChart(new XYChart.Series<>()); + getMenuViewRegressionShadow().setSelected(false); + getRegressionConfidenceIntervalBox().setSelected(false); } - if(printRegression){ + if(isPrintRegression()){ updateLineChart(getRegressionSeries()); + getMenuViewRegression().setSelected(true); + getRegressionBox().setSelected(true); } else { updateLineChart(new XYChart.Series<>()); + getMenuViewRegression().setSelected(false); + getRegressionBox().setSelected(false); } - if(printLiveData){ + if(isPrintLiveData()){ updateLineChart(getLiveDataSeries()); + getMenuViewLiveData().setSelected(true); + getLiveDataBox().setSelected(true); } else { updateLineChart(new XYChart.Series<>()); + getMenuViewLiveData().setSelected(false); + getLiveDataBox().setSelected(false); } - if(printPreviousData){ + if(isPrintPreviousData()){ + + getPreviousBox().setSelected(true); + getMenuViewPreviousData().setSelected(true); // If there are more than 5 series, adds 3 new empty series to keep the color scheme //int index = getLineChart().getData().size(); @@ -99,18 +115,17 @@ public class LineChartFunctionality { int index = getLineChart().getData().size(); //System.out.println(getPreviousData().size()); if (index % 8 == 0 ){ - System.out.println(getLineChart().getData().size()); for (int j = 0; j < 3; j++) { updateLineChart(new XYChart.Series<>()); //index++; System.out.println("@@@@@@@"); } } - System.out.println("Linechart size: "+getLineChart().getData().size()); updateLineChart(getPreviousData().get(i)); - //index++; - } + } else { + getPreviousBox().setSelected(false); + getMenuViewPreviousData().setSelected(false); } } diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java index 6c471af..1deceb7 100644 --- a/src/main/java/com/application/Main.java +++ b/src/main/java/com/application/Main.java @@ -51,6 +51,16 @@ public class Main extends Application { private static TextField moistureGoalText; private static TextField timeLeftText; + private static CheckMenuItem menuViewLiveData; + private static CheckMenuItem menuViewRegression; + private static CheckMenuItem menuViewRegressionShadow; + private static CheckMenuItem menuViewPreviousData; + + private static CheckBox liveDataBox; + private static CheckBox regressionBox; + private static CheckBox regressionConfidenceIntervalBox; + private static CheckBox previousBox; + /** * Starts the application * @@ -155,18 +165,61 @@ public class Main extends Application { // Defining the individual menus Menu menuFile = new Menu("File"); - Menu menuEdit = new Menu("Edit"); + Menu menuView = new Menu("View"); Menu menuHelp = new Menu("Help"); MenuItem menuFileExit = new MenuItem("Exit"); + menuFileExit.setOnAction(event -> exitApplication()); + + setMenuViewLiveData(new CheckMenuItem ("Live Data")); + setMenuViewRegression(new CheckMenuItem ("Regression")); + setMenuViewRegressionShadow(new CheckMenuItem ("Regression Shadow")); + setMenuViewPreviousData(new CheckMenuItem ("Previous Data")); + + getMenuViewLiveData().setOnAction(event -> { + if(getMenuViewLiveData().isSelected()){ + LineChartFunctionality.setPrintLiveData(true); + LineChartFunctionality.printGraphs(); + } else { + LineChartFunctionality.setPrintLiveData(false); + LineChartFunctionality.printGraphs(); + } + }); + getMenuViewRegression().setOnAction(event -> { + if(getMenuViewRegression().isSelected()){ + LineChartFunctionality.setPrintRegression(true); + LineChartFunctionality.printGraphs(); + } else { + LineChartFunctionality.setPrintRegression(false); + LineChartFunctionality.printGraphs(); + } + }); + getMenuViewRegressionShadow().setOnAction(event -> { + if(getMenuViewRegressionShadow().isSelected()){ + LineChartFunctionality.setPrintRegressionConfidenceInterval(true); + LineChartFunctionality.printGraphs(); + } else { + LineChartFunctionality.setPrintRegressionConfidenceInterval(false); + LineChartFunctionality.printGraphs(); + } + }); + getMenuViewPreviousData().setOnAction(event -> { + if(getMenuViewPreviousData().isSelected()){ + LineChartFunctionality.setPrintPreviousData(true); + LineChartFunctionality.printGraphs(); + } else { + LineChartFunctionality.setPrintPreviousData(false); + LineChartFunctionality.printGraphs(); + } + }); - menuFileExit.setOnAction(event -> exitApplication()); menuFile.getItems().addAll(menuFileExit); + menuView.getItems().addAll(getMenuViewLiveData(), getMenuViewRegression(), getMenuViewRegressionShadow(), getMenuViewPreviousData()); // Adding the menus to the menubar - menuBar.getMenus().addAll(menuFile, menuEdit, menuHelp); + menuBar.getMenus().addAll(menuFile, menuView, menuHelp); // Returns the menubar return menuBar; @@ -326,10 +379,10 @@ public class Main extends Application { HBox hBox = new HBox(); Label liveDataText = new Label("View Live Data"); - CheckBox liveDataBox = new CheckBox(); - liveDataBox.setSelected(true); - liveDataBox.setOnAction(event -> { - if(liveDataBox.isSelected()){ + setLiveDataBox(new CheckBox()); + getLiveDataBox().setSelected(true); + getLiveDataBox().setOnAction(event -> { + if(getLiveDataBox().isSelected()){ LineChartFunctionality.setPrintLiveData(true); LineChartFunctionality.printGraphs(); @@ -340,10 +393,10 @@ public class Main extends Application { }); Label regressionText = new Label("View Regression"); - CheckBox regressionBox = new CheckBox(); - regressionBox.setSelected(true); - regressionBox.setOnAction(event -> { - if(regressionBox.isSelected()){ + setRegressionBox(new CheckBox()); + getRegressionBox().setSelected(true); + getRegressionBox().setOnAction(event -> { + if(getRegressionBox().isSelected()){ LineChartFunctionality.setPrintRegression(true); LineChartFunctionality.printGraphs(); @@ -354,10 +407,10 @@ public class Main extends Application { }); Label regressionConfidenceIntervalText = new Label("View Regression Shadow"); - CheckBox regressionConfidenceIntervalBox = new CheckBox(); - regressionConfidenceIntervalBox.setSelected(false); - regressionConfidenceIntervalBox.setOnAction(event -> { - if(regressionConfidenceIntervalBox.isSelected()){ + setRegressionConfidenceIntervalBox(new CheckBox()); + getRegressionConfidenceIntervalBox().setSelected(false); + getRegressionConfidenceIntervalBox().setOnAction(event -> { + if(getRegressionConfidenceIntervalBox().isSelected()){ LineChartFunctionality.setPrintRegressionConfidenceInterval(true); LineChartFunctionality.printGraphs(); } else { @@ -367,10 +420,10 @@ public class Main extends Application { }); Label previousText = new Label("View Previous Data"); - CheckBox previousBox = new CheckBox(); - previousBox.setSelected(true); - previousBox.setOnAction(event -> { - if(previousBox.isSelected()){ + setPreviousBox(new CheckBox()); + getPreviousBox().setSelected(true); + getPreviousBox().setOnAction(event -> { + if(getPreviousBox().isSelected()){ LineChartFunctionality.setPrintPreviousData(true); LineChartFunctionality.printGraphs(); } else { @@ -413,6 +466,70 @@ public class Main extends Application { public LineChartFunctionality getLineChartFunctionality() { return lineChartFunctionality; } + + public static CheckMenuItem getMenuViewLiveData() { + return menuViewLiveData; + } + + public static void setMenuViewLiveData(CheckMenuItem menuViewLiveData) { + Main.menuViewLiveData = menuViewLiveData; + } + + public static CheckMenuItem getMenuViewRegression() { + return menuViewRegression; + } + + public void setMenuViewRegression(CheckMenuItem menuViewRegression) { + Main.menuViewRegression = menuViewRegression; + } + + public static CheckMenuItem getMenuViewRegressionShadow() { + return menuViewRegressionShadow; + } + + public void setMenuViewRegressionShadow(CheckMenuItem menuViewRegressionShadow) { + this.menuViewRegressionShadow = menuViewRegressionShadow; + } + + public static CheckMenuItem getMenuViewPreviousData() { + return menuViewPreviousData; + } + + public void setMenuViewPreviousData(CheckMenuItem menuViewPreviousData) { + Main.menuViewPreviousData = menuViewPreviousData; + } + + public static CheckBox getLiveDataBox() { + return liveDataBox; + } + + public void setLiveDataBox(CheckBox liveDataBox) { + Main.liveDataBox = liveDataBox; + } + + public static CheckBox getRegressionBox() { + return regressionBox; + } + + public void setRegressionBox(CheckBox regressionBox) { + Main.regressionBox = regressionBox; + } + + public static CheckBox getRegressionConfidenceIntervalBox() { + return regressionConfidenceIntervalBox; + } + + public void setRegressionConfidenceIntervalBox(CheckBox regressionConfidenceIntervalBox) { + Main.regressionConfidenceIntervalBox = regressionConfidenceIntervalBox; + } + + public static CheckBox getPreviousBox() { + return previousBox; + } + + public void setPreviousBox(CheckBox previousBox) { + Main.previousBox = previousBox; + } } diff --git a/target/classes/com/application/GUI/LineChartFunctionality.class b/target/classes/com/application/GUI/LineChartFunctionality.class index 0c347f1e19491b0be62501e70eecf30edb8b9c8d..3b8cac832575fc635d10cc62e82deeda1648c460 100644 GIT binary patch delta 11069 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 O@jr;gB*G-hBnANDgPfxP delta 10451 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 diff --git a/target/classes/com/application/Main$1WorkerThread.class b/target/classes/com/application/Main$1WorkerThread.class index b1663172200e7bbc78759e7f6591fc0c346714b5..e79fcb3e2b285f268f3c36e356b87edc495690c5 100644 GIT binary patch delta 107 zcmca9c2jIa1t%Y)76Tun27@r8HiHDC&g3@Ei%yIN3~Y?X47`jc3=)jy4AP9I3^I&n z3<`{v3~G$l3_6VV4El^V3<iw03?__r3~r1L4E~HR3`vY`4B3qC40(*+lV@^evpO<x LGdfM?<PHD;l|~S( delta 107 zcmca9c2jIa1t%ZFR|Y<Y&kVv0-xwqqzE5uByy(R6n}Lnt9|JGLe+CIgCI)Fn1_l{M zMg|2&76vs&HU=F=E(U!@b_N4R4h9oOP6jtdZU%oweugAQL56HbA%;9gvB@*JvRQc; MxEXmTb8-g&0PlPf;s5{u diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class index bb4be3d39984c9a4ca925cc07a09e12c2343f7e0..e75066f16a47ba1ce3d8cd1a2f480d290f6edff0 100644 GIT binary patch literal 14019 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 O);Boo7o7EvaWMeJc63Pq delta 5642 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 -- GitLab