From f7dc225c3822b3d87bb763c797fe5c2c8cd092d0 Mon Sep 17 00:00:00 2001 From: dragonmacher <48328597+dragonmacher@users.noreply.github.com> Date: Fri, 28 Mar 2025 17:35:33 -0400 Subject: [PATCH] GP-5536 - Version Tracking - Fixed issue with incorrect plugins being loaded from saved tool --- .../feature/vt/gui/plugin/VTPlugin.java | 11 ++++++++ .../vt/gui/wizard/add/AddToSessionData.java | 16 +++++++---- .../vt/gui/wizard/add/OptionsPanel.java | 28 +++---------------- .../vt/gui/wizard/add/OptionsStep.java | 13 +++++---- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTPlugin.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTPlugin.java index 6c2e876af6..58037e7b25 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTPlugin.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTPlugin.java @@ -143,11 +143,22 @@ public class VTPlugin extends Plugin { @Override protected void init() { + + removeUnwantedPlugins(); + addCustomPlugins(); maybeShowHelp(); } + private void removeUnwantedPlugins() { + + List allPlugins = tool.getManagedPlugins(); + List toRemove = new ArrayList<>(allPlugins); + toRemove.remove(this); + tool.removePlugins(toRemove); + } + private void addCustomPlugins() { List names = diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/AddToSessionData.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/AddToSessionData.java index 90938de6a8..5067adbd8e 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/AddToSessionData.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/AddToSessionData.java @@ -144,14 +144,20 @@ public class AddToSessionData { public void setCorrelators(List correlators) { if (!correlators.equals(this.correlators)) { this.correlators = correlators; - // whenever the set of correlators changes, reset the options to force options panel - // to show - optionsMap = null; + updateOptionsMap(); } } - public void setOptions(Map optionsMap) { - this.optionsMap = optionsMap; + private void updateOptionsMap() { + optionsMap.keySet().retainAll(correlators); + for (VTProgramCorrelatorFactory correlator : correlators) { + if (!optionsMap.containsKey(correlator)) { + VTOptions defaultOptions = correlator.createDefaultOptions(); + if (defaultOptions != null) { + optionsMap.put(correlator, defaultOptions); + } + } + } } public Map getOptions() { diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/OptionsPanel.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/OptionsPanel.java index 658816962a..9a98f5684f 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/OptionsPanel.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/OptionsPanel.java @@ -37,9 +37,9 @@ public class OptionsPanel extends JPanel { private static final Dimension DEFAULT_PREFERRED_SIZE = new Dimension(650, 350); + private Map optionsMap; private List optionsEditorPanelList = new ArrayList<>(); private Callback statusChangedCallback; - private Map optionsMap = new HashMap<>(); private JPanel stagingPanel; @@ -63,25 +63,9 @@ public class OptionsPanel extends JPanel { return preferredSize; } - public boolean isApplicable(List correlators) { - updateOptionsMap(correlators); - return !optionsMap.isEmpty(); - } - - private void updateOptionsMap(List correlators) { - optionsMap.keySet().retainAll(correlators); - for (VTProgramCorrelatorFactory correlator : correlators) { - if (!optionsMap.containsKey(correlator)) { - VTOptions defaultOptions = correlator.createDefaultOptions(); - if (defaultOptions != null) { - optionsMap.put(correlator, defaultOptions); - } - } - } - } - - void initialize(List correlators) { - updateOptionsMap(correlators); + void initialize(List correlators, + Map map) { + optionsMap = map; JPanel panel = new JPanel(new VerticalLayout(30)); optionsEditorPanelList.clear(); for (VTProgramCorrelatorFactory correlator : correlators) { @@ -134,8 +118,4 @@ public class OptionsPanel extends JPanel { } } - Map getOptionsMap() { - return optionsMap; - } - } diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/OptionsStep.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/OptionsStep.java index 8cbd1fef55..4546124537 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/OptionsStep.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/add/OptionsStep.java @@ -15,10 +15,14 @@ */ package ghidra.feature.vt.gui.wizard.add; +import java.util.Map; + import javax.swing.JComponent; import docking.wizard.WizardModel; import docking.wizard.WizardStep; +import ghidra.feature.vt.api.main.VTProgramCorrelatorFactory; +import ghidra.feature.vt.api.util.VTOptions; import ghidra.util.HelpLocation; /** @@ -37,14 +41,13 @@ public class OptionsStep extends WizardStep { @Override public void initialize(AddToSessionData data) { - panel.initialize(data.getCorrelators()); - // set the options here so that we know this step was visited - data.setOptions(panel.getOptionsMap()); + panel.initialize(data.getCorrelators(), data.getOptions()); } @Override public boolean isApplicable(AddToSessionData data) { - return panel.isApplicable(data.getCorrelators()); + Map options = data.getOptions(); + return !options.isEmpty(); } @Override @@ -59,7 +62,7 @@ public class OptionsStep extends WizardStep { @Override public void populateData(AddToSessionData data) { - data.setOptions(panel.getOptionsMap()); + // stub } @Override