From 1660f80c6fe9a61784c4a6202bd47eb7dc5ff636 Mon Sep 17 00:00:00 2001
From: Eilert Tunheim <emtunhei@stud.ntnu.no>
Date: Thu, 10 Mar 2022 12:33:02 +0100
Subject: [PATCH] Redesigned the menubar and added labels and textfields to the
 sidebar

---
 src/main/java/com/application/DB/DB.java      |   8 +-
 src/main/java/com/application/Main.java       | 114 +++++++++++-------
 .../resources/com.application/styleSheet.css  |  21 +++-
 target/classes/com.application/styleSheet.css |  21 +++-
 target/classes/com/application/DB/DB.class    | Bin 9070 -> 8126 bytes
 target/classes/com/application/Main.class     | Bin 7710 -> 7698 bytes
 6 files changed, 117 insertions(+), 47 deletions(-)

diff --git a/src/main/java/com/application/DB/DB.java b/src/main/java/com/application/DB/DB.java
index 9c4cbfa..af9ca51 100644
--- a/src/main/java/com/application/DB/DB.java
+++ b/src/main/java/com/application/DB/DB.java
@@ -114,7 +114,7 @@ public class DB {
         final String sqlStatement = "SELECT TimeStamp, VariantValue " +
                 "FROM sf-drying-optimization.124.int_sd_winccsensordata " +
                 "WHERE TimeStamp BETWEEN \"2021-01-25 08:51:03\" " +
-                "AND \"2021-03-08 11:10:09\" ORDER BY TimeStamp ASC";
+                "AND \"2021-02-08 11:10:09\" ORDER BY TimeStamp ASC";
 
         // Creates a job configuration
         queryJob = getJob(QueryJobConfiguration.newBuilder(sqlStatement).build());
@@ -140,7 +140,7 @@ public class DB {
 
             data.put(formatedTimeStamp, variantValue);
         }
-
+/*
         NavigableMap<String, Number> sortedData = new TreeMap<>(data);
 
         for (Map.Entry<String, Number> entry : sortedData.entrySet()) {
@@ -151,6 +151,8 @@ public class DB {
             System.out.println("Neste: "+next);
         }
 
+ */
+
 
             return data;
     }
