From 26b58f91d8c232e006cd006dd6ef43d6a9b49ef4 Mon Sep 17 00:00:00 2001
From: Stephane Dallongeville <stephane.dallongeville@pasteur.fr>
Date: Wed, 1 Dec 2021 14:27:32 +0100
Subject: [PATCH] Updated for Icy kernel 2.4.0 (interruptible process)

---
 pom.xml                                        |  4 ++--
 .../roiintensityevolution/ROIAnalysis.java     |  6 +++---
 .../ROIIntensityEvolution.java                 | 18 ++++++++++--------
 3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/pom.xml b/pom.xml
index 9d77153..c8477fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,11 +7,11 @@
     <parent>
         <artifactId>parent-pom-plugin</artifactId>
         <groupId>org.bioimageanalysis.icy</groupId>
-        <version>1.0.3</version>
+        <version>1.0.6</version>
     </parent>
 
     <artifactId>roi-intensity-evolution</artifactId>
-    <version>2.1.0</version>
+    <version>2.1.1</version>
 
     <packaging>jar</packaging>
 
diff --git a/src/main/java/plugins/nchenouard/roiintensityevolution/ROIAnalysis.java b/src/main/java/plugins/nchenouard/roiintensityevolution/ROIAnalysis.java
index 9682b0c..994b20c 100644
--- a/src/main/java/plugins/nchenouard/roiintensityevolution/ROIAnalysis.java
+++ b/src/main/java/plugins/nchenouard/roiintensityevolution/ROIAnalysis.java
@@ -40,7 +40,7 @@ public class ROIAnalysis
     ReentrantLock initLock = new ReentrantLock();
 
     public ROIAnalysis(ROI roi, Sequence sequence, String description, double threshold, boolean overthreshold,
-            double scaling)
+            double scaling) throws InterruptedException
     {
         try
         {
@@ -87,7 +87,7 @@ public class ROIAnalysis
         }
     };
 
-    private void fillSeriesNoLock(double threshold, boolean overthreshold, double areaScale)
+    private void fillSeriesNoLock(double threshold, boolean overthreshold, double areaScale) throws InterruptedException
     {
         for (int c = 0; c < sequence.getSizeC(); c++)
         {
@@ -228,7 +228,7 @@ public class ROIAnalysis
         }
     }
 
-    public void fillSeries(double threshold, boolean overthreshold, double scale)
+    public void fillSeries(double threshold, boolean overthreshold, double scale) throws InterruptedException
     {
         try
         {
diff --git a/src/main/java/plugins/nchenouard/roiintensityevolution/ROIIntensityEvolution.java b/src/main/java/plugins/nchenouard/roiintensityevolution/ROIIntensityEvolution.java
index 198f4bb..9a294d7 100644
--- a/src/main/java/plugins/nchenouard/roiintensityevolution/ROIIntensityEvolution.java
+++ b/src/main/java/plugins/nchenouard/roiintensityevolution/ROIIntensityEvolution.java
@@ -50,6 +50,7 @@ import icy.gui.frame.IcyFrame;
 import icy.gui.frame.IcyFrameEvent;
 import icy.gui.frame.IcyFrameListener;
 import icy.gui.frame.progress.AnnounceFrame;
+import icy.gui.frame.progress.FailedAnnounceFrame;
 import icy.gui.main.GlobalROIListener;
 import icy.gui.main.GlobalSequenceListener;
 import icy.image.IcyBufferedImage;
@@ -244,7 +245,7 @@ public class ROIIntensityEvolution extends PluginActionable
     }
 
     public static ArrayList<ROIAnalysis> analyseRoisInSequence(Sequence seq, boolean useRealScales, double threshold,
-            boolean pixelAboveThreshold)
+            boolean pixelAboveThreshold) throws InterruptedException
     {
         ArrayList<ROI> toFill = seq.getROIs();
         ArrayList<ROIAnalysis> analyzed = new ArrayList<ROIAnalysis>();
@@ -913,25 +914,26 @@ public class ROIIntensityEvolution extends PluginActionable
                         seriesToFillCondition.await();
                     toFill.addAll(seriesToFill);
                     seriesToFill.clear();
+
+                    // fill the series
+                    if (selectedSequence != null)
+                        fillSeries(toFill, selectedSequence);
+                    else
+                        SwingUtilities.invokeLater(ROIIntensityEvolution.this::updateDisplay);
                 }
                 catch (InterruptedException e)
                 {
-                    e.printStackTrace();
+                    new FailedAnnounceFrame("ROI intensity evolution process interrupted..");
                 }
                 finally
                 {
                     seriesToFillLock.unlock();
                 }
-                // fill the series
-                if (selectedSequence != null)
-                    fillSeries(toFill, selectedSequence);
-                else
-                    SwingUtilities.invokeLater(ROIIntensityEvolution.this::updateDisplay);
             }
         }
     }
 
-    private void fillSeries(ArrayList<ROI> toFill, Sequence selectedSequence)
+    void fillSeries(ArrayList<ROI> toFill, Sequence selectedSequence) throws InterruptedException
     {
         if (toFill.isEmpty())
             return;
-- 
GitLab