From 46aa23f254ae50423af5725780bdb667d8584c53 Mon Sep 17 00:00:00 2001 From: Eilert Tunheim <emtunhei@stud.ntnu.no> Date: Wed, 30 Mar 2022 14:18:00 +0200 Subject: [PATCH] Updated the linechart class and added separate button for input parameters in GUI --- .../GUI/LineChartFunctionality.java | 29 +++++++++--------- src/main/java/com/application/Main.java | 13 +++++--- .../com.application/CSS/styleSheet.css | 16 +++++++++- .../application/GUI/InputPopUpWindow.class | Bin 0 -> 4282 bytes .../GUI/LineChartFunctionality.class | Bin 0 -> 2332 bytes .../com/application/Main$1WorkerThread.class | Bin 2263 -> 2263 bytes target/classes/com/application/Main.class | Bin 7007 -> 7135 bytes 7 files changed, 39 insertions(+), 19 deletions(-) create mode 100644 target/classes/com/application/GUI/InputPopUpWindow.class create mode 100644 target/classes/com/application/GUI/LineChartFunctionality.class diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java index a928239..0817bee 100644 --- a/src/main/java/com/application/GUI/LineChartFunctionality.java +++ b/src/main/java/com/application/GUI/LineChartFunctionality.java @@ -7,25 +7,25 @@ import javafx.scene.chart.XYChart; public class LineChartFunctionality { - LineChart<String, Number> lineChart; - XYChart.Series<String, Number> series; - CategoryAxis xAxis; - NumberAxis yAxis; + private LineChart<String, Number> lineChart; + private XYChart.Series<String, Number> series; + private final CategoryAxis xAxis; + private final NumberAxis yAxis; public LineChartFunctionality(){ - xAxis = new CategoryAxis(); - yAxis = new NumberAxis(); - series = new XYChart.Series<String, Number>(); - lineChart = new LineChart<>(xAxis,yAxis); - lineChart.getData().add(series); - xAxis.setLabel("Date"); - yAxis.setLabel("Kwh"); - lineChart.setTitle("Drying Processes"); + this.xAxis = new CategoryAxis(); + this.yAxis = new NumberAxis(); + this.series = new XYChart.Series<String, Number>(); + this.lineChart = new LineChart<>(xAxis,yAxis); + this.lineChart.getData().add(series); + this.xAxis.setLabel("Date"); + this.yAxis.setLabel("Kwh"); + this.lineChart.setTitle("Drying Processes"); } public LineChart<String, Number> getLineChart() { - return lineChart; + return this.lineChart; } public void setLineChart(LineChart<String, Number> lineChart) { @@ -33,11 +33,12 @@ public class LineChartFunctionality { } public XYChart.Series<String, Number> getSeries() { - return series; + return this.series; } public void setSeries(XYChart.Series<String, Number> series) { this.series = series; + this.lineChart.getData().add(series); } } diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java index 39fa1a0..d6d7bbc 100644 --- a/src/main/java/com/application/Main.java +++ b/src/main/java/com/application/Main.java @@ -171,9 +171,13 @@ public class Main extends Application { moistureGoalText.setId("sideBarLabelText"); moistureGoalText.setPromptText("12%"); - Button finish = new Button("Finish"); - finish.setId("sideBarButtonFinish"); - finish.setOnAction(e -> InputPopUpWindow.display()); + Button inputParametersButton = new Button("Input Parameters"); + inputParametersButton.setId("sideBarButtonInputParameters"); + inputParametersButton.setOnAction(e -> InputPopUpWindow.display()); + + Button finishButton = new Button("Finish"); + finishButton.setId("sideBarButtonFinish"); + // Creating the circular progressbar @@ -217,7 +221,8 @@ public class Main extends Application { - sideBarVBox.getChildren().addAll(ringProgressIndicator, treeSpeciesLabel, treeSpeciesText, dimensionsLabel, dimensionsText, sawsetLabel, sawsetText, moistureGoalLabel, moistureGoalText, finish); + sideBarVBox.getChildren().addAll(ringProgressIndicator, treeSpeciesLabel, treeSpeciesText, dimensionsLabel, dimensionsText, + sawsetLabel, sawsetText, moistureGoalLabel, moistureGoalText, inputParametersButton, finishButton); VBox.setVgrow(sideBarVBox, Priority.ALWAYS); diff --git a/src/main/resources/com.application/CSS/styleSheet.css b/src/main/resources/com.application/CSS/styleSheet.css index 54b83c3..76111b5 100644 --- a/src/main/resources/com.application/CSS/styleSheet.css +++ b/src/main/resources/com.application/CSS/styleSheet.css @@ -17,6 +17,10 @@ -fx-alignment: center; } + +/* + Sidebar styling + */ #sideBar { -fx-pref-width: 250; } @@ -39,11 +43,21 @@ -fx-font-family: Arial; } -#sideBarButtonFinish { +#sideBarButtonInputParameters { -fx-translate-x: 5; -fx-translate-y: 20; -fx-pref-width: infinity; -fx-pref-height: 25; + -fx-font-size: 16; + -fx-font-weight: 200; + -fx-font-family: Arial; +} + +#sideBarButtonFinish { + -fx-translate-x: 5; + -fx-translate-y: 50; + -fx-pref-width: infinity; + -fx-pref-height: 25; -fx-font-size: 20; -fx-font-family: Arial; -fx-background-color: rgba(104, 229, 59, 1); diff --git a/target/classes/com/application/GUI/InputPopUpWindow.class b/target/classes/com/application/GUI/InputPopUpWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..6d5867cd2617d66b840aed7ac25dce4b744bcf28 GIT binary patch literal 4282 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 QXhv^hU}k7$Xklmt0F{lRO#lD@ literal 0 HcmV?d00001 diff --git a/target/classes/com/application/GUI/LineChartFunctionality.class b/target/classes/com/application/GUI/LineChartFunctionality.class new file mode 100644 index 0000000000000000000000000000000000000000..eaa8f1e713b3132b236b7b894f0529f111199898 GIT binary patch literal 2332 zcmX^0Z`VEs1_l#`C@uzZ25WW(8!iSW25U|RF$P<920JbWRtU$Qoxzcdfdj&EVrOvX zV&G<Q0V#6@vD~;B+!;JL7(79`y*L=WK^na{7<@pIzU&Ns><s>l44gTcd8y7BiA5!h z401kMiDijt75c@=sd=gT$skdEADFx~BLin}W_n&?Noi3kBZCWG#WrAB{hY+Sbp7Cx zqRhN>Ya|iB(%hufB5ONqMh3Rx)S}GPVnznGU?_vfGcPZ-$T=smxELg^4AzI{sEA0g zlT{#ktQi?R39BO7Nvsu)6`94142syybWSWuP0uf?1Szp*WMBm|7#ZZTsfBnGs*=qn zGcU8mj*)>`Lo<w#fyFsLC6$qZ9~8V0bs>pKIjM{cLO%J)i8*13MVTNzRFI`41LPtd zpXB^p{ltQToXq6JlFa-(efLmLL=3r=<|Ttf6LT_4Dy<nAc+yi#K<0zPijhG<Llc`T z;VP^d8QcgcAvz3siczdq)WB~uC`80iJziOm3iZ4@e$7O>31kIldTI$I$uKggV)rUW z%JL>g9g%KeWZ*1DxIhi7zt9{2a<&f<3W;<9$T+Ux{L-T2RJTk}a+8KfKT7J+1C<0k z45|!jj12N1Hd+Qm&IUXTiVRAO46<01K~gp-2k<Z`GpMjL1TZovVo`_cX&wd{26;vX z87vCnt_8U*kcUBnL6V0dh#{DrA%uq^lmV2nToOxCc^JYOA{ZH%y~{Hg83bI4Dl_xa z6#|O#lT$&33J*ghNLGvZ%*4nb0CEhZJo8V=N=+_dWRL<0p@j?7Ba95DSmO*75|Dxr zO&?eS6glkasU<FnC5b2rG&w&fCl#Evi}n4Jic^cqKxKnZW^su%B0O;`Vq{=WOi5v6 z5QVr2*%#KDQH%^6pv;<>l$wL41X^%|oCQ)6l39|I%Am*~#vsnXz`(-51PXlyMg}Pc z1_mYuX$B@xw88lb3__rE!N9;E1d4hF1_o9JMo@xcU}R8dU|`q`<})y)YHep=)Y{F! z6uF&&c`E~p)@}yY$n6YlTN&83b~A89ZfD@!%D|<yn}Iu0YYPL5))of#?F>9y8F;m} zFz{|;;M3Z|z_pWspNSzHBrPPcjX@BkMo4HIgD^;mkjOR$(T!jyYA`S`XfbdxFfa%( zurLTR@G}T8NHGXAs4|E!STKk(cru7F1Tly+L^DV*q%cS_XfiM`@GvkkFfgPtXfbFr zFfcGO=rHIqFo8Xw&%g+lV+Gl=0d4^sSWpH@Gb>axB%JgZ7#Z{#44{StFfcJNF)%Q& zX=!g|-~~C8nE~WXP@T=dpuoV&pa?ce45A8Z5(5JpH0%xGP6UZa!$aSQfsw(O!31gx zvQxRxovH%10OC(nr<yV_GMF)#Lk&rSI#mSZR4$OGw=wW(LxLXRa6SfR1_lNV237`5 z24My*u-OpDi@+T(0!=6g$Ad%^;EuOoU}CTY2dEW;90LOb7Xu>$2ZIBHEQ2Hf%bQ5* literal 0 HcmV?d00001 diff --git a/target/classes/com/application/Main$1WorkerThread.class b/target/classes/com/application/Main$1WorkerThread.class index ecdd8db78db05984f51b2e5159c022801f31209d..9abb12eca1a252de3954b0675b49e8a0237e772b 100644 GIT binary patch delta 89 zcmcaEcwKOVAv^B@22O^3415d+8H5=QO}1lSX?mQ2jo}mnC&LK_E{2l~d<<t9L>MkI vh%=mHkYG5^Aj5EhL66}QgE_+$21kag3|<V^7<?ISPL|=wV!SlDog)AMFZ&oL delta 89 zcmcaEcwKOVAv^CL22O@u415fG8H5@3O}1lSX?mD}jo}yrC&Lj2E{3BFd<-WUL>SI8 vh%=mGkYG5?Aj5EmL66}agE_+m21kaA3|<VE7<?J7PL|=wVmvpwog)AMBOe#r diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class index ba9aec1158e5eb2b28ba0a08e90d814dcfda0e05..39fa3937ebc8e1f685f160bf072975ffcae6a97d 100644 GIT binary patch delta 2221 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 delta 2195 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 Jc^G*a`2hOSzuW)- -- GitLab