/*
* Geotoolkit - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2014-2015, Geomatys
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 3 of the License.
*
* This library 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
* Lesser General Public License for more details.
*/
package org.geotoolkit.gui.javafx.util;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
import javafx.event.ActionEvent;
import javafx.scene.Node;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.control.DialogPane;
import javafx.scene.layout.Region;
import javafx.stage.Window;
import org.controlsfx.control.action.Action;
import org.geotoolkit.internal.GeotkFX;
/**
*
* @author Johann Sorel (Geomatys)
*/
public class FXOptionDialog {
public static boolean showOkCancel(Object owner, Node content, String title, boolean modal){
final Dialog dia = new Dialog();
final DialogPane pane = new DialogPane();
pane.getButtonTypes().add(ButtonType.OK);
pane.getButtonTypes().add(ButtonType.CANCEL);
pane.setContent(content);
dia.setTitle(title);
if(owner instanceof Node){
final Window window = ((Node)owner).getScene().getWindow();
dia.initOwner(window);
}
dia.setDialogPane(pane);
final Optional<ButtonType> result = dia.showAndWait();
return result.isPresent() && result.get() == ButtonType.OK;
// if(result.isPresent() && result.get() == ButtonType.OK){
// if(layerVisible){
// return chooser.getSelectedLayers();
// }else{
// final Client store = chooser.getStore();
// if(store == null){
// return Collections.EMPTY_LIST;
// }else{
// return Collections.singletonList(store);
// }
// }
// }else{
// return Collections.EMPTY_LIST;
// }
//
// final Dialog dialog = new Dialog();
// dialog.setContent(content);
// dialog.setIconifiable(false);
// final AtomicBoolean state = new AtomicBoolean(false);
// dialog.getActions().addAll(new OkAction(dialog, state), new CancelAction(dialog, state));
//
// dialog.show();
// return state.get();
}
private static class OkAction extends Action implements Consumer<ActionEvent>{
private final Dialog dialog;
private final AtomicBoolean state;
public OkAction(Dialog dialog, AtomicBoolean state) {
super(GeotkFX.getString(FXOptionDialog.class,"ok"));
setEventHandler(this);
this.dialog = dialog;
this.state = state;
}
@Override
public void accept(ActionEvent event) {
state.set(true);
dialog.hide();
}
}
private static class CancelAction extends Action implements Consumer<ActionEvent>{
private final Dialog dialog;
private final AtomicBoolean state;
public CancelAction(Dialog dialog, AtomicBoolean state) {
super(GeotkFX.getString(FXOptionDialog.class,"cancel"));
setEventHandler(this);
this.dialog = dialog;
this.state = state;
}
@Override
public void accept(ActionEvent event) {
state.set(false);
dialog.hide();
}
}
}