make DataResultFilterChildren into a ChildFactory

This commit is contained in:
millmanorama 2017-03-13 14:49:41 +01:00
parent 8ad946efd4
commit cee2cb8b1f

View File

@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.directorytree;
import java.awt.event.ActionEvent;
import java.beans.PropertyVetoException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.prefs.PreferenceChangeEvent;
@ -29,6 +30,7 @@ import javax.swing.AbstractAction;
import javax.swing.Action;
import org.openide.explorer.ExplorerManager;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.ChildFactory;
import org.openide.nodes.FilterNode;
import org.openide.nodes.Node;
import org.openide.nodes.Sheet;
@ -109,7 +111,7 @@ public class DataResultFilterNode extends FilterNode {
* @param em ExplorerManager for component that is creating the node
*/
public DataResultFilterNode(Node node, ExplorerManager em) {
super(node, new DataResultFilterChildren(node, em));
super(node, Children.create(new DataResultFilterChildren(node, em), true));
this.sourceEm = em;
}
@ -119,8 +121,8 @@ public class DataResultFilterNode extends FilterNode {
* @param node Root node to be passed to DataResult viewers
* @param em ExplorerManager for component that is creating the node
*/
private DataResultFilterNode(Node node, ExplorerManager em, boolean filterKnown, boolean filterSlack) {
super(node, new DataResultFilterChildren(node, em, filterKnown, filterSlack));
private DataResultFilterNode(Node node, ExplorerManager em, boolean filterKnown, boolean filterSlack) {
super(node, Children.create(new DataResultFilterChildren(node, em, filterKnown, filterSlack), true));
this.sourceEm = em;
}
@ -194,18 +196,20 @@ public class DataResultFilterNode extends FilterNode {
* DataResultFilterNode that created in the DataResultFilterNode.java.
*
*/
private static class DataResultFilterChildren extends FilterNode.Children {
private static class DataResultFilterChildren extends ChildFactory<Node> {
private final ExplorerManager sourceEm;
private final ExplorerManager sourceEm;
private boolean filterKnown;
private boolean filterSlack;
private final Node parent;
/**
* the constructor
*/
private DataResultFilterChildren(Node arg, ExplorerManager sourceEm) {
super(arg);
private DataResultFilterChildren(Node arg, ExplorerManager sourceEm) {
super();
this.parent = arg;
switch (SelectionContext.getSelectionContext(arg)) {
case DATA_SOURCES:
filterSlack = filterSlackFromDataSources;
@ -223,24 +227,33 @@ public class DataResultFilterNode extends FilterNode {
this.sourceEm = sourceEm;
}
private DataResultFilterChildren(Node arg, ExplorerManager sourceEm, boolean filterKnown, boolean filterSlack) {
super(arg);
private DataResultFilterChildren(Node arg, ExplorerManager sourceEm, boolean filterKnown, boolean filterSlack) {
super();
this.parent = arg;
this.filterKnown = filterKnown;
this.filterSlack = filterSlack;
this.sourceEm = sourceEm;
}
@Override
protected Node[] createNodes(Node key) {
protected boolean createKeys(List<Node> list) {
list.addAll(Arrays.asList(parent.getChildren().getNodes()));
return true;
}
@Override
protected Node[] createNodesForKey(Node key) {
AbstractFile file = key.getLookup().lookup(AbstractFile.class);
if (file != null) {
if (filterKnown && (file.getKnown() == TskData.FileKnown.KNOWN)) {
// Filter out child nodes that represent known files
return new Node[]{};
return null;
}
if (filterSlack && file.getType().equals(TskData.TSK_DB_FILES_TYPE_ENUM.SLACK)) {
// Filter out child nodes that represent slack files
return new Node[]{};
return null;
}
}
return new Node[]{new DataResultFilterNode(key, sourceEm, filterKnown, filterSlack)};
@ -338,8 +351,7 @@ public class DataResultFilterNode extends FilterNode {
public List<Action> visit(FileTypesNode fileTypes) {
return defaultVisit(fileTypes);
}
@Override
protected List<Action> defaultVisit(DisplayableItemNode ditem) {
//preserve the default node's actions
@ -431,14 +443,12 @@ public class DataResultFilterNode extends FilterNode {
protected AbstractAction defaultVisit(DisplayableItemNode c) {
return openChild(c);
}
@Override
public AbstractAction visit(FileTypesNode fileTypes) {
return openChild(fileTypes);
}
/**
* Tell the originating ExplorerManager to display the given
* dataModelNode.