From 13d3bb0f26be5b6bacc18c920a9d147582ae8ce8 Mon Sep 17 00:00:00 2001
From: ctrebeau <ctrebeau@pasteur.fr>
Date: Thu, 21 Apr 2022 10:46:39 +0200
Subject: [PATCH] Bug fix - use of Fiji via context - Enable classification
 slider when no input - removal of dots in parameter file

---
 .../pasteur/ida/zellige/command/Zellige.java  | 29 ++++---------------
 .../pasteur/ida/zellige/gui/MainAppFrame.java | 13 +++++----
 .../ida/zellige/gui/MainController.java       |  2 +-
 .../ida/zellige/gui/SelectionController.java  |  4 +--
 4 files changed, 16 insertions(+), 32 deletions(-)

diff --git a/src/main/java/fr/pasteur/ida/zellige/command/Zellige.java b/src/main/java/fr/pasteur/ida/zellige/command/Zellige.java
index d4c9034b..a4575dec 100644
--- a/src/main/java/fr/pasteur/ida/zellige/command/Zellige.java
+++ b/src/main/java/fr/pasteur/ida/zellige/command/Zellige.java
@@ -30,37 +30,18 @@ package fr.pasteur.ida.zellige.command;
 
 
 import fr.pasteur.ida.zellige.gui.MainAppFrame;
-import net.imagej.DatasetService;
 import net.imagej.ImageJ;
-import net.imagej.display.ImageDisplayService;
-import org.scijava.command.Command;
-import org.scijava.log.LogService;
-import org.scijava.plugin.Parameter;
+import org.scijava.command.ContextCommand;
 import org.scijava.plugin.Plugin;
 
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.FileSystems;
 
-@Plugin( type = Command.class, menuPath = "Plugins>Zellige>" )
-public class Zellige implements Command
+@Plugin( type = Zellige.class, menuPath = "Plugins>Zellige>" )
+public class Zellige extends ContextCommand
 {
 
-    @Parameter
-    private ImageJ ij;
-
-    @Parameter
-    private LogService logService;
-
-    @Parameter
-    private ImageDisplayService imageDisplayService;
-
-    @Parameter
-    private ImageDisplayService image;
-
-    @Parameter
-    DatasetService datasetService;
-
 
     public static void main( String[] args ) throws IOException
     {
@@ -94,8 +75,8 @@ public class Zellige implements Command
     {
 
         // Launch JavaFX interface
-        MainAppFrame app = new MainAppFrame( ij, image, logService );
-        app.setTitle( "Zellige V1.0.1" );
+        MainAppFrame app = new MainAppFrame( context() );
+        app.setTitle( "Zellige v1.0.1" );
         app.init();
 
     }
diff --git a/src/main/java/fr/pasteur/ida/zellige/gui/MainAppFrame.java b/src/main/java/fr/pasteur/ida/zellige/gui/MainAppFrame.java
index ad564e55..e1803dd3 100644
--- a/src/main/java/fr/pasteur/ida/zellige/gui/MainAppFrame.java
+++ b/src/main/java/fr/pasteur/ida/zellige/gui/MainAppFrame.java
@@ -40,6 +40,7 @@ import net.imagej.ImageJ;
 import net.imagej.display.ImageDisplayService;
 import net.imglib2.type.NativeType;
 import net.imglib2.type.numeric.RealType;
+import org.scijava.Context;
 import org.scijava.log.LogService;
 import org.scijava.plugin.Parameter;
 import org.slf4j.Logger;
@@ -57,7 +58,7 @@ public class MainAppFrame extends JFrame
 {
 
     private final static Logger LOGGER = LoggerFactory.getLogger( MainAppFrame.class );
-    private final ImageJ ij;
+    private ImageJ ij;
     private final ImageDisplayService image;
     @Parameter
     private final LogService logService;
@@ -99,11 +100,13 @@ public class MainAppFrame extends JFrame
         logbackLogger.addAppender( appender );
     }
 
-    public MainAppFrame( ImageJ ij, ImageDisplayService image, LogService logService )
+    public MainAppFrame( Context context )
     {
-        this.ij = ij;
-        this.image = image;
-        this.logService = logService;
+//        this.ij = context.;
+        this.image = context.getService( ImageDisplayService.class );
+        ;
+        this.logService = context.getService( LogService.class );
+        ;
         this.setIconImages( ICONS );
     }
 
diff --git a/src/main/java/fr/pasteur/ida/zellige/gui/MainController.java b/src/main/java/fr/pasteur/ida/zellige/gui/MainController.java
index 57367c7c..2e952628 100644
--- a/src/main/java/fr/pasteur/ida/zellige/gui/MainController.java
+++ b/src/main/java/fr/pasteur/ida/zellige/gui/MainController.java
@@ -459,7 +459,7 @@ public class MainController< T extends RealType< T > & NativeType< T > > impleme
     public void saveParameters() throws IOException
     {
         SimpleDateFormat dtf = new SimpleDateFormat( "yyyyMMdd_HHmmss" );
-        FileChooser fileChooser = chooseAFile( dtf.format( new Date() ), "Sava Parameters...", "ZelligeParameters", "*.zellige.param.json" );
+        FileChooser fileChooser = chooseAFile( dtf.format( new Date() ) + "_zellige_param", "Sava Parameters...", "ZelligeParameters", "*.json" );
         File file = fileChooser.showSaveDialog( null );
         if ( file != null )
         {
diff --git a/src/main/java/fr/pasteur/ida/zellige/gui/SelectionController.java b/src/main/java/fr/pasteur/ida/zellige/gui/SelectionController.java
index d0620368..35059ae3 100644
--- a/src/main/java/fr/pasteur/ida/zellige/gui/SelectionController.java
+++ b/src/main/java/fr/pasteur/ida/zellige/gui/SelectionController.java
@@ -87,7 +87,7 @@ public class SelectionController implements Initializable
 
         amplitude.sliderProperty().addListener( ( observableValue, number, newValue ) ->
         {
-            if ( amplitude.hasChanged( newValue ) )
+            if ( amplitude.hasChanged( newValue ) && selectionModel.selectedAmplitudeProperty().getValue() != null )
             {
                 disableGUI.setValue( true );
                 selectionModel.runAmplitudeTask();
@@ -98,7 +98,7 @@ public class SelectionController implements Initializable
         /* Otsu slider initialization */
         otsu.sliderProperty().addListener( ( observableValue, number, newValue ) ->
         {
-            if ( otsu.hasChanged( newValue ) )
+            if ( otsu.hasChanged( newValue ) && selectionModel.selectedOtsuProperty().getValue() != null )
             {
                 disableGUI.setValue( true );
                 selectionModel.runOtsuTask();
-- 
GitLab