From dad08311af517818d64d3fe1d65ea81632166fd3 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 6 May 2021 16:00:12 -0400 Subject: [PATCH] 7587 ensure directory tree top component is constructed even when case does not have contents yet --- .../sleuthkit/autopsy/casemodule/Case.java | 4 ++++ .../autopsy/casemodule/CasePreferences.java | 24 ++++++++++--------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index ddf8cc22b9..4e35eebeed 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -116,6 +116,7 @@ import org.sleuthkit.autopsy.coreutils.ThreadUtils; import org.sleuthkit.autopsy.coreutils.TimeZoneUtils; import org.sleuthkit.autopsy.coreutils.Version; import org.sleuthkit.autopsy.datamodel.hosts.OpenHostsAction; +import org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent; import org.sleuthkit.autopsy.events.AutopsyEvent; import org.sleuthkit.autopsy.events.AutopsyEventException; import org.sleuthkit.autopsy.events.AutopsyEventPublisher; @@ -1287,6 +1288,9 @@ public class Case { */ if (newCurrentCase.hasData()) { CoreComponentControl.openCoreWindows(); + } else { + //ensure that the DirectoryTreeTopComponent is open so that it's listener can open the core windows including making it visible. + DirectoryTreeTopComponent.findInstance(); } /* diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java index 9967f1fb68..8f749199f7 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java @@ -35,22 +35,22 @@ import org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent; * Read and update case preference file values. */ public final class CasePreferences { - + private static final String SETTINGS_FILE = "CasePreferences.properties"; //NON-NLS private static final String KEY_GROUP_BY_DATA_SOURCE = "groupByDataSource"; //NON-NLS private static final String VALUE_TRUE = "true"; //NON-NLS private static final String VALUE_FALSE = "false"; //NON-NLS - + private static final Logger logger = Logger.getLogger(CasePreferences.class.getName()); - + private static Boolean groupItemsInTreeByDataSource = false; - + /** * Prevent instantiation. */ private CasePreferences() { } - + static { Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> { if (evt.getNewValue() != null) { @@ -66,25 +66,27 @@ public final class CasePreferences { logger.log(Level.SEVERE, "No current case open.", ex); } } - + /** * Get the 'groupItemsInTreeByDataSource' value. This can be true, false, or * null. - * + * * @return The value. */ public static Boolean getGroupItemsInTreeByDataSource() { return groupItemsInTreeByDataSource; } - + /** * Set the 'groupItemsInTreeByDataSource' value to true or false. - * + * * @param value The value to use for the value change. */ public static void setGroupItemsInTreeByDataSource(boolean value) { groupItemsInTreeByDataSource = value; - DirectoryTreeTopComponent.getDefault().refreshContentTreeSafe(); + if (Case.isCaseOpen()) { + DirectoryTreeTopComponent.getDefault().refreshContentTreeSafe(); + } } /** @@ -120,7 +122,7 @@ public final class CasePreferences { } } } - + /** * Reset all values to their default states. */