Archived
0

add login and verify code dialogs

This commit is contained in:
Mo
2015-08-08 14:44:07 +03:00
parent b509381870
commit aad6f726fa
5 changed files with 129 additions and 3 deletions

View File

@@ -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<Pair<String, String>> 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<Pair<String, String>> showDialog(Parent parent, Parent content){
if (dialog == null){
createDialog(parent, content);
}
Platform.runLater(email::requestFocus);
Optional<Pair<String, String>> result = dialog.showAndWait();
clear();
return result;
}
}

View File

@@ -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<Pair<String, String>> showLogin() {
return loginController.showDialog(mainScreen, loginScreen);
}
public static Optional<String> showVerifyCodeDialog(){
return showTextDialog(Localization.getString("verify.title"),
Localization.getString("verify.header"),
Localization.getString("verify.content")
);
}
public static Optional<String> 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();

View File

@@ -154,3 +154,15 @@ search.text.from=From:
search.text.item=Commodity:
search.text.distance=Distance \nto station(Ls):
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:

View File

@@ -155,3 +155,15 @@ 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
# 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:

View File

@@ -0,0 +1,12 @@
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.PasswordField?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.*?>
<GridPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="ru.trader.controllers.LoginController">
<Label text="%login.text.email"/>
<TextField fx:id="email" GridPane.columnIndex="1" promptText="%login.text.email"/>
<Label text="%login.text.password" GridPane.rowIndex="1"/>
<PasswordField fx:id="password" GridPane.columnIndex="1" GridPane.rowIndex="1" promptText="%login.text.password"/>
</GridPane>