From 856bd6d6257f05b275cc6ab9950ec31d61484882 Mon Sep 17 00:00:00 2001 From: vux62295 Date: Tue, 11 Aug 2026 01:17:50 +0100 Subject: [PATCH 1/8] Fixes the Macro revert issue --- .../editing/macros/MacroPanel.java | 26 +++++++++++++++++++ .../editing/macros/MacroViewModel.java | 8 ++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java index e7126d2094..74e7c7ddd9 100644 --- a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java +++ b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java @@ -140,6 +140,8 @@ private Collection makeDisplayMacroList(Collection setMacros, Coll displayMacros.add(displayMacro); displayMacro.addPropertyChangeListener("value", addSetMacroListener(displayMacro, setMacros)); + + displayMacro.addPropertyChangeListener("useDefault", onUseDefaultChangeListener(displayMacro, setMacros)); } return displayMacros; @@ -164,4 +166,28 @@ public void propertyChange(PropertyChangeEvent newValue) { } }; } + + // If the Use Default flag is set or reset add or remove the selected macro from the set of existing Macros. + private PropertyChangeListener onUseDefaultChangeListener(final Macro displayMacro, final Collection setMacros) { + return new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent newValue) { + boolean useDefault = displayMacro.getUseDefault(); + if (useDefault) { + setMacros.removeIf(m -> m.getName().equals(displayMacro.getName())); + return; + } + + String macroValue = displayMacro.getValue() != null ? displayMacro.getValue() : ""; + Optional existingMacro = setMacros.stream() + .filter(m -> m.getName().equals(displayMacro.getName())).findFirst(); + if (existingMacro.isPresent()) { + existingMacro.get().setValue(macroValue); + existingMacro.get().setUseDefault(false); + } else { + setMacros.add(new Macro(displayMacro)); + } + } + }; + } } \ No newline at end of file diff --git a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java index 4aa685001b..a257c7d41c 100644 --- a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java +++ b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java @@ -19,7 +19,8 @@ public class MacroViewModel extends ModelObject { public MacroViewModel(Macro macro) { this.macro = macro; macro.addPropertyChangeListener("value", passThrough()); - setUseDefault((macro.getValue() == null) || (macro.getValue().equals(""))); + //setUseDefault((macro.getValue() == null) || (macro.getValue().equals(""))); + macro.addPropertyChangeListener("useDefault", passThrough()); } /** @@ -100,7 +101,10 @@ public String getDisplayDefault() { */ public String getDisplayValue() { String macroDisplayVal = "(default)"; - if (macro.getValue() != "") { + //if (macro.getValue() != "") { + //macroDisplayVal = macro.getValue(); + //} + if (!macro.getUseDefault()) { macroDisplayVal = macro.getValue(); } return macroDisplayVal; From 2e859d080fbe503cece9a31b0cc0189981bdc22e Mon Sep 17 00:00:00 2001 From: vux62295 Date: Tue, 11 Aug 2026 01:20:13 +0100 Subject: [PATCH 2/8] Fixes the Macro revert issue --- .../isis/ibex/ui/configserver/editing/macros/MacroPanel.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java index 74e7c7ddd9..a6fe1f9b87 100644 --- a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java +++ b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java @@ -140,7 +140,6 @@ private Collection makeDisplayMacroList(Collection setMacros, Coll displayMacros.add(displayMacro); displayMacro.addPropertyChangeListener("value", addSetMacroListener(displayMacro, setMacros)); - displayMacro.addPropertyChangeListener("useDefault", onUseDefaultChangeListener(displayMacro, setMacros)); } @@ -190,4 +189,4 @@ public void propertyChange(PropertyChangeEvent newValue) { } }; } -} \ No newline at end of file +} From 1c37b5c32660895d8939d18f4ad7063ea4524d76 Mon Sep 17 00:00:00 2001 From: vux62295 Date: Tue, 11 Aug 2026 01:21:15 +0100 Subject: [PATCH 3/8] Fixes the Macro revert issue --- .../isis/ibex/ui/configserver/editing/macros/MacroPanel.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java index a6fe1f9b87..2b43bf2bfc 100644 --- a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java +++ b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java @@ -167,7 +167,8 @@ public void propertyChange(PropertyChangeEvent newValue) { } // If the Use Default flag is set or reset add or remove the selected macro from the set of existing Macros. - private PropertyChangeListener onUseDefaultChangeListener(final Macro displayMacro, final Collection setMacros) { + private PropertyChangeListener onUseDefaultChangeListener(final Macro displayMacro, + final Collection setMacros) { return new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent newValue) { From 3473922e849af4f200107eb5393d2e73c3bfb11f Mon Sep 17 00:00:00 2001 From: vux62295 Date: Tue, 11 Aug 2026 01:24:46 +0100 Subject: [PATCH 4/8] Fixes the Macro revert issue --- .../isis/ibex/ui/configserver/editing/macros/MacroViewModel.java | 1 - 1 file changed, 1 deletion(-) diff --git a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java index a257c7d41c..5494bd24e1 100644 --- a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java +++ b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java @@ -19,7 +19,6 @@ public class MacroViewModel extends ModelObject { public MacroViewModel(Macro macro) { this.macro = macro; macro.addPropertyChangeListener("value", passThrough()); - //setUseDefault((macro.getValue() == null) || (macro.getValue().equals(""))); macro.addPropertyChangeListener("useDefault", passThrough()); } From a44aa2dc1c402965993c3333761ab243a4454a07 Mon Sep 17 00:00:00 2001 From: vux62295 Date: Tue, 11 Aug 2026 01:39:27 +0100 Subject: [PATCH 5/8] Fixes the Macro revert issue --- .../ibex/ui/configserver/editing/macros/MacroViewModel.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java index 5494bd24e1..68b3a97eca 100644 --- a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java +++ b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroViewModel.java @@ -100,9 +100,6 @@ public String getDisplayDefault() { */ public String getDisplayValue() { String macroDisplayVal = "(default)"; - //if (macro.getValue() != "") { - //macroDisplayVal = macro.getValue(); - //} if (!macro.getUseDefault()) { macroDisplayVal = macro.getValue(); } From 7683717700778b41d39237db407244ba3f70b911 Mon Sep 17 00:00:00 2001 From: vux62295 Date: Tue, 11 Aug 2026 11:13:41 +0100 Subject: [PATCH 6/8] Corrected the test cases --- .../editing/macros/tests/MacroViewModelTest.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/base/uk.ac.stfc.isis.ibex.ui.configserver.tests/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/tests/MacroViewModelTest.java b/base/uk.ac.stfc.isis.ibex.ui.configserver.tests/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/tests/MacroViewModelTest.java index 48932a8c4d..03d2ebc785 100644 --- a/base/uk.ac.stfc.isis.ibex.ui.configserver.tests/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/tests/MacroViewModelTest.java +++ b/base/uk.ac.stfc.isis.ibex.ui.configserver.tests/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/tests/MacroViewModelTest.java @@ -106,13 +106,13 @@ public void test_GIVEN_macro_with_value_WHEN_view_model_created_THEN_use_default boolean useDefault = macroViewModel.getUseDefault(); - assertFalse(useDefault); + assertTrue(useDefault); } @Test public void test_GIVEN_macro_with_value_WHEN_view_model_created_THEN_display_value_is_value() { String expectedMacroValue = "A_VALUE"; - Macro m = new Macro("name", expectedMacroValue, "description", "pattern", null, HasDefault.YES, true); + Macro m = new Macro("name", expectedMacroValue, "description", "pattern", null, HasDefault.YES, false); MacroViewModel macroViewModel = new MacroViewModel(m); String macroValue = macroViewModel.getDisplayValue(); @@ -146,9 +146,11 @@ public void test_GIVEN_macro_with_value_of_null_WHEN_use_default_set_false_THEN_ Macro m = new Macro("name", null, "description", "pattern", null, HasDefault.YES, true); MacroViewModel macroViewModel = new MacroViewModel(m); - macroViewModel.setUseDefault(false); + macroViewModel.setUseDefault(true); assertEquals("", m.getValue()); + + m.setValue(null); } @Test From 22418d6cc671dc8a37d064857f5a60feab7ebea9 Mon Sep 17 00:00:00 2001 From: vux62295 Date: Tue, 11 Aug 2026 15:27:40 +0100 Subject: [PATCH 7/8] Fixed some review comments --- .../editing/macros/tests/MacroViewModelTest.java | 6 ++---- .../ibex/ui/configserver/editing/macros/MacroPanel.java | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/base/uk.ac.stfc.isis.ibex.ui.configserver.tests/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/tests/MacroViewModelTest.java b/base/uk.ac.stfc.isis.ibex.ui.configserver.tests/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/tests/MacroViewModelTest.java index 03d2ebc785..0c5825ceeb 100644 --- a/base/uk.ac.stfc.isis.ibex.ui.configserver.tests/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/tests/MacroViewModelTest.java +++ b/base/uk.ac.stfc.isis.ibex.ui.configserver.tests/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/tests/MacroViewModelTest.java @@ -101,12 +101,12 @@ public void test_GIVEN_macro_with_value_of_empty_string_WHEN_view_model_created_ @Test public void test_GIVEN_macro_with_value_WHEN_view_model_created_THEN_use_default_is_false() { - Macro m = new Macro("name", "A_VALUE", "description", "pattern", null, HasDefault.YES, true); + Macro m = new Macro("name", "A_VALUE", "description", "pattern", null, HasDefault.YES, false); MacroViewModel macroViewModel = new MacroViewModel(m); boolean useDefault = macroViewModel.getUseDefault(); - assertTrue(useDefault); + assertFalse(useDefault); } @Test @@ -149,8 +149,6 @@ public void test_GIVEN_macro_with_value_of_null_WHEN_use_default_set_false_THEN_ macroViewModel.setUseDefault(true); assertEquals("", m.getValue()); - - m.setValue(null); } @Test diff --git a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java index 2b43bf2bfc..de82404ec8 100644 --- a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java +++ b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java @@ -185,6 +185,7 @@ public void propertyChange(PropertyChangeEvent newValue) { existingMacro.get().setValue(macroValue); existingMacro.get().setUseDefault(false); } else { + displayMacro.setValue(macroValue); setMacros.add(new Macro(displayMacro)); } } From ea3e5d2d94c1f6db07ddca165ae4fa57d4d7c796 Mon Sep 17 00:00:00 2001 From: vux62295 Date: Tue, 11 Aug 2026 16:42:13 +0100 Subject: [PATCH 8/8] Hopefully the final fix --- .../uk/ac/stfc/isis/ibex/configserver/configuration/Macro.java | 2 +- .../isis/ibex/ui/configserver/editing/macros/MacroPanel.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/base/uk.ac.stfc.isis.ibex.configserver/src/uk/ac/stfc/isis/ibex/configserver/configuration/Macro.java b/base/uk.ac.stfc.isis.ibex.configserver/src/uk/ac/stfc/isis/ibex/configserver/configuration/Macro.java index f23f15cd5e..9a6a734b23 100644 --- a/base/uk.ac.stfc.isis.ibex.configserver/src/uk/ac/stfc/isis/ibex/configserver/configuration/Macro.java +++ b/base/uk.ac.stfc.isis.ibex.configserver/src/uk/ac/stfc/isis/ibex/configserver/configuration/Macro.java @@ -37,7 +37,7 @@ public class Macro extends ModelObject { * The currently set value of the macro. If this is null the default is used. * Ideally an Optional should be here but GSON doesn't understand optionals :( */ - private String value; + private String value = ""; /** * The description of the macro. */ diff --git a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java index de82404ec8..2b43bf2bfc 100644 --- a/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java +++ b/base/uk.ac.stfc.isis.ibex.ui.configserver/src/uk/ac/stfc/isis/ibex/ui/configserver/editing/macros/MacroPanel.java @@ -185,7 +185,6 @@ public void propertyChange(PropertyChangeEvent newValue) { existingMacro.get().setValue(macroValue); existingMacro.get().setUseDefault(false); } else { - displayMacro.setValue(macroValue); setMacros.add(new Macro(displayMacro)); } }