Make file content viewable from blackboard entry

This commit is contained in:
Dick Fickling 2012-02-22 17:18:12 -05:00
parent a0cc243171
commit 81c9b92f27
2 changed files with 18 additions and 3 deletions

View File

@ -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();

View File

@ -69,10 +69,11 @@ class ViewContextAction extends AbstractAction {
ReverseHierarchyVisitor vtor = new ReverseHierarchyVisitor();
List<Content> 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;
}