From 4b5f53368086934516596997526b08e541ea1f64 Mon Sep 17 00:00:00 2001
From: Thomas <thomas.musset@pasteur.fr>
Date: Fri, 5 Jul 2024 14:39:52 +0200
Subject: [PATCH] updated pom to v3.0.0-a.1, fix classes accordingly to new
 architecture, added icon, updated .gitignore

---
 .gitignore                                    |  42 ++++++++++++++++--
 pom.xml                                       |   7 ++-
 .../MicroscopeRemotePlugin.java               |  10 +++--
 .../Microscopy/gui/InverterCheckBox.java      |   2 +-
 .../Microscopy/gui/MemoryButton.java          |  11 +++--
 .../Microscopy/gui/PanelMoverXY.java          |  15 ++++---
 .../tprovoost/Microscopy/gui/PanelMoverZ.java |  13 +++---
 .../tprovoost/Microscopy/gui/RemoteFrame.java |  27 ++++++-----
 src/main/resources/micro-remote.png           | Bin 0 -> 14770 bytes
 9 files changed, 84 insertions(+), 43 deletions(-)
 create mode 100644 src/main/resources/micro-remote.png

diff --git a/.gitignore b/.gitignore
index 8d47cac..57f16fb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,41 @@
-.idea/
+/build*
+/workspace
+setting.xml
+release/
 target/
-.settings/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+icy.log
+
+### IntelliJ IDEA ###
+.idea/
+*.iws
 *.iml
-.project
+*.ipr
+
+### Eclipse ###
+.apt_generated
 .classpath
-**/.DS_Store
\ No newline at end of file
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+**/.DS_Store
+Icon?
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 66e632e..c51c2ad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,12 +8,12 @@
     <parent>
         <artifactId>pom-icy</artifactId>
         <groupId>org.bioimageanalysis.icy</groupId>
-        <version>2.2.0</version>
+        <version>3.0.0-a.1</version>
     </parent>
 
     <!-- Project Information -->
     <artifactId>microscope-remote</artifactId>
-    <version>3.0.0</version>
+    <version>3.0.0-a.1</version>
 
     <name>Microscope Remote</name>
     <description>Move your XY Stage and Focus Device with your mouse.</description>
@@ -63,8 +63,7 @@
     <repositories>
         <repository>
             <id>icy</id>
-            <name>Icy's Nexus</name>
-            <url>https://icy-nexus.pasteur.fr/repository/Icy/</url>
+            <url>https://nexus-icy.pasteur.cloud/repository/icy/</url>
         </repository>
     </repositories>
 </project>
\ No newline at end of file
diff --git a/src/main/java/plugins/tprovoost/Microscopy/MicroscopeRemote/MicroscopeRemotePlugin.java b/src/main/java/plugins/tprovoost/Microscopy/MicroscopeRemote/MicroscopeRemotePlugin.java
index d49896a..8269d84 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/MicroscopeRemote/MicroscopeRemotePlugin.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/MicroscopeRemote/MicroscopeRemotePlugin.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2023. Institut Pasteur.
+ * Copyright (c) 2010-2024. Institut Pasteur.
  *
  * This file is part of Icy.
  * Icy is free software: you can redistribute it and/or modify
@@ -18,14 +18,18 @@
 
 package plugins.tprovoost.Microscopy.MicroscopeRemote;
 
-import icy.gui.frame.IcyFrameAdapter;
-import icy.gui.frame.IcyFrameEvent;
+import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginIcon;
+import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginName;
+import org.bioimageanalysis.icy.gui.frame.IcyFrameAdapter;
+import org.bioimageanalysis.icy.gui.frame.IcyFrameEvent;
 import plugins.tprovoost.Microscopy.MicroManagerForIcy.MicroscopePlugin;
 import plugins.tprovoost.Microscopy.gui.RemoteFrame;
 
 /**
  * @author Irsath Nguyen
  */
