diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java index d076e8828ec2dbb0f3410b48b2b1b61e2a709d05..5150ce664adb11e6b799bdb43bae22426a4abcf6 100644 --- a/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java +++ b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java @@ -8,6 +8,7 @@ import de.deadlocker8.budgetmaster.logic.utils.FileHelper; import de.deadlocker8.budgetmaster.logic.utils.Helpers; import de.deadlocker8.budgetmaster.logic.utils.Strings; import de.deadlocker8.budgetmaster.ui.Styleable; +import de.deadlocker8.budgetmaster.ui.customAlert.CustomAlertController; import fontAwesome.FontIconType; import javafx.application.Platform; import javafx.fxml.FXML; @@ -69,9 +70,10 @@ public class SplashScreenController extends BaseController implements Styleable applyStyle(); - textFieldPassword.setOnKeyReleased((event)->{ + textFieldPassword.setOnKeyReleased((event)->{ if(event.getCode() == KeyCode.ENTER) { + event.consume(); login(); } }); @@ -177,14 +179,7 @@ public class SplashScreenController extends BaseController implements Styleable //check password if(!HashUtils.hash(password, Helpers.SALT).equals(settings.getClientSecret())) { - AlertGenerator.showAlert(AlertType.WARNING, - Localization.getString(Strings.TITLE_WARNING), - "", - Localization.getString(Strings.WARNING_WRONG_PASSWORD), - icon, - getStage(), - null, - false); + new CustomAlertController(getStage(), this, AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), Localization.getString(Strings.WARNING_WRONG_PASSWORD)); return; } @@ -197,6 +192,11 @@ public class SplashScreenController extends BaseController implements Styleable { new Controller(settings); } + + public Image getIcon() + { + return icon; + } @Override public void applyStyle() diff --git a/src/de/deadlocker8/budgetmaster/ui/customAlert/CustomAlert.fxml b/src/de/deadlocker8/budgetmaster/ui/customAlert/CustomAlert.fxml new file mode 100644 index 0000000000000000000000000000000000000000..8d850119d369ce4a86164590ee6aee6590961979 --- /dev/null +++ b/src/de/deadlocker8/budgetmaster/ui/customAlert/CustomAlert.fxml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.Insets?> +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.Label?> +<?import javafx.scene.image.ImageView?> +<?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.VBox?> + +<AnchorPane fx:id="anchorPaneMain" prefHeight="90.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> + <children> + <VBox layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> + <children> + <HBox spacing="14.0" VBox.vgrow="ALWAYS"> + <children> + <ImageView fx:id="imageView" fitHeight="45.0" fitWidth="45.0" pickOnBounds="true" preserveRatio="true" /> + <Label fx:id="labelMessage" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS"> + <HBox.margin> + <Insets top="3.0" /> + </HBox.margin></Label> + </children> + </HBox> + <HBox alignment="CENTER_RIGHT"> + <children> + <Button minWidth="75.0" mnemonicParsing="false" onAction="#confirm" prefWidth="75.0" text="%ok" /> + </children> + </HBox> + </children> + </VBox> + </children> +</AnchorPane> diff --git a/src/de/deadlocker8/budgetmaster/ui/customAlert/CustomAlertController.java b/src/de/deadlocker8/budgetmaster/ui/customAlert/CustomAlertController.java new file mode 100644 index 0000000000000000000000000000000000000000..7c232d0a40d8864671dc46f150c690516f81944e --- /dev/null +++ b/src/de/deadlocker8/budgetmaster/ui/customAlert/CustomAlertController.java @@ -0,0 +1,87 @@ +package de.deadlocker8.budgetmaster.ui.customAlert; + +import de.deadlocker8.budgetmaster.ui.controller.BaseController; +import de.deadlocker8.budgetmaster.ui.controller.SplashScreenController; +import javafx.fxml.FXML; +import javafx.scene.control.Alert.AlertType; +import javafx.scene.control.Label; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.layout.AnchorPane; +import javafx.stage.Modality; +import javafx.stage.Stage; +import tools.Localization; + +public class CustomAlertController extends BaseController +{ + @FXML private AnchorPane anchorPaneMain; + @FXML private ImageView imageView; + @FXML private Label labelMessage; + + private Stage parentStage; + private SplashScreenController controller; + private AlertType alertType; + private String title; + private String message; + + public CustomAlertController(Stage parentStage, SplashScreenController controller, AlertType alertType, String title, String message) + { + this.parentStage = parentStage; + this.controller = controller; + this.alertType = alertType; + this.title = title; + this.message = message; + load("/de/deadlocker8/budgetmaster/ui/customAlert/CustomAlert.fxml", Localization.getBundle()); + getStage().showAndWait(); + } + + @Override + public void initStage(Stage stage) + { + stage.initOwner(parentStage); + stage.initModality(Modality.APPLICATION_MODAL); + stage.setTitle(title); + stage.getIcons().add(controller.getIcon()); + stage.setResizable(false); + } + + @Override + public void init() + { + labelMessage.setText(message); + + getStage().getScene().setOnKeyReleased((event)->{ + event.consume(); + if(event.getCode().equals(KeyCode.ENTER)) + { + confirm(); + } + }); + + switch(alertType) + { + case CONFIRMATION: + imageView.setImage(new Image("/com/sun/javafx/scene/control/skin/modena/dialog-confirmation.png")); + break; + case ERROR: + imageView.setImage(new Image("/com/sun/javafx/scene/control/skin/modena/dialog-error.png")); + break; + case INFORMATION: + imageView.setImage(new Image("/com/sun/javafx/scene/control/skin/modena/dialog-information.png")); + break; + case WARNING: + imageView.setImage(new Image("/com/sun/javafx/scene/control/skin/modena/dialog-warning.png")); + break; + default: + imageView.setImage(new Image("/com/sun/javafx/scene/control/skin/modena/dialog-information.png")); + break; + } + } + + @FXML + public void confirm() + { + getStage().close(); + } +} \ No newline at end of file