From a537d0457ba8593f5db34f3c82b85dc825f12f4c Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Sun, 10 Nov 2013 20:03:51 -0500 Subject: [PATCH] Modified DataModelActionsFactory to deal with artifact source content --- .../datamodel/BlackboardArtifactTagNode.java | 3 +- .../autopsy/datamodel/ContentTagNode.java | 3 +- .../datamodel/DataModelActionsFactory.java | 69 ++++++++++--------- 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactTagNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactTagNode.java index d88e72bf84..bb45253a5e 100755 --- a/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactTagNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/BlackboardArtifactTagNode.java @@ -18,7 +18,6 @@ */ package org.sleuthkit.autopsy.datamodel; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -76,7 +75,7 @@ public class BlackboardArtifactTagNode extends DisplayableItemNode { @Override public Action[] getActions(boolean context) { - List actions = DataModelActionsFactory.getActions(tag.getContent()); // RJCTODO: Get extra stuff from Tags + List actions = DataModelActionsFactory.getActions(tag.getContent(), true); actions.add(null); // Adds a menu item separator. actions.add(DeleteBlackboardArtifactTagAction.getInstance()); return actions.toArray(new Action[0]); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ContentTagNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/ContentTagNode.java index fa3aa97eba..3817bb3c9a 100755 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ContentTagNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ContentTagNode.java @@ -19,7 +19,6 @@ package org.sleuthkit.autopsy.datamodel; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -75,7 +74,7 @@ public class ContentTagNode extends DisplayableItemNode { @Override public Action[] getActions(boolean context) { - List actions = DataModelActionsFactory.getActions(tag.getContent()); + List actions = DataModelActionsFactory.getActions(tag.getContent(), false); actions.add(null); // Adds a menu item separator. actions.add(DeleteContentTagAction.getInstance()); return actions.toArray(new Action[0]); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/DataModelActionsFactory.java b/Core/src/org/sleuthkit/autopsy/datamodel/DataModelActionsFactory.java index 27f6b328a0..4b79b6059a 100755 --- a/Core/src/org/sleuthkit/autopsy/datamodel/DataModelActionsFactory.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/DataModelActionsFactory.java @@ -42,33 +42,33 @@ import org.sleuthkit.datamodel.VirtualDirectory; * This class provides methods for creating sets of actions for data model objects. */ class DataModelActionsFactory { - static List getActions(Content content) { + static List getActions(Content content, boolean isArtifactSource) { if (content instanceof File) { - return getActions((File)content); + return getActions((File)content, isArtifactSource); } else if (content instanceof LayoutFile) { - return getActions((LayoutFile)content); + return getActions((LayoutFile)content, isArtifactSource); } else if (content instanceof Directory) { - return getActions((Directory)content); + return getActions((Directory)content, isArtifactSource); } else if (content instanceof VirtualDirectory) { - return getActions((VirtualDirectory)content); + return getActions((VirtualDirectory)content, isArtifactSource); } else if (content instanceof LocalFile) { - return getActions((LocalFile)content); + return getActions((LocalFile)content, isArtifactSource); } else if (content instanceof DerivedFile) { - return getActions((DerivedFile)content); + return getActions((DerivedFile)content, isArtifactSource); } else { return new ArrayList<>(); } } - static List getActions(File file) { + static List getActions(File file, boolean isArtifactSource) { List actions = new ArrayList<>(); - actions.add(new ViewContextAction("View File in Directory", file)); + actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), file)); final FileNode fileNode = new FileNode(file); actions.add(null); // creates a menu separator actions.add(new NewWindowViewAction("View in New Window", fileNode)); @@ -78,14 +78,16 @@ class DataModelActionsFactory { actions.add(new HashSearchAction("Search for files with the same MD5 hash", fileNode)); actions.add(null); // creates a menu separator actions.add(AddContentTagAction.getInstance()); - actions.add(AddBlackboardArtifactTagAction.getInstance()); + if (isArtifactSource) { + actions.add(AddBlackboardArtifactTagAction.getInstance()); + } actions.addAll(ContextMenuExtensionPoint.getActions()); return actions; } - static List getActions(LayoutFile file) { + static List getActions(LayoutFile file, boolean isArtifactSource) { List actions = new ArrayList<>(); - actions.add(new ViewContextAction("View File in Directory", file)); + actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), file)); LayoutFileNode layoutFileNode = new LayoutFileNode(file); actions.add(null); // creates a menu separator actions.add(new NewWindowViewAction("View in New Window", layoutFileNode)); @@ -94,14 +96,16 @@ class DataModelActionsFactory { actions.add(ExtractAction.getInstance());// actions.add(null); // creates a menu separator actions.add(AddContentTagAction.getInstance()); - actions.add(AddBlackboardArtifactTagAction.getInstance()); + if (isArtifactSource) { + actions.add(AddBlackboardArtifactTagAction.getInstance()); + } actions.addAll(ContextMenuExtensionPoint.getActions()); return actions; } - static List getActions(Directory directory) { + static List getActions(Directory directory, boolean isArtifactSource) { List actions = new ArrayList<>(); - actions.add(new ViewContextAction("View File in Directory", directory)); + actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), directory)); DirectoryNode directoryNode = new DirectoryNode(directory); actions.add(null); // creates a menu separator actions.add(new NewWindowViewAction("View in New Window", directoryNode)); @@ -110,14 +114,16 @@ class DataModelActionsFactory { actions.add(ExtractAction.getInstance()); actions.add(null); // creates a menu separator actions.add(AddContentTagAction.getInstance()); - actions.add(AddBlackboardArtifactTagAction.getInstance()); + if (isArtifactSource) { + actions.add(AddBlackboardArtifactTagAction.getInstance()); + } actions.addAll(ContextMenuExtensionPoint.getActions()); // RJCTODO: Separator should not be added by provider return actions; } - static List getActions(VirtualDirectory directory) { + static List getActions(VirtualDirectory directory, boolean isArtifactSource) { List actions = new ArrayList<>(); - actions.add(new ViewContextAction("View File in Directory", directory)); + actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), directory)); VirtualDirectoryNode directoryNode = new VirtualDirectoryNode(directory); actions.add(null); // creates a menu separator actions.add(new NewWindowViewAction("View in New Window", directoryNode)); @@ -126,14 +132,16 @@ class DataModelActionsFactory { actions.add(ExtractAction.getInstance()); actions.add(null); // creates a menu separator actions.add(AddContentTagAction.getInstance()); - actions.add(AddBlackboardArtifactTagAction.getInstance()); + if (isArtifactSource) { + actions.add(AddBlackboardArtifactTagAction.getInstance()); + } actions.addAll(ContextMenuExtensionPoint.getActions()); return actions; } - static List getActions(LocalFile file) { + static List getActions(LocalFile file, boolean isArtifactSource) { List actions = new ArrayList<>(); - actions.add(new ViewContextAction("View File in Directory", file)); + actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), file)); final LocalFileNode localFileNode = new LocalFileNode(file); actions.add(null); // creates a menu separator actions.add(new NewWindowViewAction("View in New Window", localFileNode)); @@ -142,14 +150,16 @@ class DataModelActionsFactory { actions.add(ExtractAction.getInstance()); actions.add(null); // creates a menu separator actions.add(AddContentTagAction.getInstance()); - actions.add(AddBlackboardArtifactTagAction.getInstance()); + if (isArtifactSource) { + actions.add(AddBlackboardArtifactTagAction.getInstance()); + } actions.addAll(ContextMenuExtensionPoint.getActions()); return actions; } - static List getActions(DerivedFile file) { + static List getActions(DerivedFile file, boolean isArtifactSource) { List actions = new ArrayList<>(); - actions.add(new ViewContextAction("View File in Directory", file)); + actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), file)); final LocalFileNode localFileNode = new LocalFileNode(file); actions.add(null); // creates a menu separator actions.add(new NewWindowViewAction("View in New Window", localFileNode)); @@ -158,15 +168,10 @@ class DataModelActionsFactory { actions.add(ExtractAction.getInstance()); actions.add(null); // creates a menu separator actions.add(AddContentTagAction.getInstance()); - actions.add(AddBlackboardArtifactTagAction.getInstance()); + if (isArtifactSource) { + actions.add(AddBlackboardArtifactTagAction.getInstance()); + } actions.addAll(ContextMenuExtensionPoint.getActions()); return actions; - } - - static List getActions(AbstractFile file) { - List actions = new ArrayList<>(); - actions.add(new ViewContextAction("View File in Directory", file)); - // RJCTODO - return actions; } } \ No newline at end of file