From 95f748afc9f4c84f0053aabaaf2e4c5701e820a0 Mon Sep 17 00:00:00 2001 From: jmillman Date: Fri, 13 Jun 2014 14:09:33 -0400 Subject: [PATCH 1/2] auto select single result and show it in the content viewer. Fails on directories with current and parent listings --- .../autopsy/corecomponents/DataResultPanel.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java index 0a897a61c2..109bf54588 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java @@ -22,6 +22,7 @@ import java.awt.Cursor; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.beans.PropertyVetoException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -35,6 +36,7 @@ import org.openide.nodes.NodeEvent; import org.openide.nodes.NodeListener; import org.openide.nodes.NodeMemberEvent; import org.openide.nodes.NodeReorderEvent; +import org.openide.util.Exceptions; import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.casemodule.Case; @@ -390,6 +392,13 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C if (selectedNode != null) { int childrenCount = selectedNode.getChildren().getNodesCount(); this.numberMatchLabel.setText(Integer.toString(childrenCount)); + if (childrenCount == 1) { + try { + explorerManager.setSelectedNodes(selectedNode.getChildren().getNodes()); + } catch (PropertyVetoException ex) { + Exceptions.printStackTrace(ex); + } + } } this.numberMatchLabel.setVisible(true); } From ee3ced6ba9e86857bebbe0604a210aa2bfc72d28 Mon Sep 17 00:00:00 2001 From: jmillman Date: Fri, 13 Jun 2014 16:25:30 -0400 Subject: [PATCH 2/2] defer selection to ensure the new node is set as rootcontext first --- .../corecomponents/DataResultPanel.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java index 109bf54588..46095fb18a 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java @@ -36,7 +36,6 @@ import org.openide.nodes.NodeEvent; import org.openide.nodes.NodeListener; import org.openide.nodes.NodeMemberEvent; import org.openide.nodes.NodeReorderEvent; -import org.openide.util.Exceptions; import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.casemodule.Case; @@ -369,7 +368,7 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C } @Override - public void setNode(Node selectedNode) { + public void setNode(final Node selectedNode) { if (this.rootNode != null) { this.rootNode.removeNodeListener(dummyNodeListener); } @@ -392,12 +391,19 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C if (selectedNode != null) { int childrenCount = selectedNode.getChildren().getNodesCount(); this.numberMatchLabel.setText(Integer.toString(childrenCount)); + + //if there is only one child, select it to be displayed in the content viewer if (childrenCount == 1) { - try { - explorerManager.setSelectedNodes(selectedNode.getChildren().getNodes()); - } catch (PropertyVetoException ex) { - Exceptions.printStackTrace(ex); - } + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + try { + explorerManager.setSelectedNodes(selectedNode.getChildren().getNodes()); + } catch (PropertyVetoException ex) { + logger.log(Level.INFO, "node selection vetoed"); + } + } + }); } } this.numberMatchLabel.setVisible(true);