fix DataResultViewerTable to support tree view. Wrapping of nodes needs to happen earlier if want to filter children out from the view.

This commit is contained in:
adam-m 2011-12-27 15:23:30 -05:00
parent c33608d61f
commit 0388bfd065
5 changed files with 51 additions and 11 deletions

View File

@ -152,9 +152,12 @@ public class DataResultViewerTable extends AbstractDataResultViewer {
if (hasChildren) { if (hasChildren) {
Node root = selectedNode; Node root = selectedNode;
if (!(root instanceof TableFilterNode)) { //wrap to filter out children
root = new TableFilterNode(root, true); //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); em.setRootContext(root);

View File

@ -27,7 +27,7 @@ import org.openide.nodes.Node;
* *
* @author jantonius * @author jantonius
*/ */
class TableFilterNode extends FilterNode { public class TableFilterNode extends FilterNode {
private boolean createChild; private boolean createChild;

View File

@ -45,6 +45,7 @@ import org.openide.nodes.Children;
import org.openide.nodes.Node; import org.openide.nodes.Node;
import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.Case;
import org.sleuthkit.autopsy.corecomponents.DataResultTopComponent; import org.sleuthkit.autopsy.corecomponents.DataResultTopComponent;
import org.sleuthkit.autopsy.corecomponents.TableFilterNode;
import org.sleuthkit.autopsy.datamodel.ContentUtils; import org.sleuthkit.autopsy.datamodel.ContentUtils;
import org.sleuthkit.autopsy.datamodel.DataConversion; import org.sleuthkit.autopsy.datamodel.DataConversion;
import org.sleuthkit.autopsy.datamodel.RootContentChildren; 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.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); String path = DataConversion.getformattedPath(ContentUtils.getDisplayPath(originNode.getLookup().lookup(Content.class)), 0);
DirectoryTreeTopComponent.this.dataResult.setPath(path); DirectoryTreeTopComponent.this.dataResult.setPath(path);

View File

@ -97,7 +97,7 @@ public class KeywordSearchDataExplorer implements DataExplorer {
if (rq.validate()) { if (rq.validate()) {
rq.execute(); rq.execute();
} else { } else {
displayErrorDialog("Invalid RegEx query: " + regexQuery); displayErrorDialog("Invalid RegEx query syntax: " + regexQuery);
} }
} }

View File

@ -101,15 +101,14 @@ public class RegexQuery implements KeywordSearchQuery {
Collection<KeyValueThing> things = new ArrayList<KeyValueThing>(); Collection<KeyValueThing> things = new ArrayList<KeyValueThing>();
Iterator<Term> it = terms.iterator(); Iterator<Term> it = terms.iterator();
int termID = 1; int termID = 0;
long totalMatches = 0; long totalMatches = 0;
while (it.hasNext()) { while (it.hasNext()) {
Term term = it.next(); Term term = it.next();
Map<String, Object> kvs = new LinkedHashMap<String, Object>(); Map<String, Object> kvs = new LinkedHashMap<String, Object>();
//kvs.put("RegEx Match", term.getTerm());
long matches = term.getFrequency(); long matches = term.getFrequency();
kvs.put("#files", matches); kvs.put("#hits", matches);
things.add(new KeyValueThing(term.getTerm(), kvs, termID)); things.add(new KeyValueThing(term.getTerm(), kvs, ++termID));
totalMatches += matches; totalMatches += matches;
} }
@ -145,7 +144,42 @@ public class RegexQuery implements KeywordSearchQuery {
@Override @Override
protected Node createNodeForKey(KeyValueThing thing) { 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<KeyValueThing> {
private KeyValueThing thing;
RegexResultDetailsChildFactory(KeyValueThing thing) {
this.thing = thing;
}
@Override
protected boolean createKeys(List<KeyValueThing> toPopulate) {
//query
Map<String,Object> map = new LinkedHashMap<String,Object>();
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;
}
} }
} }