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