package eu.ggnet.saft.core.fx;
import eu.ggnet.saft.core.all.UiUtil;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import eu.ggnet.saft.api.ui.OnOk;
/**
*
* @author oliver.guenther
* @param <T>
*/
public class OkCancelStage<T extends Node> extends Stage {
private boolean ok = false;
private T payload;
public OkCancelStage(String title, T payload) {
this.payload = payload;
BorderPane pane = new BorderPane();
pane.setCenter(payload);
Button okButton = new Button("Ok");
okButton.defaultButtonProperty();
Button cancelButton = new Button("Abbrechen");
cancelButton.setCancelButton(true);
HBox bottom = new HBox();
bottom.setPadding(new Insets(10));
bottom.getChildren().addAll(okButton, cancelButton);
pane.setBottom(bottom);
if (!UiUtil.isBlank(title)) setTitle(title);
setScene(new Scene(pane));
okButton.setOnAction((ActionEvent t) -> {
boolean close = true;
if (payload instanceof OnOk) {
close = ((OnOk) payload).onOk();
}
if (!close) return;
OkCancelStage.this.ok = true;
close();
});
cancelButton.setOnAction((ActionEvent t) -> {
close();
});
}
public boolean isOk() {
return ok;
}
public boolean isCancel() {
return !ok;
}
public T getPayload() {
return payload;
}
}