diff --git a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java index bedf96df7c..4f4c0dc5b6 100644 --- a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java +++ b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java @@ -152,9 +152,12 @@ public class DataResultViewerTable extends AbstractDataResultViewer { if (hasChildren) { Node root = selectedNode; - if (!(root instanceof TableFilterNode)) { - root = new TableFilterNode(root, true); - } + //wrap to filter out children + //note: this breaks the tree view mode in this generic viewer, + //so wrap nodes earlier if want 1 level view + //if (!(root instanceof TableFilterNode)) { + /// root = new TableFilterNode(root, true); + //} em.setRootContext(root); diff --git a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/TableFilterNode.java b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/TableFilterNode.java index 4db898654d..535d541a02 100644 --- a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/TableFilterNode.java +++ b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/TableFilterNode.java @@ -27,7 +27,7 @@ import org.openide.nodes.Node; * * @author jantonius */ -class TableFilterNode extends FilterNode { +public class TableFilterNode extends FilterNode { private boolean createChild; diff --git a/DirectoryTree/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/DirectoryTree/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index 3e87fd6531..d34c0294ca 100644 --- a/DirectoryTree/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/DirectoryTree/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -45,6 +45,7 @@ import org.openide.nodes.Children; import org.openide.nodes.Node; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.corecomponents.DataResultTopComponent; +import org.sleuthkit.autopsy.corecomponents.TableFilterNode; import org.sleuthkit.autopsy.datamodel.ContentUtils; import org.sleuthkit.autopsy.datamodel.DataConversion; import org.sleuthkit.autopsy.datamodel.RootContentChildren; @@ -555,7 +556,9 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat DirectoryTreeTopComponent.this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); } DirectoryTreeTopComponent.this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - DirectoryTreeTopComponent.this.dataResult.setNode(new DataResultFilterNode(originNode, DirectoryTreeTopComponent.this.em)); + //set node, wrap in filter node first to filter out children + Node drfn = new DataResultFilterNode(originNode, DirectoryTreeTopComponent.this.em); + DirectoryTreeTopComponent.this.dataResult.setNode(new TableFilterNode(drfn, true)); String path = DataConversion.getformattedPath(ContentUtils.getDisplayPath(originNode.getLookup().lookup(Content.class)), 0); DirectoryTreeTopComponent.this.dataResult.setPath(path); diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchDataExplorer.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchDataExplorer.java index 65995cbe30..e7e3323965 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchDataExplorer.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchDataExplorer.java @@ -97,7 +97,7 @@ public class KeywordSearchDataExplorer implements DataExplorer { if (rq.validate()) { rq.execute(); } else { - displayErrorDialog("Invalid RegEx query: " + regexQuery); + displayErrorDialog("Invalid RegEx query syntax: " + regexQuery); } } diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java index abf37e330f..5368eb7767 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java @@ -101,15 +101,14 @@ public class RegexQuery implements KeywordSearchQuery { Collection things = new ArrayList(); Iterator it = terms.iterator(); - int termID = 1; + int termID = 0; long totalMatches = 0; while (it.hasNext()) { Term term = it.next(); Map kvs = new LinkedHashMap(); - //kvs.put("RegEx Match", term.getTerm()); long matches = term.getFrequency(); - kvs.put("#files", matches); - things.add(new KeyValueThing(term.getTerm(), kvs, termID)); + kvs.put("#hits", matches); + things.add(new KeyValueThing(term.getTerm(), kvs, ++termID)); totalMatches += matches; } @@ -145,7 +144,42 @@ public class RegexQuery implements KeywordSearchQuery { @Override protected Node createNodeForKey(KeyValueThing thing) { - return new KeyValueNode(thing, Children.LEAF); + //return new KeyValueNode(thing, Children.LEAF); + return new KeyValueNode(thing, Children.create(new RegexResultDetailsChildFactory(thing), true)); + } + + + class RegexResultDetailsChildFactory extends ChildFactory { + + private KeyValueThing thing; + RegexResultDetailsChildFactory(KeyValueThing thing) { + this.thing = thing; + } + + @Override + protected boolean createKeys(List toPopulate) { + //query + Map map = new LinkedHashMap(); + map.put("#hits", -1); + KeyValueThing t = new KeyValueThing("TEST", map, 1); + //return toPopulate.addAll(things); + toPopulate.add(t); + return true; + } + + @Override + protected Node createNodeForKey(KeyValueThing thing) { + return new KeyValueNode(thing, Children.LEAF); + + } + + @Override + protected Node[] createNodesForKey(KeyValueThing thing) { + Node [] nodes = new Node[1]; + nodes[0] = new KeyValueNode(thing, Children.LEAF); + return nodes; + + } } }