From 5aca89c0713aa2274063a5c0bc81cbd24743cd7b Mon Sep 17 00:00:00 2001 From: Jeff Wallace Date: Fri, 4 Oct 2013 17:35:08 -0400 Subject: [PATCH 1/2] Fixed if statement logic. --- .../sleuthkit/autopsy/corecomponents/DataResultViewerTable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java index ba68cf7a69..3610ead192 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java @@ -481,7 +481,7 @@ public class DataResultViewerTable extends AbstractDataResultViewer { private boolean reload = false; @Override public void childrenAdded(NodeMemberEvent nme) { - if (reload = true) { + if (reload) { setupTable(nme.getNode()); reload = false; } From 50b86dae42b39c807e3cafaf8fd3a41a5f935d35 Mon Sep 17 00:00:00 2001 From: Jeff Wallace Date: Mon, 7 Oct 2013 11:23:02 -0400 Subject: [PATCH 2/2] Fixed redundant calls --- .../corecomponents/DataResultPanel.java | 28 ++++++++++++------ .../corecomponents/DataResultViewerTable.java | 29 +++++++++++++------ 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java index f7a72f2fbd..6835a1e435 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java @@ -358,6 +358,7 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C this.rootNode = selectedNode; if (this.rootNode != null) { + dummyNodeListener.reset(); this.rootNode.addNodeListener(dummyNodeListener); } @@ -612,23 +613,32 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C private class DummyNodeListener implements NodeListener { private static final String DUMMY_NODE_DISPLAY_NAME = "Please Wait..."; - private boolean reload = false; + private volatile boolean load = true; + + public void reset() { + load = true; + } @Override - public void childrenAdded(final NodeMemberEvent nme) { - if (reload) { + public void childrenAdded(NodeMemberEvent nme) { + Node[] delta = nme.getDelta(); + if (load && containsReal(delta)) { + load = false; setupTabs(nme.getNode()); - reload = false; } } + + private boolean containsReal(Node[] delta) { + for (Node n : delta) { + if (!n.getDisplayName().equals(DUMMY_NODE_DISPLAY_NAME)) { + return true; + } + } + return false; + } @Override public void childrenRemoved(NodeMemberEvent nme) { - Node removed = nme.getNode(); - if (removed.getDisplayName().equals(DUMMY_NODE_DISPLAY_NAME)) { - // set up tabs if the node removed is a waiting node - reload = false; - } } @Override diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java index 3610ead192..ab8d52fed8 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java @@ -243,8 +243,7 @@ public class DataResultViewerTable extends AbstractDataResultViewer { this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); try { boolean hasChildren = false; - - + if (selectedNode != null) { hasChildren = selectedNode.getChildren().getNodesCount() > 0; } @@ -257,6 +256,7 @@ public class DataResultViewerTable extends AbstractDataResultViewer { // if there's no selection node, do nothing if (hasChildren) { Node root = selectedNode; + dummyNodeListener.reset(); root.addNodeListener(dummyNodeListener); setupTable(root); } else { @@ -478,21 +478,32 @@ public class DataResultViewerTable extends AbstractDataResultViewer { private class DummyNodeListener implements NodeListener { private static final String DUMMY_NODE_DISPLAY_NAME = "Please Wait..."; - private boolean reload = false; + private volatile boolean load = true; + + public void reset() { + load = true; + } + @Override public void childrenAdded(NodeMemberEvent nme) { - if (reload) { + Node[] delta = nme.getDelta(); + if (load && containsReal(delta)) { + load = false; setupTable(nme.getNode()); - reload = false; } } + + private boolean containsReal(Node[] delta) { + for (Node n : delta) { + if (!n.getDisplayName().equals(DUMMY_NODE_DISPLAY_NAME)) { + return true; + } + } + return false; + } @Override public void childrenRemoved(NodeMemberEvent nme) { - Node removed = nme.getNode(); - if (removed.getDisplayName().equals(DUMMY_NODE_DISPLAY_NAME)) { - reload = true; - } } @Override