From 123939c2caced51cd71bf10b7d9d6b09052940d7 Mon Sep 17 00:00:00 2001 From: Stephane Dallongeville <stephane.dallongeville@pasteur.fr> Date: Wed, 17 Nov 2021 17:21:12 +0100 Subject: [PATCH] Modified patching to make some fields public and also to work with Java >= 9 --- .../Microscopy/MicroManager/patch/MMPatcher.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/patch/MMPatcher.java b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/patch/MMPatcher.java index 32a634b..93773d8 100644 --- a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/patch/MMPatcher.java +++ b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/patch/MMPatcher.java @@ -51,8 +51,9 @@ package plugins.tprovoost.Microscopy.MicroManager.patch; +import org.micromanager.MMVersion; + import icy.plugin.PluginLoader; -import icy.system.ClassPatcher; /** * Overrides class behavior of Micro-Manager classes using bytecode manipulation. This @@ -77,7 +78,15 @@ public class MMPatcher hacker.replaceMethod("org.micromanager.MMStudio", "public boolean isLiveModeOn()"); hacker.replaceMethod("org.micromanager.MMStudio", "public void enableLiveMode(boolean enable)"); + // set some required fields to public + hacker.setFieldPublic("org.micromanager.MMStudio", "options_"); + hacker.setFieldPublic("org.micromanager.MMStudio", "mainPrefs_"); + hacker.setFieldPublic("org.micromanager.MMStudio", "colorPrefs_"); + hacker.setFieldPublic("org.micromanager.MMStudio", "exposurePrefs_"); + hacker.setFieldPublic("org.micromanager.MMStudio", "contrastPrefs_"); + hacker.setFieldPublic("org.micromanager.MMStudio", "acqControlWin_"); + // this directly load the new patched MMStudio class in the Plugin class loader - hacker.loadClass("org.micromanager.MMStudio", classLoader, null); + hacker.loadClass("org.micromanager.MMStudio", MMVersion.class, classLoader, null); } } -- GitLab