diff --git a/src/main/java/edu/group5/app/control/SignInPageController.java b/src/main/java/edu/group5/app/control/SignInPageController.java index e8d3442..a51e4d5 100644 --- a/src/main/java/edu/group5/app/control/SignInPageController.java +++ b/src/main/java/edu/group5/app/control/SignInPageController.java @@ -6,5 +6,12 @@ public class SignInPageController { public SignInPageController(MainController controller) { this.controller = controller; } - + public void handleSignInBtn() { + System.out.println("Sign in button pressed"); + controller.showHomePage(); + } + public void handleLoginBtn() { + System.out.println("Back to login button pressed"); + controller.showLoginPage(); + } } diff --git a/src/main/java/edu/group5/app/view/MainView.java b/src/main/java/edu/group5/app/view/MainView.java index 48c8058..6b405d6 100644 --- a/src/main/java/edu/group5/app/view/MainView.java +++ b/src/main/java/edu/group5/app/view/MainView.java @@ -23,7 +23,7 @@ public MainView(MainController mainController) { } public Scene createView() { - root.setCenter(new LoginPageView(loginPageController, headerController)); + root.setCenter(new LoginPageView(loginPageController)); return new Scene(root, 1280, 720); } @@ -32,10 +32,10 @@ public void showHomePage() { } public void showLoginPage() { - root.setCenter(new LoginPageView(loginPageController, headerController)); + root.setCenter(new LoginPageView(loginPageController)); } public void showSignInPage() { - root.setCenter(new SignInPageView(signInPageController, headerController)); + root.setCenter(new SignInPageView(signInPageController)); } public void showBrowsePage() {} diff --git a/src/main/java/edu/group5/app/view/loginpage/LoginHeader.java b/src/main/java/edu/group5/app/view/loginpage/LoginHeader.java index 3ee046e..decd5a1 100644 --- a/src/main/java/edu/group5/app/view/loginpage/LoginHeader.java +++ b/src/main/java/edu/group5/app/view/loginpage/LoginHeader.java @@ -8,10 +8,8 @@ import javafx.scene.layout.StackPane; public class LoginHeader extends BorderPane { - private final HeaderController controller; - public LoginHeader(HeaderController controller) { - this.controller = controller; + public LoginHeader() { getStylesheets().add(getClass().getResource("/header/header.css").toExternalForm()); setId("header"); @@ -21,7 +19,6 @@ private StackPane getLogoSection() { StackPane logoSection = new StackPane(); logoSection.setId("logo-section"); logoSection.setAlignment(Pos.CENTER); - logoSection.setOnMouseClicked(e -> controller.handleHomeBtn()); logoSection.setStyle("-fx-cursor: hand;"); ImageView logo = new ImageView( 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 596cf47..d555301 100644 --- a/src/main/java/edu/group5/app/view/loginpage/LoginPageView.java +++ b/src/main/java/edu/group5/app/view/loginpage/LoginPageView.java @@ -16,9 +16,9 @@ public class LoginPageView extends BorderPane { private final LoginPageController controller; - public LoginPageView(LoginPageController loginPageController, HeaderController headerController) { + public LoginPageView(LoginPageController loginPageController) { this.controller = loginPageController; - LoginHeader loginHeaderView = new LoginHeader(headerController); + LoginHeader loginHeaderView = new LoginHeader(); setTop(loginHeaderView); HBox content = new HBox(); diff --git a/src/main/java/edu/group5/app/view/loginpage/SignInPageView.java b/src/main/java/edu/group5/app/view/loginpage/SignInPageView.java index 053f11d..1c5ddae 100644 --- a/src/main/java/edu/group5/app/view/loginpage/SignInPageView.java +++ b/src/main/java/edu/group5/app/view/loginpage/SignInPageView.java @@ -2,16 +2,106 @@ import edu.group5.app.control.HeaderController; import edu.group5.app.control.SignInPageController; -import javafx.scene.layout.BorderPane; +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 SignInPageView extends BorderPane { private final SignInPageController controller; - public SignInPageView(SignInPageController signInPageController, HeaderController headerController) { + public SignInPageView(SignInPageController signInPageController) { this.controller = signInPageController; - setTop(new LoginHeader(headerController)); + setTop(new LoginHeader()); + + HBox content = new HBox(); + content.setFillHeight(true); + HBox.setHgrow(content, Priority.ALWAYS); + + content.getChildren().addAll(getOuterSection(), getImageSection()); + String css = Objects.requireNonNull( + getClass().getResource("/loginpage/signin.css")).toExternalForm(); + content.getStylesheets().add(css); + setCenter(content); + + } + private VBox getOuterSection() { + VBox outerSection = new VBox(12); + outerSection.setAlignment(Pos.CENTER); + HBox.setHgrow(outerSection, Priority.ALWAYS); + outerSection.getChildren().addAll(getSignInBox(), getBackToLoginBtn()); + return outerSection; } + private VBox getSignInBox() { + VBox signInSection = new VBox(12); + signInSection.setAlignment(Pos.CENTER); + signInSection.setId("login-box"); + signInSection.getChildren().addAll(getNameRow(), getEmailBox(), getPasswordBox(), getSignInBtn()); + return signInSection; + } + private HBox getNameRow() { + HBox nameRow = new HBox(12); + nameRow.setMaxWidth(300); + + VBox nameBox = new VBox(); + TextField nameField = new TextField(); + nameField.setPromptText("Jinwoo"); + HBox.setHgrow(nameBox, Priority.ALWAYS); + nameBox.getChildren().addAll(new Label("First name"), nameField); + + VBox surnameBox = new VBox(); + TextField surnameField = new TextField(); + surnameField.setPromptText("Son"); + HBox.setHgrow(surnameBox, Priority.ALWAYS); + surnameBox.getChildren().addAll(new Label("Last Name"), surnameField); + + nameRow.getChildren().addAll(nameBox, surnameBox); + return nameRow; + + } + 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 getSignInBtn() { + Button signInBtn = new Button("Sign In"); + signInBtn.setMaxWidth(300); + signInBtn.setId("login-btn"); + signInBtn.setOnMouseClicked(e -> controller.handleSignInBtn()); + return signInBtn; + } + public Button getBackToLoginBtn() { + Button backBtn = new Button("Already have an account? Log in"); + backBtn.setMaxWidth(300); + backBtn.setOnMouseClicked(e -> controller.handleLoginBtn()); + backBtn.setId("register-btn"); + return backBtn; + } + private StackPane getImageSection() { + StackPane imageSection = new StackPane(); + imageSection.setId("image-section"); + HBox.setHgrow(imageSection, Priority.ALWAYS); + return imageSection; + } + } diff --git a/src/main/resources/loginpage/signin-image.png b/src/main/resources/loginpage/signin-image.png new file mode 100644 index 0000000..7cb78cd Binary files /dev/null and b/src/main/resources/loginpage/signin-image.png differ diff --git a/src/main/resources/loginpage/signin.css b/src/main/resources/loginpage/signin.css new file mode 100644 index 0000000..4ab0276 --- /dev/null +++ b/src/main/resources/loginpage/signin.css @@ -0,0 +1,25 @@ +#image-section { + -fx-background-image: url("/loginpage/signin-image.png"); + -fx-background-size: auto; + -fx-background-position: right 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