diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/FXFrame.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/FXFrame.java index c0a723854fa2ecf1401ad2af2616849a8e5d5716..f3601be3950eeea7c3e7bd1d741b731bb988bd75 100644 --- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/FXFrame.java +++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/FXFrame.java @@ -2,6 +2,7 @@ package cz.it4i.fiji.haas.ui; import java.awt.Dimension; import java.awt.Frame; +import java.awt.Window; import java.io.IOException; import java.net.URL; import java.util.function.Consumer; @@ -14,17 +15,23 @@ import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; -public class FXFrame<C> extends JDialog { + +public class FXFrame<C extends FXFrame.Controller> extends JDialog { + + public interface Controller { + void init(Window frame); + } private static final long serialVersionUID = 1L; private JFXPanel fxPanel; private String fxmlFile; private Consumer<C> controlerInit; + private C controller; public FXFrame(String fxmlFile) { this(null, fxmlFile); } - + public FXFrame(Frame applicationFrame, String string) { super(applicationFrame); fxmlFile = string; @@ -33,12 +40,12 @@ public class FXFrame<C> extends JDialog { /** * Create the JFXPanel that make the link between Swing (IJ) and JavaFX plugin. */ - protected void init( Consumer<C> controlerInit) { + protected void init(Consumer<C> controlerInit) { this.controlerInit = controlerInit; this.fxPanel = new JFXPanel(); Platform.setImplicitExit(false); this.add(this.fxPanel); - + // The call to runLater() avoid a mix between JavaFX thread and Swing thread. Platform.runLater(new Runnable() { @Override @@ -50,34 +57,38 @@ public class FXFrame<C> extends JDialog { } + protected C getController() { + return controller; + } + private void initFX(JFXPanel fxPanel) { // Init the root layout - try { - FXMLLoader loader = new FXMLLoader(); - URL res = FXFrame.class.getResource(fxmlFile); - loader.setLocation(res); - Parent rootLayout = (Parent) loader.load(); - - // Get the controller and add an ImageJ context to it. - C controller = loader.<C>getController(); - controlerInit.accept(controller); - - // Show the scene containing the root layout. - Scene scene = new Scene(rootLayout); - this.fxPanel.setScene(scene); - this.fxPanel.setVisible(true); - - // Resize the JFrame to the JavaFX scene - Dimension dim = new Dimension((int) scene.getWidth(), (int) scene.getHeight()); - this.fxPanel.setMinimumSize(dim); - this.fxPanel.setMaximumSize(dim); - this.fxPanel.setPreferredSize(dim); - //this.setSize((int) scene.getWidth(), (int) scene.getHeight()); - this.pack(); - - } catch (IOException e) { - e.printStackTrace(); -} + try { + FXMLLoader loader = new FXMLLoader(); + URL res = FXFrame.class.getResource(fxmlFile); + loader.setLocation(res); + Parent rootLayout = (Parent) loader.load(); + + // Get the controller and add an ImageJ context to it. + controller = loader.<C>getController(); + controlerInit.accept(controller); + controller.init(this); + // Show the scene containing the root layout. + Scene scene = new Scene(rootLayout); + this.fxPanel.setScene(scene); + this.fxPanel.setVisible(true); + + // Resize the JFrame to the JavaFX scene + Dimension dim = new Dimension((int) scene.getWidth(), (int) scene.getHeight()); + this.fxPanel.setMinimumSize(dim); + this.fxPanel.setMaximumSize(dim); + this.fxPanel.setPreferredSize(dim); + // this.setSize((int) scene.getWidth(), (int) scene.getHeight()); + this.pack(); + + } catch (IOException e) { + e.printStackTrace(); + } } diff --git a/haas-snakemake-spim/src/main/java/cz/it4i/fiji/haas_snakemake_spim/ui/CheckStatusOfHaaSController.java b/haas-snakemake-spim/src/main/java/cz/it4i/fiji/haas_snakemake_spim/ui/CheckStatusOfHaaSController.java index 5c4b41ae491172b582b17208fbeb341349c833ed..4763b20336d312ac689c0b3bb8405f72dc1ed6b5 100644 --- a/haas-snakemake-spim/src/main/java/cz/it4i/fiji/haas_snakemake_spim/ui/CheckStatusOfHaaSController.java +++ b/haas-snakemake-spim/src/main/java/cz/it4i/fiji/haas_snakemake_spim/ui/CheckStatusOfHaaSController.java @@ -9,6 +9,7 @@ import org.scijava.log.LogService; import org.scijava.plugin.Parameter; import cz.it4i.fiji.haas.JobManager.JobInfo; +import cz.it4i.fiji.haas.ui.FXFrame; import cz.it4i.fiji.haas.ui.ModalDialogs; import cz.it4i.fiji.haas.ui.ObservableValueAdapter; import cz.it4i.fiji.haas.ui.ProgressDialog; @@ -22,7 +23,7 @@ import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.input.ContextMenuEvent; -public class CheckStatusOfHaaSController { +public class CheckStatusOfHaaSController implements FXFrame.Controller{ @Parameter private LogService logService; diff --git a/haas-snakemake-spim/src/main/java/cz/it4i/fiji/haas_snakemake_spim/ui/CheckStatusOfHaaSWindow.java b/haas-snakemake-spim/src/main/java/cz/it4i/fiji/haas_snakemake_spim/ui/CheckStatusOfHaaSWindow.java index 5c7b724732ddf8ffa12f7a8874f7c7938588dc0e..1e089cd54521f1b0f51aad666b8a5215164674ae 100644 --- a/haas-snakemake-spim/src/main/java/cz/it4i/fiji/haas_snakemake_spim/ui/CheckStatusOfHaaSWindow.java +++ b/haas-snakemake-spim/src/main/java/cz/it4i/fiji/haas_snakemake_spim/ui/CheckStatusOfHaaSWindow.java @@ -15,9 +15,7 @@ public class CheckStatusOfHaaSWindow extends FXFrame<CheckStatusOfHaaSController @Parameter private Context context; - - private CheckStatusOfHaaSController controller; - + public CheckStatusOfHaaSWindow(Frame applicationFrame, Context context) { super(applicationFrame, "/cz/it4i/fiji/haas_snakemake_spim/ui/CheckStatusOfHaaS.fxml"); this.context = context; @@ -30,15 +28,13 @@ public class CheckStatusOfHaaSWindow extends FXFrame<CheckStatusOfHaaSController Platform.runLater(new Runnable() { @Override public void run() { - controller.addJob(job); + getController().addJob(job); } }); } private void initController(CheckStatusOfHaaSController controller) { - this.controller = controller; context.inject(controller); - controller.init(this); } } diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMController.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMController.java new file mode 100644 index 0000000000000000000000000000000000000000..8e8feade02c1274450e3cb2ac47e5d06d852db25 --- /dev/null +++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMController.java @@ -0,0 +1,15 @@ +package cz.it4i.fiji.haas_spim_benchmark.ui; + +import java.awt.Window; + +import cz.it4i.fiji.haas.ui.FXFrame; + +public class BenchmarkSPIMController implements FXFrame.Controller{ + + @Override + public void init(Window frame) { + // TODO Auto-generated method stub + + } + +} diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMWindow.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMWindow.java new file mode 100644 index 0000000000000000000000000000000000000000..206e707499937f08a6cfba9bfa30f77c6657d0be --- /dev/null +++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMWindow.java @@ -0,0 +1,16 @@ +package cz.it4i.fiji.haas_spim_benchmark.ui; + +import java.awt.Frame; + +import cz.it4i.fiji.haas.ui.FXFrame; + +public class BenchmarkSPIMWindow extends FXFrame<BenchmarkSPIMController> { + + private static final long serialVersionUID = 1L; + + public BenchmarkSPIMWindow(Frame applicationFrame) { + super(applicationFrame, "/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIM.fxml"); + init(x->{}); + } + +}