From 81c9b92f277c70cdf00cd3acf8ae746f05d79fc7 Mon Sep 17 00:00:00 2001 From: Dick Fickling Date: Wed, 22 Feb 2012 17:18:12 -0500 Subject: [PATCH] Make file content viewable from blackboard entry --- .../autopsy/datamodel/BlackboardArtifactNode.java | 15 ++++++++++++++- .../autopsy/directorytree/ViewContextAction.java | 6 ++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/DataModel/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java b/DataModel/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java index 939a12542a..de447a5b71 100644 --- a/DataModel/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java +++ b/DataModel/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactNode.java @@ -26,6 +26,7 @@ import java.util.logging.Logger; import org.openide.nodes.AbstractNode; import org.openide.nodes.Children; import org.openide.nodes.Sheet; +import org.openide.util.Lookup; import org.openide.util.lookup.Lookups; import org.sleuthkit.datamodel.BlackboardArtifact; import org.sleuthkit.datamodel.BlackboardAttribute; @@ -44,7 +45,8 @@ public class BlackboardArtifactNode extends AbstractNode implements DisplayableI static final Logger logger = Logger.getLogger(BlackboardArtifactNode.class.getName()); public BlackboardArtifactNode(BlackboardArtifact artifact) { - super(Children.LEAF, Lookups.singleton(new ArtifactStringContent(artifact))); + super(Children.LEAF, Lookups.singleton(getAssociatedFile(artifact))); + //super(Children.LEAF, Lookups.singleton(new ArtifactStringContent(artifact))); this.artifact = artifact; this.setName(Long.toString(artifact.getArtifactID())); this.setDisplayName(artifact.getDisplayName()); @@ -129,6 +131,17 @@ public class BlackboardArtifactNode extends AbstractNode implements DisplayableI throw new IllegalArgumentException("Couldn't get file from database"); } + public static File getAssociatedFile(BlackboardArtifact artifact){ + try { + return artifact.getSleuthkitCase().getFileById(artifact.getObjectID()); + } catch (SQLException ex) { + logger.log(Level.WARNING, "SQL query threw exception", ex); + } catch (TskException ex) { + logger.log(Level.WARNING, "Getting file failed", ex); + } + throw new IllegalArgumentException("Couldn't get file from database"); + } + public Directory getParentDirectory(){ try{ return getAssociatedFile().getParentDirectory(); diff --git a/DirectoryTree/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java b/DirectoryTree/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java index c65a11b027..40e5eaa012 100644 --- a/DirectoryTree/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java +++ b/DirectoryTree/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java @@ -69,10 +69,11 @@ class ViewContextAction extends AbstractAction { ReverseHierarchyVisitor vtor = new ReverseHierarchyVisitor(); List hierarchy = node.getAssociatedFile().accept(vtor); Collections.reverse(hierarchy); - Node generated = new AbstractNode(new RootContentChildren(hierarchy)); + Node generated = new DirectoryTreeFilterNode(new AbstractNode(new RootContentChildren(hierarchy))); Children genChilds = generated.getChildren(); final DirectoryTreeTopComponent directoryTree = DirectoryTreeTopComponent.findInstance(); + TreeView tree = directoryTree.getTree(); ExplorerManager man = directoryTree.getExplorerManager(); Node dirRoot = man.getRootContext(); Children dirChilds = dirRoot.getChildren(); @@ -85,6 +86,7 @@ class ViewContextAction extends AbstractAction { Node currentDirectoryTreeNode = dirChilds.getNodeAt(j); if (currentGeneratedNode.getDisplayName().equals(currentDirectoryTreeNode.getDisplayName())) { dirExplored = currentDirectoryTreeNode; + tree.expandNode(dirExplored); dirChilds = currentDirectoryTreeNode.getChildren(); break; } @@ -93,7 +95,6 @@ class ViewContextAction extends AbstractAction { try { if (dirExplored != null) { - TreeView tree = directoryTree.getTree(); tree.expandNode(dirExplored); man.setExploredContextAndSelection(dirExplored, new Node[]{dirExplored}); } @@ -114,6 +115,7 @@ class ViewContextAction extends AbstractAction { for (int i = 0; i < resultChilds.getNodesCount(); i++) { Node current = resultChilds.getNodeAt(i); if (generated.getName().equals(current.getName())) { + dataResult.requestActive(); dataResult.setSelectedNodes(new Node[]{current}); break; }