/*
    Copyright 2019-2020 Dmitry Isaenko
    This file is part of NS-USBloader.
    NS-USBloader is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
    NS-USBloader is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with NS-USBloader.  If not, see .
*/
package nsusbloader;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.image.Image;
import javafx.scene.layout.Region;
import javafx.stage.Stage;
import java.util.Optional;
public class ServiceWindow   {
    /** Create window with error notification */
    public static void getErrorNotification(String title, String body){
        getNotification(title, body, Alert.AlertType.ERROR);
    }
    /** Create window with information notification */
    public static void getInfoNotification(String title, String body){
        getNotification(title, body, Alert.AlertType.INFORMATION);
    }
    /** Real window creator */
    private static void getNotification(String title, String body, Alert.AlertType type){
        Alert alertBox = new Alert(type);
        alertBox.setTitle(title);
        alertBox.setHeaderText(null);
        alertBox.setContentText(body);
        alertBox.getDialogPane().setMinWidth(Region.USE_PREF_SIZE);
        alertBox.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
        alertBox.setResizable(true);        // Java bug workaround for JDR11/OpenJFX. TODO: nothing. really.
        Stage dialogStage = (Stage) alertBox.getDialogPane().getScene().getWindow();
        dialogStage.setAlwaysOnTop(true);
        dialogStage.getIcons().addAll(
                new Image("/res/warn_ico32x32.png"),
                new Image("/res/warn_ico48x48.png"),
                new Image("/res/warn_ico64x64.png"),
                new Image("/res/warn_ico128x128.png")
        );
        alertBox.getDialogPane().getStylesheets().add(AppPreferences.getInstance().getTheme());
        dialogStage.getScene().getRoot().setStyle(AppPreferences.getInstance().getFontStyle());
        alertBox.show();
        dialogStage.toFront();
    }
    /**
     * Create notification window with confirm/deny
     * */
    public static boolean getConfirmationWindow(String title, String body){
        Alert alertBox = new Alert(Alert.AlertType.CONFIRMATION);
        alertBox.setTitle(title);
        alertBox.setHeaderText(null);
        alertBox.setContentText(body);
        alertBox.getDialogPane().setMinWidth(Region.USE_PREF_SIZE);
        alertBox.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
        alertBox.setResizable(true);        // Java bug workaround for JDR11/OpenJFX. TODO: nothing. really.
        Stage dialogStage = (Stage) alertBox.getDialogPane().getScene().getWindow();
        dialogStage.setAlwaysOnTop(true);
        dialogStage.getIcons().addAll(
                new Image("/res/ask_ico32x32.png"),
                new Image("/res/ask_ico48x48.png"),
                new Image("/res/ask_ico64x64.png"),
                new Image("/res/ask_ico128x128.png")
        );
        alertBox.getDialogPane().getStylesheets().add(AppPreferences.getInstance().getTheme());
        dialogStage.getScene().getRoot().setStyle(AppPreferences.getInstance().getFontStyle());
        dialogStage.toFront();
        Optional result = alertBox.showAndWait();
        return (result.isPresent() && result.get() == ButtonType.OK);
    }
}