package net.krazyweb.starmodmanager.dialogue;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.util.Duration;
import net.krazyweb.helpers.CSSHelper;
import net.krazyweb.helpers.FXHelper;
import net.krazyweb.starmodmanager.data.LocalizerModelFactory;
import net.krazyweb.starmodmanager.data.LocalizerModelInterface;
public class MessageDialogueConfirm extends MessageDialogue {
protected Button noButton;
public MessageDialogueConfirm(String message, String title, MessageType messageType, LocalizerModelInterface localizer) {
super(message, title, messageType, localizer);
}
public MessageDialogueConfirm(String message, String title, MessageType messageType, LocalizerModelFactory localizer) {
super(message, title, messageType, localizer);
}
@Override
protected void build(final String message, final String title, final MessageType messageType) {
this.title = title;
root = new GridPane();
root.setPadding(new Insets(43, 50, 30, 20));
root.setHgap(25);
if (messageType == MessageType.CONFIRM) {
icon = new ImageView(new Image(MessageDialogueConfirm.class.getClassLoader().getResourceAsStream("delete-file-icon.png")));
} else if (messageType == MessageType.ERROR) {
icon = new ImageView(new Image(MessageDialogueConfirm.class.getClassLoader().getResourceAsStream("error-icon.png")));
} else {
icon = new ImageView(new Image(MessageDialogueConfirm.class.getClassLoader().getResourceAsStream("delete-file-icon.png")));
}
Color color = CSSHelper.getColor("message-dialogue-confirm-warning-color", settings.getPropertyString("theme"));
FXHelper.setColor(icon, color);
messageText = new Text(message);
messageText.setId("message-dialogue-text");
messageText.setWrappingWidth(285);
HBox buttonBox = new HBox();
confirmButton = new Button(localizer.formatMessage("messagedialogueconfirm.yeswaiting", settings.getPropertyInt("confirmdelay")));
confirmButton.setId("message-dialogue-button");
confirmButton.setPrefWidth(120);
confirmButton.setPrefHeight(40);
confirmButton.setAlignment(Pos.CENTER);
noButton = new Button(localizer.getMessage("messagedialogueconfirm.no"));
noButton.setId("message-dialogue-button");
noButton.setPrefWidth(120);
noButton.setPrefHeight(40);
noButton.setAlignment(Pos.CENTER);
confirmButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
actionPerformed = DialogueAction.YES;
stage.close();
}
});
confirmButton.setDisable(true);
noButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
actionPerformed = DialogueAction.NO;
stage.close();
}
});
buttonBox.getChildren().addAll(confirmButton, noButton);
buttonBox.setSpacing(30);
buttonBox.setAlignment(Pos.CENTER);
root.add(icon, 1, 1);
root.add(messageText, 2, 1);
root.add(buttonBox, 2, 2);
}
@Override
protected void show() {
if (settings.getPropertyInt("confirmdelay") > 0) {
Timeline confirmDelay = new Timeline(new KeyFrame(Duration.seconds(1), new EventHandler<ActionEvent>() {
int count = settings.getPropertyInt("confirmdelay");
@Override
public void handle(ActionEvent event) {
if (count > 1) {
confirmButton.setText(localizer.formatMessage("messagedialogueconfirm.yeswaiting", --count));
} else {
confirmButton.setText(localizer.getMessage("messagedialogueconfirm.yes"));
confirmButton.setDisable(false);
}
}
}));
confirmDelay.setCycleCount(settings.getPropertyInt("confirmdelay"));
confirmDelay.play();
} else {
confirmButton.setText(localizer.getMessage("messagedialogueconfirm.yes"));
confirmButton.setDisable(false);
}
super.show();
}
}