package eu.ggnet.saft.core.swing; import eu.ggnet.saft.core.SwingCore; import eu.ggnet.saft.api.ui.FxController; import eu.ggnet.saft.core.fx.FxSaft; import java.awt.Window; import java.util.concurrent.Callable; import javafx.embed.swing.JFXPanel; import javafx.fxml.FXMLLoader; import javafx.stage.Modality; /** * * @author oliver.guenther * @param <T> * @param <R> */ public class SwingOpenFxml<T, R extends FxController> extends AbstractSwingOpen<T, R> { public SwingOpenFxml(Callable<T> before, Window parent, Modality modality, String id, Class<R> controllerClass) { super(before, parent, modality, id, controllerClass); } @Override protected T2<R> build(T parameter, Class<R> controllerClass) throws Exception { SwingCore.ensurePlatformIsRunning(); FXMLLoader loader = FxSaft.constructFxml(controllerClass, parameter); JFXPanel p = SwingCore.wrap(loader.getRoot()); return new T2<>(p, loader.getController()); } }