diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanel.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanel.java index 78c507a908..4785f561b5 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanel.java @@ -47,7 +47,7 @@ public class IngestOptionsPanel extends IngestModuleGlobalSettingsPanel implemen private final static int INDEX_OF_SETTINGS_PANEL = 2; private ProfileSettingsPanel profilePanel; private final static int INDEX_OF_PROFILE_PANEL = 1; - private boolean fitlerPanelPreviouslySelected = true; + private int indexOfPreviousTab; /** * This panel implements a property change listener that listens to ingest * job events so it can disable the buttons on the panel if ingest is @@ -59,6 +59,7 @@ public class IngestOptionsPanel extends IngestModuleGlobalSettingsPanel implemen public IngestOptionsPanel() { initComponents(); customizeComponents(); + indexOfPreviousTab = tabbedPane.getSelectedIndex(); } private void customizeComponents() { @@ -79,17 +80,17 @@ public class IngestOptionsPanel extends IngestModuleGlobalSettingsPanel implemen @Override public void stateChanged(ChangeEvent e) { if (e.getSource() instanceof JTabbedPane) { - //because we can have two filterPanels open at the same time - //we need to save the settings when we change tabs from the filterTab - //otherwise they could be overwritten with out of date - if (tabbedPane.getSelectedIndex() == INDEX_OF_FILTER_PANEL) { + + if (tabbedPane.getSelectedIndex() == INDEX_OF_FILTER_PANEL && tabbedPane.getSelectedIndex() != indexOfPreviousTab) { + //If we are switching to a filter panel we should load + //load the filter panel to ensure it is up to date + //incase a filter was addded through the Profile->new->create new filter manner filterPanel.load(); - fitlerPanelPreviouslySelected = true; - } else if (fitlerPanelPreviouslySelected) { - filterPanel.saveSettings(); - fitlerPanelPreviouslySelected = false; } - + //save the contents of whichever Tab we just switched from + saveTabByIndex(indexOfPreviousTab); + //save the index of the current tab for the next time we switch + indexOfPreviousTab = tabbedPane.getSelectedIndex(); } } }); @@ -163,12 +164,25 @@ public class IngestOptionsPanel extends IngestModuleGlobalSettingsPanel implemen */ @Override public void saveSettings() { + saveTabByIndex(tabbedPane.getSelectedIndex()); + } + + private void saveTabByIndex(int index) { //Because we can create filters in two seperate windows here we need //to be careful not to save an out of date list over the current list - if (fitlerPanelPreviouslySelected) { - filterPanel.store(); + switch (index) { + case (INDEX_OF_FILTER_PANEL): + filterPanel.saveSettings(); + break; + case (INDEX_OF_PROFILE_PANEL): + profilePanel.saveSettings(); + break; + case (INDEX_OF_SETTINGS_PANEL): + settingsPanel.saveSettings(); + break; + default: + //don't save anything if it wasn't a tab index that should exist } - settingsPanel.store(); } /**