From c1ce59889b888f2c34ebadf3bf52b5553c397714 Mon Sep 17 00:00:00 2001 From: MatheaGjerde Date: Wed, 11 Mar 2026 15:59:24 +0100 Subject: [PATCH] feat: add email, password fields and register navigation to LoginPageView --- .../app/control/LoginPageController.java | 13 ++++ .../app/control/SignInPageController.java | 4 + .../app/view/loginpage/LoginPageView.java | 74 ++++++++++++++++--- .../app/view/loginpage/SignInPageView.java | 4 + src/main/resources/loginpage/login.css | 18 +++++ 5 files changed, 101 insertions(+), 12 deletions(-) create mode 100644 src/main/java/edu/group5/app/control/LoginPageController.java create mode 100644 src/main/java/edu/group5/app/control/SignInPageController.java create mode 100644 src/main/java/edu/group5/app/view/loginpage/SignInPageView.java diff --git a/src/main/java/edu/group5/app/control/LoginPageController.java b/src/main/java/edu/group5/app/control/LoginPageController.java new file mode 100644 index 0000000..a06d135 --- /dev/null +++ b/src/main/java/edu/group5/app/control/LoginPageController.java @@ -0,0 +1,13 @@ +package edu.group5.app.control; + +public class LoginPageController { + private final MainController controller; + + public LoginPageController(MainController controller) { + this.controller = controller; + } + public void handleRegisterBtn() { + System.out.println("Sign in button pressed"); + controller.showSignInPage(); + } +} diff --git a/src/main/java/edu/group5/app/control/SignInPageController.java b/src/main/java/edu/group5/app/control/SignInPageController.java new file mode 100644 index 0000000..04167c6 --- /dev/null +++ b/src/main/java/edu/group5/app/control/SignInPageController.java @@ -0,0 +1,4 @@ +package edu.group5.app.control; + +public class SignInPageController { +} diff --git a/src/main/java/edu/group5/app/view/loginpage/LoginPageView.java b/src/main/java/edu/group5/app/view/loginpage/LoginPageView.java index 7cd368d..596cf47 100644 --- a/src/main/java/edu/group5/app/view/loginpage/LoginPageView.java +++ b/src/main/java/edu/group5/app/view/loginpage/LoginPageView.java @@ -2,31 +2,30 @@ import edu.group5.app.control.HeaderController; -import edu.group5.app.view.Header; +import edu.group5.app.control.LoginPageController; +import javafx.geometry.Insets; import javafx.geometry.Pos; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.PasswordField; +import javafx.scene.control.TextField; import javafx.scene.layout.*; import java.util.Objects; public class LoginPageView extends BorderPane { + private final LoginPageController controller; - public LoginPageView(HeaderController headerController) { + public LoginPageView(LoginPageController loginPageController, HeaderController headerController) { + this.controller = loginPageController; LoginHeader loginHeaderView = new LoginHeader(headerController); setTop(loginHeaderView); HBox content = new HBox(); content.setFillHeight(true); + HBox.setHgrow(content, Priority.ALWAYS); - VBox loginSection = new VBox(); - loginSection.setAlignment(Pos.CENTER); - HBox.setHgrow(loginSection, Priority.ALWAYS); - - StackPane imageSection = new StackPane(); - imageSection.setId("image-section"); - HBox.setHgrow(imageSection, Priority.ALWAYS); - - - content.getChildren().addAll(loginSection, imageSection); + content.getChildren().addAll(getOuterSection(), getImageSection()); String css = Objects.requireNonNull( getClass().getResource("/loginpage/login.css")).toExternalForm(); @@ -34,5 +33,56 @@ public LoginPageView(HeaderController headerController) { setCenter(content); } + private VBox getOuterSection() { + VBox outerSection = new VBox(12); + outerSection.setAlignment(Pos.CENTER); + HBox.setHgrow(outerSection, Priority.ALWAYS); + outerSection.getChildren().addAll(getLoginBox(), getRegisterBtn()); + return outerSection; + } + private VBox getLoginBox() { + VBox loginSection = new VBox(12); + loginSection.setAlignment(Pos.CENTER); + loginSection.setId("login-box"); + loginSection.getChildren().addAll(getEmailBox(), getPasswordBox(), getLoginBtn()); + return loginSection; + } + private VBox getEmailBox() { + VBox emailBox = new VBox(); + emailBox.setMaxWidth(300); + TextField emailField = new TextField(); + emailField.setPromptText("aurafarmer@gmail.com"); + emailField.setMaxWidth(300); + emailBox.getChildren().addAll(new Label("Email"), emailField); + return emailBox; + } + private VBox getPasswordBox() { + VBox passwordBox = new VBox(); + passwordBox.setMaxWidth(300); + PasswordField passwordField = new PasswordField(); + passwordField.setMaxWidth(300); + passwordBox.getChildren().addAll(new Label("Password"), passwordField); + return passwordBox; + } + private Button getLoginBtn() { + Button loginBtn = new Button("Log In"); + loginBtn.setMaxWidth(300); + loginBtn.setId("login-btn"); + return loginBtn; + } + public Button getRegisterBtn() { + Button registerBtn = new Button("Don't have an account? Sign In"); + registerBtn.setMaxWidth(300); + registerBtn.setOnMouseClicked(e -> controller.handleRegisterBtn()); + registerBtn.setId("register-btn"); + return registerBtn; + } + private StackPane getImageSection() { + StackPane imageSection = new StackPane(); + imageSection.setId("image-section"); + HBox.setHgrow(imageSection, Priority.ALWAYS); + return imageSection; + } + } diff --git a/src/main/java/edu/group5/app/view/loginpage/SignInPageView.java b/src/main/java/edu/group5/app/view/loginpage/SignInPageView.java new file mode 100644 index 0000000..6e6a07c --- /dev/null +++ b/src/main/java/edu/group5/app/view/loginpage/SignInPageView.java @@ -0,0 +1,4 @@ +package edu.group5.app.view.loginpage; + +public class SignInView { +} diff --git a/src/main/resources/loginpage/login.css b/src/main/resources/loginpage/login.css index c67af5c..dc758a1 100644 --- a/src/main/resources/loginpage/login.css +++ b/src/main/resources/loginpage/login.css @@ -4,4 +4,22 @@ -fx-background-position: left center; -fx-background-repeat: no-repeat; -fx-pref-width: 50%; +} +#login-btn { + -fx-background-color: #000000; + -fx-text-fill: white; + -fx-pref-height: 35px; +} + +#register-btn { + -fx-background-color: #000000; + -fx-text-fill: white; + -fx-pref-height: 35px; +} +#login-box { + -fx-border-color: #ccc; + -fx-border-radius: 8px; + -fx-border-width: 1px; + -fx-padding: 24px; + -fx-max-width: 340px; } \ No newline at end of file