From 3f7fa449d58750bf874d10463cd9b2808040e288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20K=C3=BChn?= Date: Mon, 20 Dec 2021 11:56:12 +0100 Subject: [PATCH 1/8] First unstyled draft login ui --- .../app/src/main/resources/users/login.fxml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/client/app/src/main/resources/users/login.fxml b/client/app/src/main/resources/users/login.fxml index 25a9267..39752ca 100644 --- a/client/app/src/main/resources/users/login.fxml +++ b/client/app/src/main/resources/users/login.fxml @@ -8,4 +8,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + From d081a88dcdbddc66d04ef14aecc2fed50c820027 Mon Sep 17 00:00:00 2001 From: Marc Beyer Date: Mon, 20 Dec 2021 12:57:18 +0100 Subject: [PATCH 2/8] Added input validation for creating events --- .../main/java/main/CreateEventController.java | 69 +++++++++++-------- .../src/main/java/main/MainController.java | 2 +- .../src/main/resources/main/create-event.css | 11 +++ .../src/main/resources/main/create-event.fxml | 4 +- .../src/main/java/res/DataController.java | 2 +- client/data/src/main/java/res/Event.java | 23 ++++++- 6 files changed, 77 insertions(+), 34 deletions(-) diff --git a/client/app/src/main/java/main/CreateEventController.java b/client/app/src/main/java/main/CreateEventController.java index 14d52d3..e35e339 100644 --- a/client/app/src/main/java/main/CreateEventController.java +++ b/client/app/src/main/java/main/CreateEventController.java @@ -3,10 +3,7 @@ package main; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.Node; -import javafx.scene.control.CheckBox; -import javafx.scene.control.ComboBox; -import javafx.scene.control.DatePicker; -import javafx.scene.control.TextField; +import javafx.scene.control.*; import javafx.stage.Stage; import res.DataController; import res.Event; @@ -29,39 +26,51 @@ public class CreateEventController { public CheckBox checkBoxIsFullDay; @FXML public CheckBox checkBoxIsPrivate; - - - public CreateEventController(){} - @FXML - public void initialize(){} + public Label labelError; - @FXML - protected void createBtnClick(ActionEvent actionEvent){ - Event event = new Event( - textName.getText(), - ComboBoxPriotity.getSelectionModel().getSelectedIndex(), - checkBoxIsFullDay.isSelected(), - checkBoxIsPrivate.isSelected(), - textStart.getText(), - textEnd.getText(), - datePickerDate.getValue().atStartOfDay(), - 1 - ); - - System.out.println(event.getAsUrlParam()); - - DataController dataController = new DataController(); - dataController.createEvent(event); - - Stage stage = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow(); - stage.close(); + public CreateEventController() { } @FXML - protected void abortBtnClick(ActionEvent event){ + public void initialize() { + } + + + @FXML + protected void createBtnClick(ActionEvent actionEvent) { + try { + if(datePickerDate.getValue() == null){ + throw new IllegalArgumentException("Bitte w\u00e4hle ein Datum aus"); + } + + Event event = new Event( + textName.getText(), + ComboBoxPriotity.getSelectionModel().getSelectedIndex(), + checkBoxIsFullDay.isSelected(), + checkBoxIsPrivate.isSelected(), + textStart.getText(), + textEnd.getText(), + datePickerDate.getValue().atStartOfDay(), + 1 + ); + + System.out.println(event.getAsUrlParam()); + + DataController dataController = new DataController(); + dataController.createEvent(event); + + Stage stage = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow(); + stage.close(); + } catch (RuntimeException e) { + labelError.setText(e.getMessage()); + } + } + + @FXML + protected void abortBtnClick(ActionEvent event) { Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); stage.close(); } diff --git a/client/app/src/main/java/main/MainController.java b/client/app/src/main/java/main/MainController.java index 36f3aed..984b955 100644 --- a/client/app/src/main/java/main/MainController.java +++ b/client/app/src/main/java/main/MainController.java @@ -69,7 +69,7 @@ public class MainController { protected void onAddBtnClick() { try { FXMLLoader fxmlLoader = new FXMLLoader(MainApplication.class.getResource("create-event.fxml")); - Scene scene = new Scene(fxmlLoader.load(), 650, 500); + Scene scene = new Scene(fxmlLoader.load(), 650, 650); scene.getStylesheets().add(Objects.requireNonNull(MainApplication.class.getResource("create-event.css")).toExternalForm()); Stage stage = new Stage(); stage.setTitle("Termin erstellen"); diff --git a/client/app/src/main/resources/main/create-event.css b/client/app/src/main/resources/main/create-event.css index 59602e9..442c669 100644 --- a/client/app/src/main/resources/main/create-event.css +++ b/client/app/src/main/resources/main/create-event.css @@ -32,4 +32,15 @@ Label{ .mainButton{ -fx-font-weight: bold; +} + +#labelError{ + -fx-font-weight: bold; + -fx-max-width: 1000px; + -fx-text-fill: #ff5555; + -fx-padding: 16px; + -fx-min-height: 140px; + -fx-max-height: 400px; + -fx-wrap-text: true; + -fx-font-size: 16px; } \ No newline at end of file diff --git a/client/app/src/main/resources/main/create-event.fxml b/client/app/src/main/resources/main/create-event.fxml index 2ca5917..b3600c8 100644 --- a/client/app/src/main/resources/main/create-event.fxml +++ b/client/app/src/main/resources/main/create-event.fxml @@ -22,6 +22,7 @@ + @@ -51,8 +52,9 @@ + + + + - + From cb6c55a63985739b1afa1b339e567d94673cd275 Mon Sep 17 00:00:00 2001 From: Marc Beyer Date: Mon, 20 Dec 2021 19:26:07 +0100 Subject: [PATCH 4/8] Added user login --- .../src/main/java/main/MainApplication.java | 7 ++- .../src/main/java/users/LoginControler.java | 4 -- .../src/main/java/users/LoginController.java | 49 +++++++++++++++++++ .../app/src/main/resources/users/login.fxml | 18 +++---- .../src/main/java/res/DataController.java | 19 ++++++- 5 files changed, 79 insertions(+), 18 deletions(-) delete mode 100644 client/app/src/main/java/users/LoginControler.java create mode 100644 client/app/src/main/java/users/LoginController.java diff --git a/client/app/src/main/java/main/MainApplication.java b/client/app/src/main/java/main/MainApplication.java index ac5f771..2522e16 100644 --- a/client/app/src/main/java/main/MainApplication.java +++ b/client/app/src/main/java/main/MainApplication.java @@ -4,6 +4,7 @@ import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.stage.Stage; +import res.DataController; import java.io.IOException; import java.util.Objects; @@ -17,7 +18,6 @@ public class MainApplication extends Application { scene.getStylesheets().add(Objects.requireNonNull(MainApplication.class.getResource("main-view.css")).toExternalForm()); stage.setTitle("SharePlaner"); stage.setScene(scene); - stage.show(); FXMLLoader fxmlLoaderLogin = new FXMLLoader(MainApplication.class.getResource("../users/login.fxml")); Scene sceneLogin = new Scene(fxmlLoaderLogin.load(), 650, 500); @@ -25,8 +25,11 @@ public class MainApplication extends Application { Stage stageLogin = new Stage(); stageLogin.setTitle("Anmelden"); stageLogin.setScene(sceneLogin); - stageLogin.show(); + stageLogin.showAndWait(); + if(DataController.USER_ID >= 0){ + stage.show(); + } } public static void main(String[] args) { diff --git a/client/app/src/main/java/users/LoginControler.java b/client/app/src/main/java/users/LoginControler.java deleted file mode 100644 index df20ac2..0000000 --- a/client/app/src/main/java/users/LoginControler.java +++ /dev/null @@ -1,4 +0,0 @@ -package users; - -public class LoginControler { -} diff --git a/client/app/src/main/java/users/LoginController.java b/client/app/src/main/java/users/LoginController.java new file mode 100644 index 0000000..ebb330f --- /dev/null +++ b/client/app/src/main/java/users/LoginController.java @@ -0,0 +1,49 @@ +package users; + +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.Node; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.stage.Stage; +import res.DataController; + +public class LoginController { + @FXML + public TextField userField; + @FXML + public TextField passField; + @FXML + public Label userErrLabel; + @FXML + public Label passErrLabel; + + @FXML + protected void login(ActionEvent event){ + if(userField.getText().trim().isEmpty()){ + userErrLabel.setText("Bitte laginnamen eingeben!"); + return; + } + if(passField.getText().trim().isEmpty()){ + userErrLabel.setText(""); + passErrLabel.setText("Bitte passwort eingeben!"); + return; + } + + DataController dataController = new DataController(); + if(!dataController.login(userField.getText(), passField.getText())){ + userErrLabel.setText("Name und Passwort passen nicht zueinander!"); + passErrLabel.setText("Name und Passwort passen nicht zueinander!"); + return; + } + + Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); + stage.close(); + } + + @FXML + protected void abortBtnClick(ActionEvent event) { + Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); + stage.close(); + } +} diff --git a/client/app/src/main/resources/users/login.fxml b/client/app/src/main/resources/users/login.fxml index 39752ca..a54a36f 100644 --- a/client/app/src/main/resources/users/login.fxml +++ b/client/app/src/main/resources/users/login.fxml @@ -1,12 +1,8 @@ - - - - - + @@ -23,14 +19,14 @@ - - + + diff --git a/client/data/src/main/java/res/DataController.java b/client/data/src/main/java/res/DataController.java index 84e5cad..88566b6 100644 --- a/client/data/src/main/java/res/DataController.java +++ b/client/data/src/main/java/res/DataController.java @@ -14,10 +14,13 @@ import java.util.*; public class DataController { + public static long USER_ID = -1; + private static final String ALL_EVENTS_ENDPOINT = "http://localhost:8080/vpr/all-events"; private static final String ALL_USERS_ENDPOINT = "http://localhost:8080/vpr/all-users"; private static final String ADD_EVENT_ENDPOINT = "http://localhost:8080/vpr/add-event"; private static final String DELETE_EVENT_ENDPOINT = "http://localhost:8080/vpr/del-event"; + private static final String LOGIN_ENDPOINT = "http://localhost:8080/vpr/login"; private final HttpRequest httpRequest; @@ -25,6 +28,20 @@ public class DataController { httpRequest = new HttpRequest(); } + public boolean login(String username, String password){ + try { + USER_ID = Long.parseLong(httpRequest.sendPostRequest( + LOGIN_ENDPOINT, + "login=" + username + + "&password=" + password + )); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return USER_ID >= 0; + } + public void createEvent(Event event){ try { System.out.println(httpRequest.sendPostRequest(ADD_EVENT_ENDPOINT, event.getAsUrlParam())); @@ -45,7 +62,7 @@ public class DataController { ArrayList eventList = new ArrayList<>(); try { - String jsonResponse = httpRequest.sendPostRequest(ALL_EVENTS_ENDPOINT, "userId=1"); + String jsonResponse = httpRequest.sendPostRequest(ALL_EVENTS_ENDPOINT, "userId=" + USER_ID); System.out.println(jsonResponse); ObjectMapper objectMapper = new ObjectMapper(); From e7b376e7223ea3a20caeee7ef20657d4a3eb95f9 Mon Sep 17 00:00:00 2001 From: Marc Beyer Date: Mon, 20 Dec 2021 19:38:25 +0100 Subject: [PATCH 5/8] Fixed userId when creating an event --- client/app/src/main/java/main/CreateEventController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/app/src/main/java/main/CreateEventController.java b/client/app/src/main/java/main/CreateEventController.java index e35e339..f3923e8 100644 --- a/client/app/src/main/java/main/CreateEventController.java +++ b/client/app/src/main/java/main/CreateEventController.java @@ -54,7 +54,7 @@ public class CreateEventController { textStart.getText(), textEnd.getText(), datePickerDate.getValue().atStartOfDay(), - 1 + (int)DataController.USER_ID ); System.out.println(event.getAsUrlParam()); From ded0b9042fc3eeedd509a32b0fa89d7482b8c2a7 Mon Sep 17 00:00:00 2001 From: Marc Beyer Date: Tue, 21 Dec 2021 08:56:07 +0100 Subject: [PATCH 6/8] Styled login --- .../src/main/java/users/LoginController.java | 1 + client/app/src/main/resources/users/login.css | 37 +++++++++++++++++++ .../app/src/main/resources/users/login.fxml | 4 +- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/client/app/src/main/java/users/LoginController.java b/client/app/src/main/java/users/LoginController.java index ebb330f..15a3488 100644 --- a/client/app/src/main/java/users/LoginController.java +++ b/client/app/src/main/java/users/LoginController.java @@ -22,6 +22,7 @@ public class LoginController { protected void login(ActionEvent event){ if(userField.getText().trim().isEmpty()){ userErrLabel.setText("Bitte laginnamen eingeben!"); + passErrLabel.setText(""); return; } if(passField.getText().trim().isEmpty()){ diff --git a/client/app/src/main/resources/users/login.css b/client/app/src/main/resources/users/login.css index e69de29..2efd649 100644 --- a/client/app/src/main/resources/users/login.css +++ b/client/app/src/main/resources/users/login.css @@ -0,0 +1,37 @@ +* { + -fx-base-background-color: #2B2D42; + -fx-base1-background-color: #525E74; + + -fx-main-border-color: #B0B0B0; + -fx-main-text-color: #ffffff; +} + +GridPane{ + -fx-background-color: #3E415F; + -fx-padding: 20px; + -fx-font-size: 20px; + -fx-font-family: Segoe UI; + + -fx-border-insets: 1; + -fx-border-color: #B0B0B0; + -fx-border-style: solid; + -fx-border-width: 2; + -fx-effect: dropshadow(three-pass-box, rgba(100, 100, 100, 1), 24, 0.5, 0, 0); +} + +Label{ + -fx-text-fill: white; + -fx-max-width: 150px; + -fx-min-width: 150px; +} + +.errorLbl{ + -fx-font-weight: bold; + -fx-max-width: 200px; + -fx-text-fill: #ff5555; + -fx-padding: 16px; + -fx-min-height: 140px; + -fx-max-height: 400px; + -fx-wrap-text: true; + -fx-font-size: 16px; +} \ No newline at end of file diff --git a/client/app/src/main/resources/users/login.fxml b/client/app/src/main/resources/users/login.fxml index a54a36f..48fd16e 100644 --- a/client/app/src/main/resources/users/login.fxml +++ b/client/app/src/main/resources/users/login.fxml @@ -20,11 +20,11 @@ -