@@ -197,7 +199,7 @@ public class DB {
             String formattedCalculatedStop = dateFormat.format(calculatedStop);
 
             java.sql.Timestamp timestamp = new Timestamp(calculatedStart);
-            System.out.println(timestamp);
+            //System.out.println(timestamp);
 
             //System.out.printf("%s\t\t\t%s\t\t\t%s\n",name, formattedCalculatedStart, formattedCalculatedStop);
 
diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java
index a21f7f2..f00bba9 100644
--- a/src/main/java/com/application/Main.java
+++ b/src/main/java/com/application/Main.java
@@ -3,10 +3,9 @@ package com.application;
 import com.application.DB.DB;
 
 import javafx.application.Application;
+import javafx.geometry.Pos;
 import javafx.scene.chart.LineChart;
-import javafx.scene.control.MenuBar;
-import javafx.scene.control.ToggleButton;
-import javafx.scene.control.ToggleGroup;
+import javafx.scene.control.*;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 import javafx.scene.layout.*;
@@ -30,11 +29,10 @@ import java.util.*;
 public class Main extends Application {
 
     private BorderPane topBar;
-    private HBox menuBar;
     private HBox logoBar;
     private VBox sideBar;
     private LineChart<String, Number> lineChart;
-    private MenuBar menubar2;
+    private MenuBar menuBar;
 
     /**
      * Starts the application
@@ -56,10 +54,9 @@ public class Main extends Application {
 
         // Initializing variables
         this.topBar = new BorderPane();
-        this.menuBar = new HBox();
         this.logoBar = new HBox();
         this.sideBar = new VBox();
-        this.menubar2 = new MenuBar();
+        this.menuBar = new MenuBar();
     }
 
     /**
@@ -74,6 +71,7 @@ public class Main extends Application {
         // Create panes for root
         BorderPane root = new BorderPane();
         this.menuBar = createMenuBar();
+        this.sideBar = createSideBar();
         this.logoBar = createLogoBar();
         this.lineChart = createLineChart();
 
@@ -84,8 +82,11 @@ public class Main extends Application {
         this.sideBar.setId("sideBar");
         this.lineChart.setId("lineChart");
 
+        // Sett the menubar in a vbox inorder to stretch over the whole screen
+        VBox vBox = new VBox(this.menuBar);
+
         // Sets alignment for the topBar
-        this.topBar.setTop(menuBar);
+        this.topBar.setTop(vBox);
         this.topBar.setCenter(logoBar);
 
         // Sets alignment for the panes to the parent root
@@ -95,8 +96,8 @@ public class Main extends Application {
 
         VBox.setVgrow(this.logoBar, Priority.ALWAYS);
 
-        DB.getName();
-        System.out.println(DB.getKwh());
+        //DB.getName();
+        //System.out.println(DB.getKwh());
 
         // Sets the scene and defines boundaries
         //Scene scene = new Scene(root, 1200, 600);
@@ -117,42 +118,71 @@ public class Main extends Application {
      *
      * @return MenuBar as a HBox
      */
-    private HBox createMenuBar() {
-        // Creating buttons for menubar
-        ToggleGroup btnMenuGroup = new ToggleGroup();
-        ToggleButton btnMenuHome = new ToggleButton("Home");
-        ToggleButton btnMenuInput = new ToggleButton("Input");
-        ToggleButton btnMenuFinish = new ToggleButton("Finish");
-        ToggleButton btnMenuHelp = new ToggleButton("Help");
-
-
-        // Set the buttons toggleable
-        btnMenuHome.setToggleGroup(btnMenuGroup);
-        btnMenuInput.setToggleGroup(btnMenuGroup);
-        btnMenuFinish.setToggleGroup(btnMenuGroup);
-        btnMenuHelp.setToggleGroup(btnMenuGroup);
-
-        // Set the home button as default selected
-        btnMenuHome.setSelected(true);
-
-        //Make sure always one button is selected
-        btnMenuGroup.selectedToggleProperty().addListener((obsVal, oldVal, newVal) -> {
-            if (newVal == null)
-                oldVal.setSelected(true);
-        });
-
-        /*
-        btnMenuMetaImage.setOnAction(e -> featurePane.loadMetaImage());
-        btnMenuImport.setOnAction(e -> featurePane.loadImport());
-        btnMenuCreate.setOnAction(e -> featurePane.loadCreate());
-        btnMenuSearch.setOnAction(e -> featurePane.loadSearch());
-         */
-
-        menuBar.getChildren().addAll(btnMenuHome, btnMenuInput, btnMenuFinish, btnMenuHelp);
+    private MenuBar createMenuBar() {
+
+        // Creating a menubar
+        MenuBar menuBar = new MenuBar();
+
+        // Defining the individual menus
+        Menu menuFile = new Menu("File");
+        Menu menuEdit = new Menu("Edit");
+        Menu menuHelp = new Menu("Help");
+
+        // Adding the menus to the menubar
+        menuBar.getMenus().add(menuFile);
+        menuBar.getMenus().add(menuEdit);
+        menuBar.getMenus().add(menuHelp);
+
+        // Returns the menubar
         return menuBar;
     }
 
 
+
+    private VBox createSideBar(){
+
+        // Creating a vbox
+        VBox sideBarVBox = new VBox();
+        //sideBarVBox.prefHeight(500);
+
+        Label treeSpeciesLabel = new Label("Tree Species");
+        treeSpeciesLabel.setId("sideBarLabelText");
+        TextField treeSpeciesText = new TextField();
+        treeSpeciesText.setId("sideBarLabelText");
+        treeSpeciesText.setPromptText("Bjørk");
+
+        Label dimensionsLabel = new Label("Width x Height");
+        dimensionsLabel.setId("sideBarLabelText");
+        TextField dimensionsText = new TextField();
+        dimensionsText.setId("sideBarLabelText");
+        dimensionsText.setPromptText("47 x 150");
+
+        Label sawsetLabel = new Label("Sawset");
+        sawsetLabel.setId("sideBarLabelText");
+        TextField sawsetText = new TextField();
+        sawsetText.setId("sideBarLabelText");
+        sawsetText.setPromptText("4x");
+
+        Label moistureGoalLabel = new Label("Moisture Goal");
+        moistureGoalLabel.setId("sideBarLabelText");
+        TextField moistureGoalText = new TextField();
+        moistureGoalText.setId("sideBarLabelText");
+        moistureGoalText.setPromptText("12%");
+
+        Button finish = new Button("Finish");
+        finish.setTranslateX(5);
+
+        sideBarVBox.getChildren().addAll(treeSpeciesLabel, treeSpeciesText, dimensionsLabel, dimensionsText, sawsetLabel, sawsetText, moistureGoalLabel, moistureGoalText, finish);
+
+        VBox.setVgrow(sideBarVBox, Priority.ALWAYS);
+
+        return sideBarVBox;
+
+
+
+    }
+
+
     /**
      * This function imports the logos and defines the alignments
      *
diff --git a/src/main/resources/com.application/styleSheet.css b/src/main/resources/com.application/styleSheet.css
index f2f7ab0..5839eb7 100644
--- a/src/main/resources/com.application/styleSheet.css
+++ b/src/main/resources/com.application/styleSheet.css
@@ -17,7 +17,26 @@
 }
 
 #sideBar {
-    -fx-pref-width: 300;
+    -fx-pref-width: 250;
+}
+
+#sideBarLabel {
+    -fx-pref-height: 17;
+    -fx-translate-x: 10;
+    -fx-max-height: infinity;
+    -fx-max-width: infinity;
+    /*-fx-alignment: center;*/
+    -fx-font-family: Arial;
+}
+
+#sideBarLabelText {
+    -fx-pref-height: 17;
+    -fx-translate-x: 5;
+    -fx-max-height: infinity;
+    -fx-max-width: infinity;
+    -fx-font-family: Arial;
+    /*-fx-alignment: center;*/
+    -fx-font-style: normal;
 }
 
 
diff --git a/target/classes/com.application/styleSheet.css b/target/classes/com.application/styleSheet.css
index f2f7ab0..5839eb7 100644
--- a/target/classes/com.application/styleSheet.css
+++ b/target/classes/com.application/styleSheet.css
@@ -17,7 +17,26 @@
 }
 
 #sideBar {
