/*
* Copyright (C) 2015-2017 PÂRIS Quentin
*
* This program 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 2 of the License, or
* (at your option) any later version.
*
* This program 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 this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.phoenicis.javafx.views.common;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Label;
import javafx.scene.layout.Region;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Optional;
public class ConfirmMessage {
private final Logger LOGGER = LoggerFactory.getLogger(ConfirmMessage.class);
private final Alert alert;
public ConfirmMessage(String title, String message) {
LOGGER.info("Ask for confirmation", message);
alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle(title);
alert.setHeaderText(title);
alert.setContentText(message);
alert.getDialogPane().getChildren().stream().filter(node -> node instanceof Label)
.forEach(node -> ((Label) node).setMinHeight(Region.USE_PREF_SIZE));
}
public void ask(Runnable yesCallback) {
ask(yesCallback, () -> {
});
}
public void ask(Runnable yesCallback, Runnable noCallback) {
Optional<ButtonType> result = alert.showAndWait();
if (result.isPresent() && result.get() == ButtonType.OK) {
LOGGER.info("User response: yes");
yesCallback.run();
} else {
LOGGER.info("User response: no");
noCallback.run();
}
}
}