+@IcyPluginName("Microscope Remote")
+@IcyPluginIcon(path = "/micro-remote.png")
 public class MicroscopeRemotePlugin extends MicroscopePlugin {
     // static instance
     static RemoteFrame instance = null;
diff --git a/src/main/java/plugins/tprovoost/Microscopy/gui/InverterCheckBox.java b/src/main/java/plugins/tprovoost/Microscopy/gui/InverterCheckBox.java
index 2f16258..b64c4fb 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/gui/InverterCheckBox.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/gui/InverterCheckBox.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2023. Institut Pasteur.
+ * Copyright (c) 2010-2024. Institut Pasteur.
  *
  * This file is part of Icy.
  * Icy is free software: you can redistribute it and/or modify
diff --git a/src/main/java/plugins/tprovoost/Microscopy/gui/MemoryButton.java b/src/main/java/plugins/tprovoost/Microscopy/gui/MemoryButton.java
index 4cf2a33..13dee07 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/gui/MemoryButton.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/gui/MemoryButton.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2023. Institut Pasteur.
+ * Copyright (c) 2010-2024. Institut Pasteur.
  *
  * This file is part of Icy.
  * Icy is free software: you can redistribute it and/or modify
@@ -18,9 +18,8 @@
 
 package plugins.tprovoost.Microscopy.gui;
 
-import icy.gui.frame.progress.AnnounceFrame;
-import icy.gui.frame.progress.FailedAnnounceFrame;
-import icy.type.point.Point3D;
+import org.bioimageanalysis.icy.common.geom.point.Point3D;
+import org.bioimageanalysis.icy.system.logging.IcyLogger;
 import plugins.tprovoost.Microscopy.MicroManager.tools.StageMover;
 
 import javax.swing.*;
@@ -103,7 +102,7 @@ public class MemoryButton extends JButton implements MouseListener {
                 gotoPoint();
             }
             catch (final Exception e1) {
-                new AnnounceFrame("Error while going to the saved point.");
+                IcyLogger.error(this.getClass(), e1, "Error while going to the saved point.");
             }
         }
         else {
@@ -112,7 +111,7 @@ public class MemoryButton extends JButton implements MouseListener {
                 rememberPoint();
             }
             catch (final Exception e1) {
-                new FailedAnnounceFrame("Failed to save position, please try again", 3);
+                IcyLogger.error(this.getClass(), e1, "Failed to save position, please try again.");
             }
         }
     }
diff --git a/src/main/java/plugins/tprovoost/Microscopy/gui/PanelMoverXY.java b/src/main/java/plugins/tprovoost/Microscopy/gui/PanelMoverXY.java
index ce128cc..7969156 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/gui/PanelMoverXY.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/gui/PanelMoverXY.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2023. Institut Pasteur.
+ * Copyright (c) 2010-2024. Institut Pasteur.
  *
  * This file is part of Icy.
  * Icy is free software: you can redistribute it and/or modify
@@ -18,6 +18,8 @@
 
 package plugins.tprovoost.Microscopy.gui;
 
+import org.bioimageanalysis.icy.system.logging.IcyLogger;
+import org.jetbrains.annotations.NotNull;
 import plugins.tprovoost.Microscopy.MicroManager.MicroManager;
 import plugins.tprovoost.Microscopy.MicroManager.tools.StageMover;
 
@@ -45,7 +47,7 @@ public class PanelMoverXY extends JPanel implements MouseListener, MouseMotionLi
     private final RemoteFrame frame;
     private final Thread moveThread;
 
