From 1445da7503f82fe3c67e454c2b7900305a6ce52c Mon Sep 17 00:00:00 2001 From: Oliver Spohngellert Date: Tue, 31 May 2016 13:06:51 -0400 Subject: [PATCH 1/5] Made run ingest modules dialog accessable via directory listing. --- .../autopsy/datamodel/ImageNode.java | 61 +++++++++++++++++-- .../datamodel/VirtualDirectoryNode.java | 57 ++++++++++++++++- 2 files changed, 113 insertions(+), 5 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java index 4a822aec09..634d0fc114 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java @@ -18,15 +18,25 @@ */ package org.sleuthkit.autopsy.datamodel; +import java.awt.event.ActionEvent; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import javax.swing.AbstractAction; import javax.swing.Action; import org.openide.nodes.Sheet; import org.openide.util.NbBundle; +import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.directorytree.ExplorerNodeActionVisitor; +import org.sleuthkit.autopsy.directorytree.ExtractAction; import org.sleuthkit.autopsy.directorytree.FileSearchAction; import org.sleuthkit.autopsy.directorytree.NewWindowViewAction; +import org.sleuthkit.autopsy.ingest.RunIngestModulesDialog; +import org.sleuthkit.datamodel.Content; +import org.sleuthkit.datamodel.Directory; import org.sleuthkit.datamodel.Image; +import org.sleuthkit.datamodel.TskCoreException; +import org.sleuthkit.datamodel.VirtualDirectory; /** * This class is used to represent the "Node" for the image. The children of @@ -66,15 +76,58 @@ public class ImageNode extends AbstractContentNode { * @return */ @Override + @Messages({"ImageNode.action.runIngestMods.text=Run Ingest Modules", + "ImageNode.action.openFileSrcByAttr.text=Open File Search by Attributes",}) public Action[] getActions(boolean context) { + List actionsList = new ArrayList(); + actionsList.addAll(ExplorerNodeActionVisitor.getActions(content)); + actionsList.add(new FileSearchAction( + NbBundle.getMessage(this.getClass(), "ImageNode.getActions.openFileSearchByAttr.text"))); + + //extract dir action + Directory dir = this.getLookup().lookup(Directory.class); + if (dir != null) { + actionsList.add(ExtractAction.getInstance()); + actionsList.add(new AbstractAction( + Bundle.ImageNode_action_runIngestMods_text()) { + @Override + public void actionPerformed(ActionEvent e) { + final RunIngestModulesDialog ingestDialog = new RunIngestModulesDialog(dir); + ingestDialog.display(); + } + }); + } + final Image img = this.getLookup().lookup(Image.class); + + VirtualDirectory virtualDirectory = this.getLookup().lookup(VirtualDirectory.class); + // determine if the virtualDireory is at root-level (Logical File Set). + boolean isRootVD = false; + if (virtualDirectory != null) { + try { + if (virtualDirectory.getParent() == null) { + isRootVD = true; + } + } catch (TskCoreException ex) { + //logger.log(Level.WARNING, "Error determining the parent of the virtual directory", ex); // NON-NLS + } + } + + // 'run ingest' action and 'file search' action are added only if the + // selected node is img node or a root level virtual directory. + if (img != null || isRootVD) { + actionsList.add(new AbstractAction( + Bundle.ImageNode_action_runIngestMods_text()) { + @Override + public void actionPerformed(ActionEvent e) { + final RunIngestModulesDialog ingestDialog = new RunIngestModulesDialog(Collections.singletonList(content)); + ingestDialog.display(); + } + }); + } actionsList.add(new NewWindowViewAction( NbBundle.getMessage(this.getClass(), "ImageNode.getActions.viewInNewWin.text"), this)); - actionsList.add(new FileSearchAction( - NbBundle.getMessage(this.getClass(), "ImageNode.getActions.openFileSearchByAttr.text"))); - actionsList.addAll(ExplorerNodeActionVisitor.getActions(content)); - return actionsList.toArray(new Action[0]); } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java index f908251d28..c5ad17d65c 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java @@ -18,19 +18,28 @@ */ package org.sleuthkit.autopsy.datamodel; +import java.awt.event.ActionEvent; import java.util.ArrayList; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import javax.swing.AbstractAction; import javax.swing.Action; import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.directorytree.ExtractAction; +import org.sleuthkit.autopsy.directorytree.FileSearchAction; import org.sleuthkit.autopsy.directorytree.NewWindowViewAction; -import org.sleuthkit.datamodel.VirtualDirectory; +import org.sleuthkit.autopsy.ingest.RunIngestModulesDialog; +import org.sleuthkit.datamodel.Content; +import org.sleuthkit.datamodel.Directory; +import org.sleuthkit.datamodel.Image; +import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.datamodel.TskData; +import org.sleuthkit.datamodel.VirtualDirectory; /** * Node for layout dir @@ -73,8 +82,54 @@ public class VirtualDirectoryNode extends AbstractAbstractFileNode actions = new ArrayList<>(); + if (this.content.isDataSource()) { + //extract dir action + Directory dir = this.getLookup().lookup(Directory.class); + if (dir != null) { + actions.add(ExtractAction.getInstance()); + actions.add(new AbstractAction( + Bundle.VirtualDirectoryNode_action_runIngestMods_text()) { + @Override + public void actionPerformed(ActionEvent e) { + final RunIngestModulesDialog ingestDialog = new RunIngestModulesDialog(dir); + ingestDialog.display(); + } + }); + } + final Image img = this.getLookup().lookup(Image.class); + + VirtualDirectory virtualDirectory = this.getLookup().lookup(VirtualDirectory.class); + // determine if the virtualDireory is at root-level (Logical File Set). + boolean isRootVD = false; + if (virtualDirectory != null) { + try { + if (virtualDirectory.getParent() == null) { + isRootVD = true; + } + } catch (TskCoreException ex) { + //logger.log(Level.WARNING, "Error determining the parent of the virtual directory", ex); // NON-NLS + } + } + + // 'run ingest' action and 'file search' action are added only if the + // selected node is img node or a root level virtual directory. + if (img != null || isRootVD) { + actions.add(new FileSearchAction( + Bundle.VirtualDirectoryNode_action_openFileSrcByAttr_text())); + actions.add(new AbstractAction( + Bundle.VirtualDirectoryNode_action_runIngestMods_text()) { + @Override + public void actionPerformed(ActionEvent e) { + final RunIngestModulesDialog ingestDialog = new RunIngestModulesDialog(Collections.singletonList(content)); + ingestDialog.display(); + } + }); + } + } actions.add(new NewWindowViewAction( NbBundle.getMessage(this.getClass(), "VirtualDirectoryNode.getActions.viewInNewWin.text"), this)); actions.add(null); // creates a menu separator From 31857d846fd40d69c45a8fa3521c8a6f57fbd59c Mon Sep 17 00:00:00 2001 From: Oliver Spohngellert Date: Tue, 7 Jun 2016 14:07:37 -0400 Subject: [PATCH 2/5] Made adding run ingest modules more efficient. --- .../autopsy/datamodel/ImageNode.java | 51 +++------------- .../datamodel/VirtualDirectoryNode.java | 60 ++++--------------- 2 files changed, 20 insertions(+), 91 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java index 634d0fc114..c3004fdee2 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java @@ -28,15 +28,11 @@ import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.directorytree.ExplorerNodeActionVisitor; -import org.sleuthkit.autopsy.directorytree.ExtractAction; import org.sleuthkit.autopsy.directorytree.FileSearchAction; import org.sleuthkit.autopsy.directorytree.NewWindowViewAction; import org.sleuthkit.autopsy.ingest.RunIngestModulesDialog; import org.sleuthkit.datamodel.Content; -import org.sleuthkit.datamodel.Directory; import org.sleuthkit.datamodel.Image; -import org.sleuthkit.datamodel.TskCoreException; -import org.sleuthkit.datamodel.VirtualDirectory; /** * This class is used to represent the "Node" for the image. The children of @@ -84,47 +80,14 @@ public class ImageNode extends AbstractContentNode { actionsList.addAll(ExplorerNodeActionVisitor.getActions(content)); actionsList.add(new FileSearchAction( NbBundle.getMessage(this.getClass(), "ImageNode.getActions.openFileSearchByAttr.text"))); - - //extract dir action - Directory dir = this.getLookup().lookup(Directory.class); - if (dir != null) { - actionsList.add(ExtractAction.getInstance()); - actionsList.add(new AbstractAction( - Bundle.ImageNode_action_runIngestMods_text()) { - @Override - public void actionPerformed(ActionEvent e) { - final RunIngestModulesDialog ingestDialog = new RunIngestModulesDialog(dir); - ingestDialog.display(); - } - }); - } - final Image img = this.getLookup().lookup(Image.class); - - VirtualDirectory virtualDirectory = this.getLookup().lookup(VirtualDirectory.class); - // determine if the virtualDireory is at root-level (Logical File Set). - boolean isRootVD = false; - if (virtualDirectory != null) { - try { - if (virtualDirectory.getParent() == null) { - isRootVD = true; - } - } catch (TskCoreException ex) { - //logger.log(Level.WARNING, "Error determining the parent of the virtual directory", ex); // NON-NLS + actionsList.add(new AbstractAction( + Bundle.ImageNode_action_runIngestMods_text()) { + @Override + public void actionPerformed(ActionEvent e) { + final RunIngestModulesDialog ingestDialog = new RunIngestModulesDialog(Collections.singletonList(content)); + ingestDialog.display(); } - } - - // 'run ingest' action and 'file search' action are added only if the - // selected node is img node or a root level virtual directory. - if (img != null || isRootVD) { - actionsList.add(new AbstractAction( - Bundle.ImageNode_action_runIngestMods_text()) { - @Override - public void actionPerformed(ActionEvent e) { - final RunIngestModulesDialog ingestDialog = new RunIngestModulesDialog(Collections.singletonList(content)); - ingestDialog.display(); - } - }); - } + }); actionsList.add(new NewWindowViewAction( NbBundle.getMessage(this.getClass(), "ImageNode.getActions.viewInNewWin.text"), this)); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java index c5ad17d65c..c60b44c533 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java @@ -35,9 +35,6 @@ import org.sleuthkit.autopsy.directorytree.FileSearchAction; import org.sleuthkit.autopsy.directorytree.NewWindowViewAction; import org.sleuthkit.autopsy.ingest.RunIngestModulesDialog; import org.sleuthkit.datamodel.Content; -import org.sleuthkit.datamodel.Directory; -import org.sleuthkit.datamodel.Image; -import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.datamodel.TskData; import org.sleuthkit.datamodel.VirtualDirectory; @@ -83,58 +80,27 @@ public class VirtualDirectoryNode extends AbstractAbstractFileNode actions = new ArrayList<>(); - if (this.content.isDataSource()) { - //extract dir action - Directory dir = this.getLookup().lookup(Directory.class); - if (dir != null) { - actions.add(ExtractAction.getInstance()); - actions.add(new AbstractAction( - Bundle.VirtualDirectoryNode_action_runIngestMods_text()) { - @Override - public void actionPerformed(ActionEvent e) { - final RunIngestModulesDialog ingestDialog = new RunIngestModulesDialog(dir); - ingestDialog.display(); - } - }); - } - final Image img = this.getLookup().lookup(Image.class); - VirtualDirectory virtualDirectory = this.getLookup().lookup(VirtualDirectory.class); - // determine if the virtualDireory is at root-level (Logical File Set). - boolean isRootVD = false; - if (virtualDirectory != null) { - try { - if (virtualDirectory.getParent() == null) { - isRootVD = true; - } - } catch (TskCoreException ex) { - //logger.log(Level.WARNING, "Error determining the parent of the virtual directory", ex); // NON-NLS - } - } - - // 'run ingest' action and 'file search' action are added only if the - // selected node is img node or a root level virtual directory. - if (img != null || isRootVD) { - actions.add(new FileSearchAction( - Bundle.VirtualDirectoryNode_action_openFileSrcByAttr_text())); - actions.add(new AbstractAction( - Bundle.VirtualDirectoryNode_action_runIngestMods_text()) { - @Override - public void actionPerformed(ActionEvent e) { - final RunIngestModulesDialog ingestDialog = new RunIngestModulesDialog(Collections.singletonList(content)); - ingestDialog.display(); - } - }); - } - } actions.add(new NewWindowViewAction( NbBundle.getMessage(this.getClass(), "VirtualDirectoryNode.getActions.viewInNewWin.text"), this)); actions.add(null); // creates a menu separator actions.add(ExtractAction.getInstance()); actions.add(null); // creates a menu separator + actions.add(new FileSearchAction( + Bundle.VirtualDirectoryNode_action_openFileSrcByAttr_text())); + if (this.content.isDataSource()) { + actions.add(new AbstractAction( + Bundle.VirtualDirectoryNode_action_runIngestMods_text()) { + @Override + public void actionPerformed(ActionEvent e) { + final RunIngestModulesDialog ingestDialog = new RunIngestModulesDialog(Collections.singletonList(content)); + ingestDialog.display(); + } + }); + } actions.addAll(ContextMenuExtensionPoint.getActions()); return actions.toArray(new Action[0]); } From 4d853d427607d3d459cc7f1af31494d3cf8330a1 Mon Sep 17 00:00:00 2001 From: Oliver Spohngellert Date: Tue, 7 Jun 2016 16:15:13 -0400 Subject: [PATCH 3/5] Fixed localization. --- .../src/org/sleuthkit/autopsy/datamodel/Bundle.properties | 1 - Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java | 4 ++-- .../sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java | 8 ++++---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties index 8f1a007aab..b8e7fa071f 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties @@ -147,7 +147,6 @@ HashsetHits.createSheet.name.name=Name HashsetHits.createSheet.name.displayName=Name HashsetHits.createSheet.name.desc=no description ImageNode.getActions.viewInNewWin.text=View in New Window -ImageNode.getActions.openFileSearchByAttr.text=Open File Search by Attributes ImageNode.createSheet.name.name=Name ImageNode.createSheet.name.displayName=Name ImageNode.createSheet.name.desc=no description diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java index c3004fdee2..2789005f9e 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java @@ -73,13 +73,13 @@ public class ImageNode extends AbstractContentNode { */ @Override @Messages({"ImageNode.action.runIngestMods.text=Run Ingest Modules", - "ImageNode.action.openFileSrcByAttr.text=Open File Search by Attributes",}) + "ImageNode.getActions.openFileSearchByAttr.text=Open File Search by Attributes",}) public Action[] getActions(boolean context) { List actionsList = new ArrayList(); actionsList.addAll(ExplorerNodeActionVisitor.getActions(content)); actionsList.add(new FileSearchAction( - NbBundle.getMessage(this.getClass(), "ImageNode.getActions.openFileSearchByAttr.text"))); + Bundle.ImageNode_getActions_openFileSearchByAttr_text())); actionsList.add(new AbstractAction( Bundle.ImageNode_action_runIngestMods_text()) { @Override diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java index c60b44c533..cedd7c95df 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java @@ -79,8 +79,7 @@ public class VirtualDirectoryNode extends AbstractAbstractFileNode actions = new ArrayList<>(); @@ -89,9 +88,10 @@ public class VirtualDirectoryNode extends AbstractAbstractFileNode Date: Wed, 8 Jun 2016 09:01:09 -0400 Subject: [PATCH 4/5] Merged upstream/develop. --- .../org/sleuthkit/autopsy/datamodel/ImageNode.java | 11 +---------- .../autopsy/datamodel/VirtualDirectoryNode.java | 12 ++---------- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java index f1ac9b3af3..b0a4a863cc 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ImageNode.java @@ -18,29 +18,20 @@ */ package org.sleuthkit.autopsy.datamodel; -<<<<<<< HEAD import java.awt.event.ActionEvent; -======= import java.sql.ResultSet; import java.sql.SQLException; ->>>>>>> upstream/develop import java.util.ArrayList; import java.util.Collections; import java.util.List; -<<<<<<< HEAD -import javax.swing.AbstractAction; -======= import java.util.logging.Level; ->>>>>>> upstream/develop +import javax.swing.AbstractAction; import javax.swing.Action; import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; -<<<<<<< HEAD -======= import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.coreutils.Logger; ->>>>>>> upstream/develop import org.sleuthkit.autopsy.directorytree.ExplorerNodeActionVisitor; import org.sleuthkit.autopsy.directorytree.FileSearchAction; import org.sleuthkit.autopsy.directorytree.NewWindowViewAction; diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java index ecc426d940..a77c247162 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java @@ -18,22 +18,17 @@ */ package org.sleuthkit.autopsy.datamodel; -<<<<<<< HEAD + import java.awt.event.ActionEvent; -======= import java.sql.ResultSet; import java.sql.SQLException; ->>>>>>> upstream/develop import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -<<<<<<< HEAD -import javax.swing.AbstractAction; -======= import java.util.logging.Level; ->>>>>>> upstream/develop +import javax.swing.AbstractAction; import javax.swing.Action; import org.openide.nodes.Sheet; import org.openide.util.NbBundle; @@ -44,13 +39,10 @@ import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.directorytree.ExtractAction; import org.sleuthkit.autopsy.directorytree.FileSearchAction; import org.sleuthkit.autopsy.directorytree.NewWindowViewAction; -<<<<<<< HEAD import org.sleuthkit.autopsy.ingest.RunIngestModulesDialog; import org.sleuthkit.datamodel.Content; -======= import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.TskCoreException; ->>>>>>> upstream/develop import org.sleuthkit.datamodel.TskData; import org.sleuthkit.datamodel.VirtualDirectory; From a4b2b5deaf9c9c5e3908a9d70e7b8817b35767e8 Mon Sep 17 00:00:00 2001 From: Oliver Spohngellert Date: Wed, 8 Jun 2016 11:49:22 -0400 Subject: [PATCH 5/5] Got rid of data source check. --- .../datamodel/VirtualDirectoryNode.java | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java index a77c247162..2b138219df 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/VirtualDirectoryNode.java @@ -18,7 +18,6 @@ */ package org.sleuthkit.autopsy.datamodel; - import java.awt.event.ActionEvent; import java.sql.ResultSet; import java.sql.SQLException; @@ -96,19 +95,16 @@ public class VirtualDirectoryNode extends AbstractAbstractFileNodesingletonList(content)); - ingestDialog.display(); - } - }); - } + actions.add(new AbstractAction( + Bundle.VirtualDirectoryNode_action_runIngestMods_text()) { + @Override + public void actionPerformed(ActionEvent e) { + final RunIngestModulesDialog ingestDialog = new RunIngestModulesDialog(Collections.singletonList(content)); + ingestDialog.display(); + } + }); actions.addAll(ContextMenuExtensionPoint.getActions()); return actions.toArray(new Action[0]); }