From 8708484b6848acbe20f755ccf933c92152c170ee Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Fri, 19 Mar 2021 17:33:21 -0400 Subject: [PATCH 1/4] 7312 fix displayed content without touching content viewers --- .../ui/ArtifactMenuMouseAdapter.java | 23 +++++++++++++++---- .../ui/ContentViewerDetailsPanel.java | 19 ++++++++++++++- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactMenuMouseAdapter.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactMenuMouseAdapter.java index f4b7b25954..0a23a4da77 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactMenuMouseAdapter.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactMenuMouseAdapter.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.discovery.ui; +import java.awt.Color; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.Arrays; @@ -113,19 +114,31 @@ class ArtifactMenuMouseAdapter extends java.awt.event.MouseAdapter { * * @throws TskCoreException */ + @NbBundle.Messages({"ArtifactMenuMouseAdapter.noFile.text=File does not exist."}) private JMenuItem[] getMenuItems(BlackboardArtifact artifact) throws TskCoreException { List menuItems = new ArrayList<>(); BlackboardAttribute pathIdAttr = artifact.getAttribute(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH_ID)); - long contentId; + Long contentId; if (pathIdAttr != null) { contentId = pathIdAttr.getValueLong(); - } else { + } else if (artifact.getArtifactTypeID() != BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD.getTypeID() && artifact.getArtifactTypeID() != BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD.getTypeID()) { contentId = artifact.getObjectID(); + } else { + contentId = null; + JMenuItem noFile = new JMenuItem(); + noFile.setText(Bundle.ArtifactMenuMouseAdapter_noFile_text()); + noFile.setEnabled(false); + noFile.setForeground(Color.RED); + menuItems.add(noFile); } - Content content = artifact.getSleuthkitCase().getContentById(contentId); menuItems.addAll(getTimelineMenuItems(artifact)); - menuItems.addAll(getDataModelActionFactoryMenuItems(artifact, content)); - menuItems.add(DeleteFileContentTagAction.getInstance().getMenuForFiles(Arrays.asList((AbstractFile) content))); + if (contentId != null) { + Content content = artifact.getSleuthkitCase().getContentById(contentId); + menuItems.addAll(getDataModelActionFactoryMenuItems(artifact, content)); + menuItems.add(DeleteFileContentTagAction.getInstance().getMenuForFiles(Arrays.asList((AbstractFile) content))); + } else { + menuItems.add(AddBlackboardArtifactTagAction.getInstance().getMenuForContent(Arrays.asList(artifact))); + } menuItems.add(DeleteFileBlackboardArtifactTagAction.getInstance().getMenuForArtifacts(Arrays.asList(artifact))); return menuItems.toArray(new JMenuItem[0]); } diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java index 4132947918..166a1ef354 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java @@ -18,11 +18,16 @@ */ package org.sleuthkit.autopsy.discovery.ui; +import java.util.logging.Level; import org.openide.nodes.Node; +import org.openide.util.Exceptions; import org.sleuthkit.autopsy.corecomponents.DataContentPanel; +import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ThreadConfined; import org.sleuthkit.autopsy.datamodel.BlackboardArtifactNode; import org.sleuthkit.datamodel.BlackboardArtifact; +import org.sleuthkit.datamodel.BlackboardAttribute; +import org.sleuthkit.datamodel.TskCoreException; /** * Details panel for displaying the collection of content viewers. @@ -31,6 +36,7 @@ final class ContentViewerDetailsPanel extends AbstractArtifactDetailsPanel { private static final long serialVersionUID = 1L; private final DataContentPanel contentViewer = DataContentPanel.createInstance(); + private final static Logger logger = Logger.getLogger(ContentViewerDetailsPanel.class.getName()); /** * Creates new form ContentViewerDetailsPanel @@ -61,7 +67,18 @@ final class ContentViewerDetailsPanel extends AbstractArtifactDetailsPanel { if (artifact != null) { boolean useAssociatedFile = artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD.getTypeID() || artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_CACHE.getTypeID(); - node = new BlackboardArtifactNode(artifact, useAssociatedFile); + BlackboardAttribute pathIdAttr = null; + if (useAssociatedFile) { + + try { + artifact.getAttribute(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH_ID)); + } catch (TskCoreException ex) { + logger.log(Level.WARNING, "Error getting Path ID Attribute for artifact with ID: " + artifact.getArtifactID(), ex); + } + } + if (!useAssociatedFile || pathIdAttr != null) { + node = new BlackboardArtifactNode(artifact, useAssociatedFile); + } } contentViewer.setNode(node); } From d7fa70619f96352913250c2d39646559a9245750 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Fri, 19 Mar 2021 17:35:17 -0400 Subject: [PATCH 2/4] 7312 remove unused import --- .../autopsy/discovery/ui/ContentViewerDetailsPanel.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java index 166a1ef354..6b1b4e8379 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java @@ -20,7 +20,6 @@ package org.sleuthkit.autopsy.discovery.ui; import java.util.logging.Level; import org.openide.nodes.Node; -import org.openide.util.Exceptions; import org.sleuthkit.autopsy.corecomponents.DataContentPanel; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ThreadConfined; From b78553e33c3bc22d7a738be2d67d423beb2ad11d Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Fri, 19 Mar 2021 17:35:58 -0400 Subject: [PATCH 3/4] 7312 add bundle merged file --- .../org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED | 1 + 1 file changed, 1 insertion(+) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED index e4e50864dd..e9f767cffe 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED @@ -1,3 +1,4 @@ +ArtifactMenuMouseAdapter.noFile.text=File does not exist. ArtifactMenuMouseAdapter_ExternalViewer_label=Open in external viewer ArtifactMenuMouseAdapter_label=Extract Files ArtifactsListPanel.dateColumn.name=Date/Time From 41e50b76c739eb79771dddb835bfb9f7c48ad1a5 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Fri, 19 Mar 2021 17:46:36 -0400 Subject: [PATCH 4/4] 7312 add the line that makes it work --- .../autopsy/discovery/ui/ContentViewerDetailsPanel.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java index 6b1b4e8379..581c60a802 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/ContentViewerDetailsPanel.java @@ -68,9 +68,8 @@ final class ContentViewerDetailsPanel extends AbstractArtifactDetailsPanel { || artifact.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_CACHE.getTypeID(); BlackboardAttribute pathIdAttr = null; if (useAssociatedFile) { - try { - artifact.getAttribute(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH_ID)); + pathIdAttr = artifact.getAttribute(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH_ID)); } catch (TskCoreException ex) { logger.log(Level.WARNING, "Error getting Path ID Attribute for artifact with ID: " + artifact.getArtifactID(), ex); }