From 3c4b060aba9d620bf6b55d89bb6d427896818d71 Mon Sep 17 00:00:00 2001 From: Thomas <thomas.musset@pasteur.fr> Date: Fri, 28 Jun 2024 16:39:19 +0200 Subject: [PATCH] updated pom to v2.0.0-a.1, fix classes accordingly to new architecture, added icon, updated .gitignore --- .gitignore | 43 ++++++++++++++++-- pom.xml | 12 ++--- .../lagache/spherevtk/DrawSpheresVTK.java | 19 ++++---- .../plugins/lagache/spherevtk/SphereVTK.java | 14 +++--- src/main/resources/3d-spheres-vtk.png | Bin 0 -> 12574 bytes 5 files changed, 57 insertions(+), 31 deletions(-) create mode 100644 src/main/resources/3d-spheres-vtk.png diff --git a/.gitignore b/.gitignore index a82d509..57f16fb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +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 -export.jardesc -**/.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 61a58cf..f03f7ad 100644 --- a/pom.xml +++ b/pom.xml @@ -8,14 +8,12 @@ <parent> <groupId>org.bioimageanalysis.icy</groupId> <artifactId>pom-icy</artifactId> - <version>2.2.0</version> + <version>3.0.0-a.1</version> </parent> <!-- Project Information --> <artifactId>3d-spheres-vtk</artifactId> - <version>2.0.0</version> - - <packaging>jar</packaging> + <version>2.0.0-a.1</version> <name>Draw 3D Spheres with VTK.</name> <description> @@ -71,9 +69,8 @@ <dependencies> <dependency> <groupId>org.bioimageanalysis.icy</groupId> - <artifactId>icy-vtk</artifactId> + <artifactId>ezplug</artifactId> </dependency> - <dependency> <groupId>org.bioimageanalysis.icy</groupId> <artifactId>protocols</artifactId> @@ -84,8 +81,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> diff --git a/src/main/java/plugins/lagache/spherevtk/DrawSpheresVTK.java b/src/main/java/plugins/lagache/spherevtk/DrawSpheresVTK.java index b20e0ef..67973a9 100644 --- a/src/main/java/plugins/lagache/spherevtk/DrawSpheresVTK.java +++ b/src/main/java/plugins/lagache/spherevtk/DrawSpheresVTK.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,7 +18,10 @@ package plugins.lagache.spherevtk; -import icy.plugin.abstract_.Plugin; +import org.bioimageanalysis.icy.extension.plugin.abstract_.Plugin; +import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginIcon; +import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginName; +import org.jetbrains.annotations.NotNull; import plugins.adufour.blocks.lang.Block; import plugins.adufour.blocks.util.VarList; import plugins.adufour.vars.lang.*; @@ -28,8 +31,9 @@ import java.awt.*; /** * Colocalisation with Ripley function K Significant */ +@IcyPluginName("Draw Spheres VTK") +@IcyPluginIcon(path = "/3d-spheres-vtk.png") public class DrawSpheresVTK extends Plugin implements Block { - VarSequence input_sequence = new VarSequence("Input sequence", null); VarDoubleArrayNative x = new VarDoubleArrayNative("x", null); VarDoubleArrayNative y = new VarDoubleArrayNative("y", null); @@ -39,8 +43,7 @@ public class DrawSpheresVTK extends Plugin implements Block { VarDouble size = new VarDouble("Size", 1.0); @Override - public void declareInput(final VarList inputMap) { - + public void declareInput(final @NotNull VarList inputMap) { inputMap.add("Input Sequence", input_sequence); inputMap.add("x", x); inputMap.add("y", y); @@ -56,13 +59,7 @@ public class DrawSpheresVTK extends Plugin implements Block { @Override public void run() { - // Add the cross overlay, it becomes active after being added. input_sequence.getValue().addOverlay(new SphereVTK(x.getValue(), y.getValue(), z.getValue(), size.getValue(), color.getValue(), name.getValue())); } - } - - - - \ No newline at end of file diff --git a/src/main/java/plugins/lagache/spherevtk/SphereVTK.java b/src/main/java/plugins/lagache/spherevtk/SphereVTK.java index 639a95a..b091f6a 100644 --- a/src/main/java/plugins/lagache/spherevtk/SphereVTK.java +++ b/src/main/java/plugins/lagache/spherevtk/SphereVTK.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,17 +18,17 @@ package plugins.lagache.spherevtk; -import icy.canvas.IcyCanvas; -import icy.painter.Overlay; -import icy.painter.VtkPainter; -import icy.sequence.Sequence; -import plugins.kernel.canvas.VtkCanvas; +import org.bioimageanalysis.icy.gui.canvas.IcyCanvas; +import org.bioimageanalysis.icy.gui.canvas.VtkCanvas; +import org.bioimageanalysis.icy.model.overlay.Overlay; +import org.bioimageanalysis.icy.model.overlay.VtkPainter; +import org.bioimageanalysis.icy.model.sequence.Sequence; import vtk.*; import java.awt.*; /** - * @author stephane + * @author Stephane Dallongeville */ public class SphereVTK extends Overlay implements VtkPainter { double[] x, y, z; diff --git a/src/main/resources/3d-spheres-vtk.png b/src/main/resources/3d-spheres-vtk.png new file mode 100644 index 0000000000000000000000000000000000000000..82d017bfb74869f405307890198e38bdf77cc94b GIT binary patch literal 12574 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 A5dZ)H literal 0 HcmV?d00001 -- GitLab