-    public PanelMoverXY(final RemoteFrame frame) {
+    public PanelMoverXY(final @NotNull RemoteFrame frame) {
         super();
 
         this.frame = frame;
@@ -154,14 +156,14 @@ public class PanelMoverXY extends JPanel implements MouseListener, MouseMotionLi
         StageMover.moveXYRelative(movementX, movementY, true);
     }
 
-    private double norm(final Point2D vector) {
+    private double norm(final @NotNull Point2D vector) {
         final double x = vector.getX();
         final double y = vector.getY();
         return Math.sqrt(x * x + y * y);
     }
 
     @Override
-    public void mouseDragged(final MouseEvent e) {
+    public void mouseDragged(final @NotNull MouseEvent e) {
         int x = e.getX();
         int y = e.getY();
         final int width = getWidth();
@@ -181,7 +183,7 @@ public class PanelMoverXY extends JPanel implements MouseListener, MouseMotionLi
     }
 
     @Override
-    public void mousePressed(final MouseEvent e) {
+    public void mousePressed(final @NotNull MouseEvent e) {
         vector.setLocation(e.getX() - (getWidth() / 2d), e.getY() - (getHeight() / 2d));
         repaint();
     }
@@ -208,6 +210,7 @@ public class PanelMoverXY extends JPanel implements MouseListener, MouseMotionLi
     public void mouseExited(final MouseEvent e) {
     }
 
+    @SuppressWarnings("BusyWait")
     @Override
     public void run() {
         while (!moveThread.isInterrupted()) {
@@ -219,7 +222,7 @@ public class PanelMoverXY extends JPanel implements MouseListener, MouseMotionLi
                 moveThread.interrupt();
             }
             catch (final Exception e) {
-                System.err.println(e.getMessage());
+                IcyLogger.error(this.getClass(), e);
             }
         }
     }
diff --git a/src/main/java/plugins/tprovoost/Microscopy/gui/PanelMoverZ.java b/src/main/java/plugins/tprovoost/Microscopy/gui/PanelMoverZ.java
index 6aa7088..e082b4b 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/gui/PanelMoverZ.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/gui/PanelMoverZ.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2023. Institut Pasteur.
+ * Copyright (c) 2010-2024. Institut Pasteur.
  *
  * This file is part of Icy.
  * Icy is free software: you can redistribute it and/or modify
@@ -18,6 +18,8 @@
 
 package plugins.tprovoost.Microscopy.gui;
 
+import org.bioimageanalysis.icy.system.logging.IcyLogger;
+import org.jetbrains.annotations.NotNull;
 import plugins.tprovoost.Microscopy.MicroManager.tools.StageMover;
 
 import javax.swing.*;
@@ -50,7 +52,7 @@ public class PanelMoverZ extends JPanel implements MouseListener, MouseMotionLis
     private final Thread moveThread;
     private double offZ = 0d;
 
-    public PanelMoverZ(final RemoteFrame frame) {
+    public PanelMoverZ(final @NotNull RemoteFrame frame) {
         super();
 
         this.frame = frame;
@@ -100,7 +102,7 @@ public class PanelMoverZ extends JPanel implements MouseListener, MouseMotionLis
     }
 
     @Override
-    public void mouseDragged(final MouseEvent e) {
+    public void mouseDragged(final @NotNull MouseEvent e) {
         final int movY = e.getY() - oldY;
         if (movY == 0)
             return;
@@ -143,7 +145,7 @@ public class PanelMoverZ extends JPanel implements MouseListener, MouseMotionLis
     }
 
     @Override
-    public void mousePressed(final MouseEvent e) {
+    public void mousePressed(final @NotNull MouseEvent e) {
         oldY = e.getY();
         setCursor(new Cursor(Cursor.S_RESIZE_CURSOR));
         repaint();
@@ -155,6 +157,7 @@ public class PanelMoverZ extends JPanel implements MouseListener, MouseMotionLis
         repaint();
     }
 
+    @SuppressWarnings("BusyWait")
     @Override
     public void run() {
         while (!moveThread.isInterrupted()) {
@@ -174,7 +177,7 @@ public class PanelMoverZ extends JPanel implements MouseListener, MouseMotionLis
                     moveThread.interrupt();
                 }
                 catch (final Exception e) {
-                    System.err.println(e.getMessage());
+                    IcyLogger.error(this.getClass(), e);
                 }
             }
         }
diff --git a/src/main/java/plugins/tprovoost/Microscopy/gui/RemoteFrame.java b/src/main/java/plugins/tprovoost/Microscopy/gui/RemoteFrame.java
index 0decec3..28214dd 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/gui/RemoteFrame.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/gui/RemoteFrame.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2023. Institut Pasteur.
+ * Copyright (c) 2010-2024. Institut Pasteur.
  *
  * This file is part of Icy.
  * Icy is free software: you can redistribute it and/or modify
@@ -18,13 +18,14 @@
 
 package plugins.tprovoost.Microscopy.gui;
 
-import icy.gui.frame.IcyFrame;
-import icy.gui.util.GuiUtil;
-import icy.image.ImageUtil;
-import icy.network.NetworkUtil;
-import icy.resource.icon.IcyIcon;
-import icy.type.point.Point3D;
-import icy.util.StringUtil;
+import org.bioimageanalysis.icy.common.geom.point.Point3D;
+import org.bioimageanalysis.icy.common.string.StringUtil;
+import org.bioimageanalysis.icy.gui.GuiUtil;
+import org.bioimageanalysis.icy.gui.LookAndFeelUtil;
+import org.bioimageanalysis.icy.gui.frame.IcyFrame;
+import org.bioimageanalysis.icy.model.image.ImageUtil;
+import org.bioimageanalysis.icy.network.NetworkUtil;
+import org.jetbrains.annotations.NotNull;
 import plugins.tprovoost.Microscopy.MicroManager.tools.StageMover;
 import plugins.tprovoost.Microscopy.MicroManager.tools.StageMover.StageListener;
 import plugins.tprovoost.Microscopy.MicroManagerForIcy.MicroscopePlugin;
@@ -84,7 +85,7 @@ public class RemoteFrame extends IcyFrame implements StageListener {
     private static final String REMOTE = "prefs_remote";
     private static final String SPEED = "speed";
 
-    public RemoteFrame(final MicroscopeRemotePlugin plugin) {
+    public RemoteFrame(final @NotNull MicroscopeRemotePlugin plugin) {
         super("Remote", false, true, false, true);
 
         this.plugin = plugin;
@@ -130,7 +131,6 @@ public class RemoteFrame extends IcyFrame implements StageListener {
         panel_speed.setOpaque(false);
 
         _sliderSpeed = new JSlider(1, 10, 1) {
-            private static final long serialVersionUID = 1L;
             private final BufferedImage toDraw;
             final int heightKnob;
 
@@ -188,9 +188,8 @@ public class RemoteFrame extends IcyFrame implements StageListener {
         final MemoryButton btnM3 = new MemoryButton("M3", imgMemBtnOn, imgMemBtnOff);
         final MemoryButton btnM4 = new MemoryButton("M4", imgMemBtnOn, imgMemBtnOff);
 
-        final JButton btnHelp = new JButton(new IcyIcon(imgMemBtnOff)) {
-            private static final long serialVersionUID = 1L;
-
+        final int iconSize = LookAndFeelUtil.getDefaultIconSize();
+        final JButton btnHelp = new JButton(new ImageIcon(imgMemBtnOff.getScaledInstance(iconSize, iconSize, Image.SCALE_SMOOTH))) {
             @Override
             public void paint(final Graphics g) {
                 final int w = getWidth();
@@ -245,7 +244,7 @@ public class RemoteFrame extends IcyFrame implements StageListener {
 
         final JPanel panelAll = new JPanel() {
             @Override
-            protected void paintComponent(final Graphics g) {
+            protected void paintComponent(final @NotNull Graphics g) {
                 checkInverts();
                 g.drawImage(imgRemoteBg, 0, 0, getWidth(), getHeight(), null);
             }
diff --git a/src/main/resources/micro-remote.png b/src/main/resources/micro-remote.png
new file mode 100644
index 0000000000000000000000000000000000000000..733d83a9526fa9eeda04f6a6bba56f9d76bd5a7f
GIT binary patch
literal 14770
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
M07*qoM6N<$g0NJV7ytkO

literal 0
HcmV?d00001

-- 
GitLab