package eu.ggnet.saft.core.fx;
import eu.ggnet.saft.core.Ui;
import eu.ggnet.saft.core.all.*;
import eu.ggnet.saft.api.CallableA1;
import java.util.concurrent.Callable;
import javafx.stage.*;
/**
*
* @author oliver.guenther
* @param <V>
*/
public class FxOk<V> implements UiOk<V> {
private final OnceCaller<OkCancelResult<V>> before;
private final Window parent;
private final Modality modality;
public FxOk(Callable<OkCancelResult<V>> before, Window parent, Modality modality) {
this.before = new OnceCaller<>(before);
this.parent = parent;
this.modality = modality;
}
@Override
public <R> UiCreator<R> onOk(CallableA1<V, R> function) {
return new FxCreator<>(UiUtil.onOk(function, before), parent, modality);
}
@Override
public OkCancelResult<V> call() throws Exception {
return before.get();
}
@Override
public void exec() {
Ui.exec(this);
}
}