Modified DataModelActionsFactory to deal with artifact source content

This commit is contained in:
Richard Cordovano 2013-11-10 20:03:51 -05:00
parent b82816009e
commit a537d0457b
3 changed files with 39 additions and 36 deletions

View File

@ -18,7 +18,6 @@
*/ */
package org.sleuthkit.autopsy.datamodel; package org.sleuthkit.autopsy.datamodel;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -76,7 +75,7 @@ public class BlackboardArtifactTagNode extends DisplayableItemNode {
@Override @Override
public Action[] getActions(boolean context) { public Action[] getActions(boolean context) {
List<Action> actions = DataModelActionsFactory.getActions(tag.getContent()); // RJCTODO: Get extra stuff from Tags List<Action> actions = DataModelActionsFactory.getActions(tag.getContent(), true);
actions.add(null); // Adds a menu item separator. actions.add(null); // Adds a menu item separator.
actions.add(DeleteBlackboardArtifactTagAction.getInstance()); actions.add(DeleteBlackboardArtifactTagAction.getInstance());
return actions.toArray(new Action[0]); return actions.toArray(new Action[0]);

View File

@ -19,7 +19,6 @@
package org.sleuthkit.autopsy.datamodel; package org.sleuthkit.autopsy.datamodel;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -75,7 +74,7 @@ public class ContentTagNode extends DisplayableItemNode {
@Override @Override
public Action[] getActions(boolean context) { public Action[] getActions(boolean context) {
List<Action> actions = DataModelActionsFactory.getActions(tag.getContent()); List<Action> actions = DataModelActionsFactory.getActions(tag.getContent(), false);
actions.add(null); // Adds a menu item separator. actions.add(null); // Adds a menu item separator.
actions.add(DeleteContentTagAction.getInstance()); actions.add(DeleteContentTagAction.getInstance());
return actions.toArray(new Action[0]); return actions.toArray(new Action[0]);

View File

@ -42,33 +42,33 @@ import org.sleuthkit.datamodel.VirtualDirectory;
* This class provides methods for creating sets of actions for data model objects. * This class provides methods for creating sets of actions for data model objects.
*/ */
class DataModelActionsFactory { class DataModelActionsFactory {
static List<Action> getActions(Content content) { static List<Action> getActions(Content content, boolean isArtifactSource) {
if (content instanceof File) { if (content instanceof File) {
return getActions((File)content); return getActions((File)content, isArtifactSource);
} }
else if (content instanceof LayoutFile) { else if (content instanceof LayoutFile) {
return getActions((LayoutFile)content); return getActions((LayoutFile)content, isArtifactSource);
} }
else if (content instanceof Directory) { else if (content instanceof Directory) {
return getActions((Directory)content); return getActions((Directory)content, isArtifactSource);
} }
else if (content instanceof VirtualDirectory) { else if (content instanceof VirtualDirectory) {
return getActions((VirtualDirectory)content); return getActions((VirtualDirectory)content, isArtifactSource);
} }
else if (content instanceof LocalFile) { else if (content instanceof LocalFile) {
return getActions((LocalFile)content); return getActions((LocalFile)content, isArtifactSource);
} }
else if (content instanceof DerivedFile) { else if (content instanceof DerivedFile) {
return getActions((DerivedFile)content); return getActions((DerivedFile)content, isArtifactSource);
} }
else { else {
return new ArrayList<>(); return new ArrayList<>();
} }
} }
static List<Action> getActions(File file) { static List<Action> getActions(File file, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>(); List<Action> 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); final FileNode fileNode = new FileNode(file);
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", fileNode)); 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(new HashSearchAction("Search for files with the same MD5 hash", fileNode));
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(AddContentTagAction.getInstance()); actions.add(AddContentTagAction.getInstance());
actions.add(AddBlackboardArtifactTagAction.getInstance()); if (isArtifactSource) {
actions.add(AddBlackboardArtifactTagAction.getInstance());
}
actions.addAll(ContextMenuExtensionPoint.getActions()); actions.addAll(ContextMenuExtensionPoint.getActions());
return actions; return actions;
} }
static List<Action> getActions(LayoutFile file) { static List<Action> getActions(LayoutFile file, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>(); List<Action> 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); LayoutFileNode layoutFileNode = new LayoutFileNode(file);
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", layoutFileNode)); actions.add(new NewWindowViewAction("View in New Window", layoutFileNode));
@ -94,14 +96,16 @@ class DataModelActionsFactory {
actions.add(ExtractAction.getInstance());// actions.add(ExtractAction.getInstance());//
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(AddContentTagAction.getInstance()); actions.add(AddContentTagAction.getInstance());
actions.add(AddBlackboardArtifactTagAction.getInstance()); if (isArtifactSource) {
actions.add(AddBlackboardArtifactTagAction.getInstance());
}
actions.addAll(ContextMenuExtensionPoint.getActions()); actions.addAll(ContextMenuExtensionPoint.getActions());
return actions; return actions;
} }
static List<Action> getActions(Directory directory) { static List<Action> getActions(Directory directory, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>(); List<Action> 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); DirectoryNode directoryNode = new DirectoryNode(directory);
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", directoryNode)); actions.add(new NewWindowViewAction("View in New Window", directoryNode));
@ -110,14 +114,16 @@ class DataModelActionsFactory {
actions.add(ExtractAction.getInstance()); actions.add(ExtractAction.getInstance());
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(AddContentTagAction.getInstance()); 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 actions.addAll(ContextMenuExtensionPoint.getActions()); // RJCTODO: Separator should not be added by provider
return actions; return actions;
} }
static List<Action> getActions(VirtualDirectory directory) { static List<Action> getActions(VirtualDirectory directory, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>(); List<Action> 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); VirtualDirectoryNode directoryNode = new VirtualDirectoryNode(directory);
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", directoryNode)); actions.add(new NewWindowViewAction("View in New Window", directoryNode));
@ -126,14 +132,16 @@ class DataModelActionsFactory {
actions.add(ExtractAction.getInstance()); actions.add(ExtractAction.getInstance());
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(AddContentTagAction.getInstance()); actions.add(AddContentTagAction.getInstance());
actions.add(AddBlackboardArtifactTagAction.getInstance()); if (isArtifactSource) {
actions.add(AddBlackboardArtifactTagAction.getInstance());
}
actions.addAll(ContextMenuExtensionPoint.getActions()); actions.addAll(ContextMenuExtensionPoint.getActions());
return actions; return actions;
} }
static List<Action> getActions(LocalFile file) { static List<Action> getActions(LocalFile file, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>(); List<Action> 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); final LocalFileNode localFileNode = new LocalFileNode(file);
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", localFileNode)); actions.add(new NewWindowViewAction("View in New Window", localFileNode));
@ -142,14 +150,16 @@ class DataModelActionsFactory {
actions.add(ExtractAction.getInstance()); actions.add(ExtractAction.getInstance());
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(AddContentTagAction.getInstance()); actions.add(AddContentTagAction.getInstance());
actions.add(AddBlackboardArtifactTagAction.getInstance()); if (isArtifactSource) {
actions.add(AddBlackboardArtifactTagAction.getInstance());
}
actions.addAll(ContextMenuExtensionPoint.getActions()); actions.addAll(ContextMenuExtensionPoint.getActions());
return actions; return actions;
} }
static List<Action> getActions(DerivedFile file) { static List<Action> getActions(DerivedFile file, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>(); List<Action> 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); final LocalFileNode localFileNode = new LocalFileNode(file);
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", localFileNode)); actions.add(new NewWindowViewAction("View in New Window", localFileNode));
@ -158,15 +168,10 @@ class DataModelActionsFactory {
actions.add(ExtractAction.getInstance()); actions.add(ExtractAction.getInstance());
actions.add(null); // creates a menu separator actions.add(null); // creates a menu separator
actions.add(AddContentTagAction.getInstance()); actions.add(AddContentTagAction.getInstance());
actions.add(AddBlackboardArtifactTagAction.getInstance()); if (isArtifactSource) {
actions.add(AddBlackboardArtifactTagAction.getInstance());
}
actions.addAll(ContextMenuExtensionPoint.getActions()); actions.addAll(ContextMenuExtensionPoint.getActions());
return actions; return actions;
}
static List<Action> getActions(AbstractFile file) {
List<Action> actions = new ArrayList<>();
actions.add(new ViewContextAction("View File in Directory", file));
// RJCTODO
return actions;
} }
} }