From 8a5488f331ee56c7b56a7f82cdc569df848dd0f2 Mon Sep 17 00:00:00 2001 From: bryce Date: Sun, 3 Nov 2024 21:40:40 +1300 Subject: [PATCH] Work on SettingsWindow and Server --- BrickLog-Client/pom.xml | 5 + .../com/example/bricklog/view/MainLayout.java | 2 +- .../example/bricklog/view/SettingsLayout.java | 26 ---- .../example/bricklog/view/SettingsWindow.java | 118 ++++++++++++++++++ .../target/bricklog-client-0.1-SNAPSHOT.jar | Bin 10546 -> 11599 bytes .../example/bricklog/view/MainLayout.class | Bin 6358 -> 6321 bytes .../bricklog/view/SettingsLayout.class | Bin 1235 -> 0 bytes .../bricklog/view/SettingsWindow.class | Bin 0 -> 5290 bytes .../classes/css/config/application.properties | 0 .../target/classes/css/dark-theme.css | 0 .../target/classes/css/light-theme.css | 0 .../compile/default-compile/createdFiles.lst | 1 + BrickLog-Server/sql/schema.sql | 19 +++ BrickLog-Server/src/.dockerignore | 7 ++ BrickLog-Server/src/Dockerfile | 14 +++ BrickLog-Server/src/docker-compose.yml | 29 +++++ 16 files changed, 194 insertions(+), 27 deletions(-) delete mode 100644 BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsLayout.java create mode 100644 BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsWindow.java delete mode 100644 BrickLog-Client/target/classes/com/example/bricklog/view/SettingsLayout.class create mode 100644 BrickLog-Client/target/classes/com/example/bricklog/view/SettingsWindow.class delete mode 100644 BrickLog-Client/target/classes/css/config/application.properties delete mode 100644 BrickLog-Client/target/classes/css/dark-theme.css delete mode 100644 BrickLog-Client/target/classes/css/light-theme.css create mode 100644 BrickLog-Server/sql/schema.sql create mode 100644 BrickLog-Server/src/.dockerignore create mode 100644 BrickLog-Server/src/Dockerfile create mode 100644 BrickLog-Server/src/docker-compose.yml diff --git a/BrickLog-Client/pom.xml b/BrickLog-Client/pom.xml index b2f7b4c..5b48ee4 100644 --- a/BrickLog-Client/pom.xml +++ b/BrickLog-Client/pom.xml @@ -25,6 +25,11 @@ javafx-fxml ${javafx.version} + + org.openjfx + javafx-graphics + ${javafx.version} + diff --git a/BrickLog-Client/src/main/java/com/example/bricklog/view/MainLayout.java b/BrickLog-Client/src/main/java/com/example/bricklog/view/MainLayout.java index dff15ae..0df9e16 100644 --- a/BrickLog-Client/src/main/java/com/example/bricklog/view/MainLayout.java +++ b/BrickLog-Client/src/main/java/com/example/bricklog/view/MainLayout.java @@ -131,7 +131,7 @@ public class MainLayout extends BorderPane { this.setCenter(galleryLayout); } private void switchToSettingsLayout() { - SettingsLayout settingsLayout = new SettingsLayout(); + SettingsWindow settingsLayout = new SettingsWindow(); this.setCenter(settingsLayout); } } diff --git a/BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsLayout.java b/BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsLayout.java deleted file mode 100644 index 9002e60..0000000 --- a/BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsLayout.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.example.bricklog.view; - -import javafx.geometry.Insets; -//import javafx.geometry.Pos; -import javafx.scene.control.CheckBox; -import javafx.scene.control.Label; -import javafx.scene.control.TextField; -import javafx.scene.layout.VBox; - -public class SettingsLayout extends VBox { - - public SettingsLayout() { - this.setSpacing(10); - this.setPadding(new Insets(20)); - - Label settingsTitle = new Label("Settings"); - settingsTitle.setStyle("-fx-font-size: 20px; -fx-font-weight: bold;"); - - // Example settings: toggle for sound, username input - CheckBox soundToggle = new CheckBox("Enable Sound"); - TextField usernameField = new TextField(); - usernameField.setPromptText("Enter your username"); - - this.getChildren().addAll(settingsTitle, soundToggle, usernameField); - } -} diff --git a/BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsWindow.java b/BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsWindow.java new file mode 100644 index 0000000..eb7b340 --- /dev/null +++ b/BrickLog-Client/src/main/java/com/example/bricklog/view/SettingsWindow.java @@ -0,0 +1,118 @@ +package com.example.bricklog.view; + +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.control.Button; +import javafx.scene.control.CheckBox; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.StackPane; +import javafx.scene.layout.VBox; +import static javafx.scene.paint.Color.WHITE; +import javafx.scene.text.Font; + +public class SettingsWindow extends BorderPane { + + private final StackPane contentPane; + private final VBox generalSettings; + private final VBox serverSettings; + private final Label connectionStatus; + + public SettingsWindow() { + // Menu on the left side for navigation + VBox menu = new VBox(); + menu.setSpacing(10); + menu.setPadding(new Insets(10)); + menu.setStyle("-fx-background-color: #f0f0f0;"); + + // Labels for the menu + Label generalLabel = new Label("General"); + generalLabel.setStyle("-fx-font-weight: bold; cursor: hand;"); + generalLabel.setOnMouseClicked(event -> showGeneralSettings()); + + Label serverLabel = new Label("Server"); + serverLabel.setStyle("-fx-font-weight: bold; cursor: hand;"); + serverLabel.setOnMouseClicked(event -> showServerSettings()); + + menu.getChildren().addAll(generalLabel, serverLabel); + this.setLeft(menu); + + // StackPane to hold different settings panels + contentPane = new StackPane(); + this.setCenter(contentPane); + + // Define General Settings panel + generalSettings = new VBox(10); + generalSettings.setPadding(new Insets(15)); + generalSettings.setAlignment(Pos.TOP_LEFT); + Label themeLabel = new Label("Theme:"); + CheckBox darkTheme = new CheckBox("Dark Theme"); + + Label layoutLabel = new Label("Layout:"); + CheckBox compactLayout = new CheckBox("Compact Layout"); + + generalSettings.getChildren().addAll(themeLabel, darkTheme, layoutLabel, compactLayout); + + // Define Server Settings panel + serverSettings = new VBox(10); + serverSettings.setPadding(new Insets(15)); + serverSettings.setAlignment(Pos.TOP_LEFT); + + // Connection Status Label + connectionStatus = new Label("Server Status: Not Connected"); + connectionStatus.setFont(new Font("Arial", 14)); + connectionStatus.setTextFill(WHITE); + connectionStatus.setStyle("-fx-background-color: lightpink; -fx-padding: 5;"); + connectionStatus.setAlignment(Pos.CENTER); + connectionStatus.setMaxWidth(Double.MAX_VALUE); + + // Server IP field & Connect button + Label ipLabel = new Label("Server IP:"); + TextField ipField = new TextField(); + ipField.setPromptText("Enter server IP address..."); + + Button connectButton = new Button("Connect"); + connectButton.setOnAction(event -> connectToServer(ipField.getText())); + + serverSettings.getChildren().addAll(connectionStatus, ipLabel, ipField, connectButton); + + + // Add panels to contentPane and show the default panel + contentPane.getChildren().addAll(generalSettings, serverSettings); + showGeneralSettings(); // Default to showing the general settings + } + + // Method to show the General Settings panel + private void showGeneralSettings() { + generalSettings.setVisible(true); + generalSettings.toFront(); + serverSettings.setVisible(false); + } + + // Method to show the Server Settings panel + private void showServerSettings() { + serverSettings.setVisible(true); + serverSettings.toFront(); + generalSettings.setVisible(false); + } + + // Method to connect to the server + private void connectToServer(String ipAddress) { + boolean isConnected = simulateServerConnection(ipAddress); // Replace with real connection logic + + if (isConnected) { + connectionStatus.setText("Connected"); + connectionStatus.setStyle("-fx-background-color: lightgreen; -fx-padding: 5;"); + } else { + connectionStatus.setText("Not Connected"); + connectionStatus.setStyle("-fx-background-color: lightpink; -fx-padding: 5;"); + } + } + + // Simulated connection logic for demonstration purposes + private boolean simulateServerConnection(String ipAddress) { + // Here, add logic for real server connection. For now, a simple placeholder: + return !ipAddress.isEmpty() && ipAddress.equals("127.0.0.1"); + } +} diff --git a/BrickLog-Client/target/bricklog-client-0.1-SNAPSHOT.jar b/BrickLog-Client/target/bricklog-client-0.1-SNAPSHOT.jar index 6940f79d638f2fe9c8aff90d74d38f345d30c10c..75a22720c537c135f28191daa354467402342ada 100644 GIT binary patch delta 6884 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 delta 5770 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 diff --git a/BrickLog-Client/target/classes/com/example/bricklog/view/MainLayout.class b/BrickLog-Client/target/classes/com/example/bricklog/view/MainLayout.class index 47593c72423a8258edd2e32663777422abece8d3..d13920e26cecadb48db1654c5d61d8c250953f8c 100644 GIT binary patch literal 6321 zcmb_g33wFc8Gip{v$MMyAS@7BKv+(5vVfqNAdrMBl7o^Mj9PJacajX*?5w-9kYH`K z9@zV$t!=4owU^aeMO~CsYi;de?Pc#nd)Hppp7zxC{by!3yChNTQ+S^2KmUC9_kQ31 z{qx9kCm#UNBDN_g6Ic;5M3 zgWAAoBootn|Z5HruGLnY1S)jb8wvQ}r zW?T=T9F-~*_!P__e+hfcOj>C(5$VvPdcucU0#&Vh+uL@BJGys<+Y*MJv;t5uTk;15 z=GEBRXKg|}8wV(^F=HIoo5JhXr$(E@h0Q~{F*sy3g`;L7 z-Yi8{t2j-H^ksCb#~MrMK7<6Sqgf+ig`;EP*7R6R4?lEEc-@+H>wQ=#Ft;Gg(Xdu( zP;k1y{1Tts*vXJ6SRydHzxW>lPk8pgYAdspxFy$noVMllinT!cCm^=J@K>1RvA7)&ya7EN{{$%L11)b=S@ z%`lv*vOP)mjCbn_VvGL*Xv8|{z?n>P&9>S;scD0Xvv9URfTVl0c$~=*SU6daBa1Eu zAaIU~CP?Ivsn<+Vb%DV_q8kpWpwdr<%_=J3m5*Chv`7P_zMhm8qdp(nh-8_ks1_R@ zOqT{_Td5|kd}5QJI!oHXHCV1^*Eg` z#CZy4SyLCXHhOf+Vpual27a%M`O8&Yg8c%OgSyo=WF+EgJt?rVreFz!ozP>JVJ0(? z?r26&AJn1=y~D^@%|2*EODDTXC1TJO(2Aul(57coF#zJoOF*?G5)vOyy*NFfJ9>cH znrknVSTa-`kXTaaZiha=zDD|mCDoTta%m*|6KrrOw!dCKT% zI~uZt?7|WVPc5=gdK9Y;I;CW*af;1`qWkP89-Jf!oIbTQ=QTymirU#OvS#W-Oy+{* zGcrTwp_X`jo1yWrRPgrcK;#eva8$O58yE>PgBWaADc6UC`oXU4ilH(I9?!cWqsTs)P3M?s!LmpETq$)lsVJ>^S%$q$2+=mBLd`h;T znbhs1w|6Y1XB2#TI*AihemscJsQ4@%7AWi9&EE5Tu#s|`CClekd_l5!+giHXws!&Kmomzu^(Y=w@eO=amY&3OGQLkUSfbT#nj$t!cS^QuEx}NG<2K%> zEhi^8B=igtt~@|Wy*dTTr1K|FGBNXE@W0X&IH)&LRVc0|XJy5}*ZR01vWCA5)fTwAe5 zU|9i04t|YfDr-gTX~CW-+)3?e6_3Nm7Glo}thdr^OyZi*u~vriFDia1+4G9m5oiU) z&Isb1mBl*$uHtQyN$?md^z6yR6H?hTuPI11NIwO4$9@ryFyQA9bfKC&mecbl<{rH`nhLU`GtZJaqHe#9^%dwB2Roh7Yn zBb*;S!lw$q2=FQ~q7Cb84>8T!XIMjAWh^ae@yy@o#H8fjWP4e%|4kw+Ep=2o^VP^8kFEH<&D}WEqjEleL05|x#V2eNbdFmmQs(!KG&(G-0BbXnAvoU zJwuKivnDR6tECiqH8f2tW2LoJr)~|I@k~I3#6m?ZAciOO7|Da?u+AH$#5W1G0WD^k z=`mF-61=Nb@(z{X5_q&YFfOMf+?k^@D>_VbIGbvo>`2j038Q^-yrh?o%3@WM1sCVY zeJjt49>da`XL-eZd7-qG^JeE1O1_?|#1ht_Sf=84cxsj+mR8{@ckc`pf3o*hP3$$O z_$!_vU40dv;nY|hsQlDjGw4B zoItp%@i>;}P}?|;#{Rj8oWR-~){kRRzsDwQltfLQx{xP_jdgPW1UB7+bL;NLxg^hF zi(Hj3%Z*@b4%^1Dozy#(T{)chKeN-DPFmmO4S9pzv_IsnJBgQp)9v}TYm{Eq zq=XdbrNWmN*)OF9Ib7_uJ+LV+B_&-Bd3*XRLQ2nlh?ZerokKS?j^X~`$O)KDzK}1N z${`){QC3FEvc_@94MoVuSd2CKL;mA9oWm6%f3e%ItPA;bc-5WEP#Ip$zi;Jr5ts`P zzhceAe6AK?F&1+7bZq2m3znc0%XnK~jyP7r#43#OqtRK%we-?g@v+*>}!9USNBsL2bo5h*fBAU@EcJK>JCqJHC!0#dlaGpqGx44R* zK8|27uBJr;4qk8#uI1BAaTwR(2r;#o)Yo%WhK*tmUPG*v;}TIvd%X1F7<T>w~gqdD$gFv4! zufjEtr1%5=Xp7;oIE9!$pDL#L1;p?qokGmtP8G9b8ZrN1F^H;wJX2jUV+^u{{IUij z?88_@-=6Ja9-eLT92Y`@Oeh4Is1$dQ$^lrl&2br9dWPw>5af5NFh*^iVLNHdL=_%p zs#JbZpDpB7H^>s6!<9$OwdDvBig{d?iE42gf7hTwEaqNVEEg;6)k;w#YVB2>XcVjM a)f#c8*uefF#3r$sTyjR(B3eWnLjMH`wZBpT delta 3066 zcma)83wV=f6@E|hC;y-HOPi$E6zCmV+N7mW2Bcg@+i}@?W2vxu*+|<^TGFIzQ)rpm z;clRAu6*jIAahf3I@zFOsiVR!-f;6aFF4(%IGvX{Z_|01x_Q1o0a2Nc&yy$r`OfA2 z&Uw%IPjamOOnu=KubnsrU@fh6!UC%fO~3{_p-A4X=S;N=w|(V6Y#_0kV69rXS%)!o zS1~!K9?3Oy2<7XVdbUu@BGkw=HlNIFToB_^T~137XP%_+(wKdn|#B1}xQaiNG=} zpK?{oq@}`@532(WXcSn9RZ~}06snLl0+%Wbr>bB$+&d8KH_#->TJFe)N5^G~p~sxL z@}%9t)V08BU<1JsiiAgcx7XIzD&6G*S11}>4AMCg9~w?{MaB~b+6emka5NejnJ~~n zsE}D)&plSJeUreI2+0%HO-%2b1U6%f%+{98>1HlNkwk*i81;g%N#*!ffw$pm8PS&K zZsls*BC)Xy^q^NqpFjlL0Zh1&AE!_vJ6Z>$hz-_8es;~|H;bEn_U0@2e@~oa4 z+=oR5KFDn}0ZZD$Lp+Lisyx*Nk&(3K!vveM1y%S#fsf#jtTW2Mk9Q=NaN;oT6Zj0SCS>+=*<)OGtZQO8 zGOFYLR9LQbJB0fPjtU&ZG{Mqw1))?v>da$8Lo?l zWBqlZiP1!a2g=HUgxprsG7zup92to578r?yhZ?=ma7N&Jcv`;d+T4jB;29my3OuKJ zoPCi9?(DFNkH%EyKN2{rmXm9AdwdtqNy|Vu8t+$@=LLQOyF8fTbE@MD0zZR&e@21M zFGh2`FY@5awoN31&eO6dW2JmCV`)*U!bU<~G(6PP7q0j>O!=DFCvVEEs<8K%P2)R5 ziE!_Zw(xLQxF^be7U{59WS6{Gl<`Hx+Cq81DCBK;fwiJu){FUatMI!n)Gm^?&2R*DiqsZ*Icl?xK&a;wh*!h$M!ou{avqh~PEn`q3k zQ3H`U17-RrFe1>{jro`$HN~ zLP7bwyHaL)4tTkQjj>o{q&XTM9p!nYRq|<1wYEm>y=Oc{lRS;B@%WChVU#l87XA(4 z*;N~qC4*)D5#jHj1C~3X!^!5o)ia=3=-pn&3^H14yqQV3&2u)N+x*^K^PJypI|*O6 zwIcQ4$q_SyXlBfKmKOOxDdJzgsgs1IjC?Rr|CgmQ*YK3|2gZVD)hX z**}TZO1dz*PAR-=lW3kr3wy5%+I%+e`Xn~~zu}YT@3CYoW4^2fmqcZ(-cMZ-8qh4diyxB(Iw^@U5JY;-SpX1Rlm*e)pbi=cJzuGMC>l zIsC5T@cVR>y_i2UVHI&LFNsm+BEf$gccKL2=B0{NfgIAwU~ex^rh_F--C%Ob0?H;$ zGMPP;krUIfPzK9ZP>I{3)@3@k6($LQjg$J}zerT61M4oR(U#_pT`7~YxJHZG!54w~ zu?Z75%Shogz5$MxvP~Rb?ia!N>3^oP?0>n+a diff --git a/BrickLog-Client/target/classes/com/example/bricklog/view/SettingsLayout.class b/BrickLog-Client/target/classes/com/example/bricklog/view/SettingsLayout.class deleted file mode 100644 index 34ad165ab187d1448f8275174e3be0cec337c02e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1235 zcma)6Yfl zYC9x#zk>T1Xn^hO#bO<7IFV@$qDhV+hM_x8X*jlU9ZSvV1#X2g!Vqq1jbIRCl5Cuz zuYpQUu}f-JxI{&GVN5X0q>n1;BZ5hL<`=#kUzk6uXz|Wjh}nmwe>QWcjpy6mV(+z(7x-G&x9QlrTqBjQVRkniOIM+$s#pmAz|*{cCYuk; zX7g?7>^D63;p11r_u(~NQ=|e=h_M|}bkG8HVG`X)q8E$kgNA;36%F8!?yT1H>)I%` hPNzv4mkn%^@v7p{sR5QK&Aiy diff --git a/BrickLog-Client/target/classes/com/example/bricklog/view/SettingsWindow.class b/BrickLog-Client/target/classes/com/example/bricklog/view/SettingsWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..39254c2c2ef58ad47bc4516adaf603421f4fac73 GIT binary patch literal 5290 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