From aad6f726facc23fc5f81dc7a8b22c8481461fe46 Mon Sep 17 00:00:00 2001 From: Mo Date: Sat, 8 Aug 2015 14:44:07 +0300 Subject: [PATCH] add login and verify code dialogs --- .../trader/controllers/LoginController.java | 60 +++++++++++++++++++ .../java/ru/trader/controllers/Screeners.java | 32 +++++++++- .../resources/lang/locale_en_US.properties | 14 ++++- .../resources/lang/locale_ru_RU.properties | 14 ++++- client/src/main/resources/view/login.fxml | 12 ++++ 5 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 client/src/main/java/ru/trader/controllers/LoginController.java create mode 100644 client/src/main/resources/view/login.fxml diff --git a/client/src/main/java/ru/trader/controllers/LoginController.java b/client/src/main/java/ru/trader/controllers/LoginController.java new file mode 100644 index 0000000..6fad1f5 --- /dev/null +++ b/client/src/main/java/ru/trader/controllers/LoginController.java @@ -0,0 +1,60 @@ +package ru.trader.controllers; + +import javafx.application.Platform; +import javafx.fxml.FXML; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.*; +import javafx.util.Pair; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ru.trader.view.support.Localization; + +import java.util.Optional; + + +public class LoginController { + private final static Logger LOG = LoggerFactory.getLogger(LoginController.class); + + @FXML + private TextField email; + @FXML + private PasswordField password; + + private Dialog> dialog; + + private void createDialog(Parent owner, Parent content){ + dialog = new Dialog<>(); + if (owner != null) dialog.initOwner(owner.getScene().getWindow()); + dialog.setTitle(Localization.getString("login.title")); + dialog.setHeaderText(Localization.getString("login.header")); + dialog.getDialogPane().setContent(content); + ButtonType loginButtonType = new ButtonType(Localization.getString("login.text.login"), ButtonBar.ButtonData.OK_DONE); + dialog.getDialogPane().getButtonTypes().addAll(loginButtonType, ButtonType.CANCEL); + Node loginButton = dialog.getDialogPane().lookupButton(loginButtonType); + loginButton.setDisable(true); + email.textProperty().addListener((observable, oldValue, newValue) -> { + loginButton.setDisable(newValue.trim().isEmpty()); + }); + dialog.setResultConverter(dialogButton -> { + if (dialogButton == loginButtonType) { + return new Pair<>(email.getText(), password.getText()); + } + return null; + }); + } + + private void clear(){ + password.clear(); + } + + public Optional> showDialog(Parent parent, Parent content){ + if (dialog == null){ + createDialog(parent, content); + } + Platform.runLater(email::requestFocus); + Optional> result = dialog.showAndWait(); + clear(); + return result; + } +} diff --git a/client/src/main/java/ru/trader/controllers/Screeners.java b/client/src/main/java/ru/trader/controllers/Screeners.java index 31dee09..8cb1e4b 100644 --- a/client/src/main/java/ru/trader/controllers/Screeners.java +++ b/client/src/main/java/ru/trader/controllers/Screeners.java @@ -5,7 +5,9 @@ import javafx.fxml.FXMLLoader; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; +import javafx.scene.control.TextInputDialog; import javafx.stage.Stage; +import javafx.util.Pair; import org.controlsfx.control.action.Action; import org.controlsfx.dialog.Dialogs; import ru.trader.EMDNUpdater; @@ -30,6 +32,7 @@ public class Screeners { private static Parent filterScreen; private static Parent itemAddScreen; private static Parent groupAddScreen; + private static Parent loginScreen; private static MainController mainController; private static ItemDescController itemDescController; @@ -41,6 +44,7 @@ public class Screeners { private static FilterController filterController; private static ItemAddController itemAddController; private static GroupAddController groupAddController; + private static LoginController loginController; private static FXMLLoader initLoader(URL url){ FXMLLoader loader = new FXMLLoader(url, Localization.getResources()); @@ -132,6 +136,13 @@ public class Screeners { groupAddController = loader.getController(); } + public static void loadLoginStage(URL fxml) throws IOException { + FXMLLoader loader = initLoader(fxml); + loginScreen = loader.load(); + addStylesheet(loginScreen); + loginController = loader.getController(); + } + public static void show(Node node){ mainController.getMainPane().setCenter(node); } @@ -158,7 +169,7 @@ public class Screeners { } public static void showAddStation(SystemModel system){ - vEditorController.showDialog(mainScreen, vEditorScreen, system, null); + vEditorController.showDialog(mainScreen, vEditorScreen, system); } public static void showEditStation(StationModel station){ @@ -209,6 +220,25 @@ public class Screeners { return filterController.showDialog(mainScreen, filterScreen, filter); } + public static Optional> showLogin() { + return loginController.showDialog(mainScreen, loginScreen); + } + + public static Optional showVerifyCodeDialog(){ + return showTextDialog(Localization.getString("verify.title"), + Localization.getString("verify.header"), + Localization.getString("verify.content") + ); + } + + public static Optional showTextDialog(String title, String header, String content){ + TextInputDialog dialog = new TextInputDialog(); + dialog.setTitle(title); + dialog.setHeaderText(header); + dialog.setContentText(content); + return dialog.showAndWait(); + } + public static void reinitAll() { mainController.init(); systemsEditorController.init(); diff --git a/client/src/main/resources/lang/locale_en_US.properties b/client/src/main/resources/lang/locale_en_US.properties index 7a9efb7..438737f 100644 --- a/client/src/main/resources/lang/locale_en_US.properties +++ b/client/src/main/resources/lang/locale_en_US.properties @@ -153,4 +153,16 @@ analyzer.crawler.stage.search=Search routes from %s to %s search.text.from=From: search.text.item=Commodity: search.text.distance=Distance \nto station(Ls): -search.button.find=Find \ No newline at end of file +search.button.find=Find + +# login.fxml +login.title=Login to Elite:Dangerous Companion +login.header=Enter your email and password for login to Elite:Dangerous companion +login.text.login=Login +login.text.email=Email: +login.text.password=Password: + +#verify code dialog +verify.title=Check verification code +verify.header=The verification code has now been sent to the email address associated with your Elite account. Please enter the code into the box below. +verify.content=Confirmation code: \ No newline at end of file diff --git a/client/src/main/resources/lang/locale_ru_RU.properties b/client/src/main/resources/lang/locale_ru_RU.properties index 3545fdb..6d3e6ef 100644 --- a/client/src/main/resources/lang/locale_ru_RU.properties +++ b/client/src/main/resources/lang/locale_ru_RU.properties @@ -154,4 +154,16 @@ analyser.finish=\u0413\u043E\u0442\u043E\u0432\u043E search.text.from=\u041E\u0442: search.text.item=\u0422\u043E\u0432\u0430\u0440: search.text.distance=\u0414\u0438\u0441\u0442\u0430\u043D\u0446\u0438\u044F \n\u0434\u043E \u0441\u0442\u0430\u043D\u0446\u0438\u0438(Ls): -search.button.find=\u041D\u0430\u0439\u0442\u0438 \ No newline at end of file +search.button.find=\u041D\u0430\u0439\u0442\u0438 + +# login.fxml +login.title=\u0412\u0445\u043E\u0434 \u0432 Elite:Dangerous Companion +login.header=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B \u0438 \u043F\u0430\u0440\u043E\u043B\u044C \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0430 \u0432 Elite:Dangerous Companion +login.text.login=\u0412\u043E\u0439\u0442\u0438 +login.text.email=Email: +login.text.password=\u041F\u0430\u0440\u043E\u043B\u044C: + +#verify code dialog +verify.title=\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043A\u043E\u0434\u0430 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438 +verify.header=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u043E\u0434 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438, \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439 Frontier \u043D\u0430 \u0432\u0430\u0448\u0443 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0443\u044E \u043F\u043E\u0447\u0442\u0443 +verify.content=\u041A\u043E\u0434 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438: \ No newline at end of file diff --git a/client/src/main/resources/view/login.fxml b/client/src/main/resources/view/login.fxml new file mode 100644 index 0000000..614216d --- /dev/null +++ b/client/src/main/resources/view/login.fxml @@ -0,0 +1,12 @@ + + + + + + +