-    -fx-pref-width: 300;
+    -fx-pref-width: 250;
+}
+
+#sideBarLabel {
+    -fx-pref-height: 17;
+    -fx-translate-x: 10;
+    -fx-max-height: infinity;
+    -fx-max-width: infinity;
+    /*-fx-alignment: center;*/
+    -fx-font-family: Arial;
+}
+
+#sideBarLabelText {
+    -fx-pref-height: 17;
+    -fx-translate-x: 5;
+    -fx-max-height: infinity;
+    -fx-max-width: infinity;
+    -fx-font-family: Arial;
+    /*-fx-alignment: center;*/
+    -fx-font-style: normal;
 }
 
 
diff --git a/target/classes/com/application/DB/DB.class b/target/classes/com/application/DB/DB.class
index 09e5c74d9286c746e9a1a46b2c1ffd7dcea1c4c9..ae3a9ac70f511fc26df8fe9fa898fc8061277dfd 100644
GIT binary patch
delta 2139
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
X=?oiKI2m>^>;Tgj8O}3oV2}g=4u+(O

delta 3053
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
O2GegCUNM|ukOTmAMW2TN

diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class
index 2aba5bd4c21111477289f6aa05bc62773886010e..324b19675b65197d4779a15ad0a53250c89a9c3d 100644
GIT binary patch
delta 4030
zcmbPdGs&j@)W2Q(7#J8#7^iVD)G^%VVyI=f17h7}XSm13z`}5wlcAR3K0Ct$E(Uf8
z=OH`8BQ6Fm2<I_7!xJtBUI^zYNcS@k@f<|F01+=i`d@J{%mW$rnuDPcWX@|2hE9;K
z*Btc>%^<U0b1<}WG2}43W@mT<;=cu{eg`7ngNP5D3?CUjfh0b&Gkjrlm~?;v1lSy!
zAPg=BHHNPs;u{ykcZMGv3_rOTelh&!V)(=Gmz&`q!+#D&1};WMMkWx!3?f)S1S=O~
zJtHF<J0m*>BL^3Q1tTX1BNqoFHx~mhBM&<xF9#zZ7lR#0l%I>ij^Q;sqW~9!GboUp
z8D4WR3UV<xGYWAq3Ue@ua4?E;Fp6<7igPeZuro?>FiLST_%U*_If#H9%D@2PNpmr9
zG0Jc={9}}5XOv@Sl;>bnsOMq`XXNB!2xC;_U{qpfROVucVN_vrh=gg2VN?YPsj)Mv
zb1@`=>}F@w0EOXOc1BGuhBSuT?2KAm3>gf!IT*FM7}6MZ*co-X7;+f(I2iRoG!qx2
z0iz*1qY)QFA)_%nqbV0dF-Wl)7eg_lxsnhA1EVcBqaC9?NU;M*(1D%Nk&B_4(V3mm
zg`LrL@)t&ZuAKbze5b@BMh2-#OrnzuSlA~AGcD(4&rQuM1q;hfcHj`3EW^B!+l`Td
zB{MIxgq_iS@(t!dR+ciS{EEryEQXUGu?kK0=U|^K!_39Q0n+J~nUl)MAPv%L;G3FP
zYR$+17I#g_EP*mTQgaFz8F-V6QWHy3gELc7!M4e0Xij1h)eLjWudrrh;4X%UgSd<g
z0wqPMslf%Q$(gCeK8Z=GIgAW4ARDB?9BW1fek27UsTC!R3<{GSIK=ByD@xolQ*%;4
zN>Va&Q}c>5^YdUv@F7GXdbo=d%ZpP>z=kq1a6xzwDZ$+Q%;J*LqEz?%#2lys0c0_V
zGPbnLyv*VZMh01*ti-a!$*vrNGESu>CHZ;Qa3A}?f*s=H$ptJNlVw>qFnVl0$GV!4
z(O_~Fd;8=M9FhXv3_U!Io(z+D7-lf^FfzzZW@M6M<zc92XqcSHDL%P?g@u)ep^>3!
zaw4ZJb2CHB<VH@#`c8%}9)?8>i+LDUFs$TZ*v_znhv6{85gvwChBh8XFGg=h20@V1
z(kk?elT-6j_5JcwQh6A<8GU#deHs0D82v#+0HYr}V;~P>5MwY8V+dm?BZCl%reKg(
zkghNu#&E_6cE(5^#wf;UMuy1>TuNdwJdCl7aqNuoJd6p9iR_F?JdDYVDU&0(<YiNN
z7}FTNc^K0fGk6#?K|~f~HV<PC$b*uT9XUkRK#7Ktfd!O~Ko)p2GO$3>4htyV@G#~w
zMldo+fs|@N<AEonC^c09nmia81fWR=EDMPixyg<kVqvhvz{tSnly!JVQ8o`_9w<Ec
z!ZTA!G88HlJW?~$GeD`-#9X05!O+xzk%283oFo_-m`o}d8F+o6sXzgg3>X=h4UJSM
z{}+)^gv2o;1DhK-{&^VlL0&6hjNoA`WGrH2keDpMBQd#%JA%2Jv3T-X?nHrZ#u6UJ
zQjn@L#&VE{7@0)4gHqEo^YeHZD;Ps32l9$duHZ3cu4MF{yn#p2xSO$xk%7;ps4_Dz
zT_K<-KRLCyn4Phjhp~pS78<Aer6rj;`k>J8O)TJH=$`zC$HK&$kwL&IKfk27q$sh#
zH?<@qKc$$Tjj>UHv5B9Ju~~qzg@>_~v5lRvorkf5v6F|fi!owyAg?xaH)GS}Cf@a;
z;u_K5#Eg<+ChPE>*gS`S2csrOdTI$M&Wafsc#Bg@0*dl;3rZlt4&sLtCFT|9B$lK`
zOui%3FTkP^r5VP^z)_r9;*nmIUp~1{*md$3K8eZh{IZiT3tO>rF?KWdOy(8QVXtNE
zWn@s-n7oi(V{(SbbY6DGJ|4z?#z{O3ml>{1))zHpoH998^cLgP$qr&Z^|cIj3=9mc
z3{0T>!N9=41j-p;x|yK`Ot&($F)%W;gV`MnObne2T?`BioD7T%-3&bpj10XD3=H}V
zj0}t*bF{WIFm41Z?PFkIU;_)vGW0VrFz|rctPB$vCW5t3VwlXp#1H|}Z4B4FgMkU5
zn~Q;ofq_ArfrUW_#e^vgQyCZ-rZF%uurM$(OlM#O<#PrmutV}0n8EfKPR<sWt>=o|
z&cMBufk$gM18?MZ2EMHf{0QTv7}yvX7)%*h7%Uk087vv37_1mn8LSx$7;KQNGlV)A
zX5CB%Muu4ovmw?oPGVqZU}a!nc(9v+C2~6htFM;Ub_Rj14E!KkupVT!)^-M=tqhzX
z0pYC-B055%+Ze>OwlHuCiEm?&(AvVlFC@8*K}u^21CNmOHU=53Ees+;vfCKsb~A8A
zvg~D$k7NcZ3f|73;HR~PflYTCgCd9q8L^E)Ne9H<#-IqIdA2bqgJ_X$3`!vB`b`Wf
zI~Y`VGpI%Ch%l&&FlcUP(6(ZcWZA}`qqU7eS4eLggZ?%KgPjb9Obp@LLPpydjI~7=
zG`BIBXp1nYZ(}gk2B|gE-o{{#2)8r_Nd^W64+ahfPX+-7F9rz)Zw3Vh9|jEue+E5<
z00wi0Kn4efAO=r{`e242hA@UyhDe57hA4&#hFFFMhB$@}hIobv42cZ07%~`EF=R3v
zWXNVX&XCJ+jv<fXDnmZQZH5Ad`wWHPNHBo}FEkPu7#=XpVVKLn$iTsHgJB*+0|OI7
zDnm8He1;YVW`<P^W(*4$7BaBF(ndYQOa>-Up$<)@I~kb4#(6`NgU@aTi%22M?F?4F
zV3zfE1}i@>%Vs-+l@*KjHU?WAXy9yPu+>E{C0U^C4e+$C#K6J8z)-`$!BEd2#L&PX
z!_ZjIpw7_3V8qbMV9U_P;K|U5<Rx#YmpB-l!8wYNL5RVUVF|-h1||j>27QKQ3`-f9
z8Ppk67?v|EWnf`o0@X_pe=vSxU}fNDU|?hbC6Vn6+&;S*>>`Eiw=+2S>IgY*V{qEd
z;2gP~!KL0$7sPed6>{6g;0{*gv7NyIlmbBFFlAP(lB^)Ut0b$CCrqIiNFkdf8%P4K
zkX@1;#CMfs7xIQF^Z_a4kmLYKz!h>zatb+at7mYP<P`D+tMrQ$^54!7V8tcLCBhK6
zjUiZj8$*ZyCpdlU1V^&y21l|=vIIx6NwNk<vP-fBM{-EA2S*C9Npb{73b0FZ21g2T
zNOA@5WC#VNRY=O#Mg)HrgA@Y;!$bxShA9j}3{x2-7^X4QD=<uFP-B?Epu;eW!JJ_>
zgB`;h26u+J41Nsr7(y8qFeET6WJqUN#8AMnn4z3u2}2#jGKNlu<qQ)TRxr$DSjn(}
zVHLx2hBXYE7}hfEVpz}cona%xKZecVXe@w40X!OiFsx!|VE{$rJBHN^YZ#aq6zUls
zFsx-*$H2^B&Tx`pJ;NFX76x~QoeUco)-kX$Brq&s*vPPkfsLVnVFJS@hII_=44n++
z44WC&FmN!;WJqV&!my5klVKBsAH!CLZ498|a67{eXvw3-z{bGNz`!tJH$zzDZietk
zp@{7ak=q%feBc7n^$-!?-3&32+S?go{Xh(z?F_M2EV?2LaoZRYbXm4BBucVCIFc+N
z-fo7Z$n6ZtphN)<<P?|yn<N`dfIX5O9C5nAku0G2g2o(M@OFk&M3k7-Gw?DnFdSkK
zWH`*A#Bhv3o8dTvDZ?oS8-~*ijtplQJQ>b1_%mE!h+w$Lkic-6A(P<>Lm|U8aPWFS
zd<P9)L56yUoeaAe7#Wlp@)&kA>|$VI&}K+w*u$`wftkUSA(~+y!(Ij!h6n}=hW!i&
z7+4uH8Ppl-4>BBJV1tzg42Kw)KutOZW>8JRD8;}6wjyaaLt5l^hIF6Z3>lHz88Usf
zg|fCWWbbCkiPYBF&XDV;E0nj5A%6!$ffdVchQdfmmhB8hR;;@jiX*o(lvshXNa;3)
zGD%iRwp|S63=BINDwr5_w=q;oveiQh30+W-Ff)KEL?Z?s1_p*Z3>*x183Y*aF^Dld
zU{GLq%%H~bltG)}8G{+a3kG|Jmke$UuNXoY-Y_IEyhRF)Bxq=GFhnsNWjMyb$RNNF
z#BiM91SqjFIDwj~49pDL;M8`CfrX*oj6sLtG{Y$dRt9?pWri~h=NZ@-E-)}KC@?TH
zD1bF|z%^WCU}1o$zsSG}53`xjivN-T7pVCFDS#M)7+4vY85kHuw6-x+?PjP3hg1#3
zw}^^@EdyK?zXJOJWF-TG2-p#z{+tNIRfcO|c@c)|3^y2<7?>Guf(z4I4Cfda7^E1O
s8HyQA7|t?CGE_5~Fgh_vGEQKe%s7!jlF<UvoM5zMU}m&pv}Uvc02PIDZ2$lO

delta 4048
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

-- 
GitLab