mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-18 18:47:43 +00:00
first pass at reimplementing common search results with CommonSearchNode
This commit is contained in:
parent
b42966c8fb
commit
0e19f28958
@ -22,9 +22,7 @@ import java.util.List;
|
|||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
import org.openide.nodes.Children;
|
import org.openide.nodes.Children;
|
||||||
import org.openide.nodes.Node;
|
import org.openide.nodes.Node;
|
||||||
import org.sleuthkit.autopsy.datamodel.FileNode;
|
import org.sleuthkit.autopsy.datamodel.CommonFileNode;
|
||||||
import org.sleuthkit.autopsy.directorytree.DataResultFilterNode;
|
|
||||||
import org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Makes nodes for common files search results.
|
* Makes nodes for common files search results.
|
||||||
@ -41,7 +39,7 @@ final class CommonFilesChildren extends Children.Keys<AbstractFile> {
|
|||||||
Node[] node = new Node[1];
|
Node[] node = new Node[1];
|
||||||
|
|
||||||
//TODO replace FileNode with our own subclass of its base type or similar (use CommonFileNode once its finished)
|
//TODO replace FileNode with our own subclass of its base type or similar (use CommonFileNode once its finished)
|
||||||
node[0] = new DataResultFilterNode(new FileNode(t, false), DirectoryTreeTopComponent.findInstance().getExplorerManager());
|
node[0] = new CommonFileNode(t);
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,15 +23,12 @@ import java.awt.event.ActionListener;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.JOptionPane;
|
|
||||||
import javax.swing.SwingWorker;
|
import javax.swing.SwingWorker;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.openide.windows.TopComponent;
|
import org.openide.windows.TopComponent;
|
||||||
import org.openide.windows.WindowManager;
|
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||||
import org.sleuthkit.autopsy.corecomponents.DataResultTopComponent;
|
import org.sleuthkit.autopsy.corecomponents.DataResultTopComponent;
|
||||||
import org.sleuthkit.autopsy.corecomponents.TableFilterNode;
|
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
@ -105,13 +102,10 @@ public final class CommonFilesPanel extends javax.swing.JPanel {
|
|||||||
|
|
||||||
CommonFilesSearchNode contentFilesNode = new CommonFilesSearchNode(contentList);
|
CommonFilesSearchNode contentFilesNode = new CommonFilesSearchNode(contentList);
|
||||||
|
|
||||||
//TODO can use DataResultFilterNode in addition to TableFilterNode
|
|
||||||
TableFilterNode tableFilterNode = new TableFilterNode(contentFilesNode, true, contentFilesNode.getName());
|
|
||||||
|
|
||||||
TopComponent component = DataResultTopComponent.createInstance(
|
TopComponent component = DataResultTopComponent.createInstance(
|
||||||
title,
|
title,
|
||||||
pathText,
|
pathText,
|
||||||
tableFilterNode,
|
contentFilesNode,
|
||||||
contentList.size());
|
contentList.size());
|
||||||
|
|
||||||
component.requestActive(); // make it the active top component
|
component.requestActive(); // make it the active top component
|
||||||
|
@ -18,9 +18,13 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.datamodel;
|
package org.sleuthkit.autopsy.datamodel;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openide.nodes.AbstractNode;
|
import org.openide.nodes.AbstractNode;
|
||||||
import org.openide.nodes.Children;
|
import org.openide.nodes.Children;
|
||||||
import org.openide.nodes.Sheet;
|
import org.openide.nodes.Sheet;
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,12 +32,66 @@ import org.sleuthkit.datamodel.AbstractFile;
|
|||||||
*/
|
*/
|
||||||
public class CommonFileNode extends AbstractNode {
|
public class CommonFileNode extends AbstractNode {
|
||||||
|
|
||||||
|
private final AbstractFile content;
|
||||||
|
|
||||||
public CommonFileNode(AbstractFile fsContent) {
|
public CommonFileNode(AbstractFile fsContent) {
|
||||||
super(Children.LEAF);
|
super(Children.LEAF);
|
||||||
|
this.content = fsContent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Sheet createSheet() {
|
protected Sheet createSheet() {
|
||||||
return null; //TODO
|
Sheet s = super.createSheet();
|
||||||
|
Sheet.Set ss = s.get(Sheet.PROPERTIES);
|
||||||
|
if (ss == null) {
|
||||||
|
ss = Sheet.createPropertiesSet();
|
||||||
|
s.put(ss);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Object> map = new LinkedHashMap<>();
|
||||||
|
fillPropertyMap(map, content);
|
||||||
|
|
||||||
|
final String NO_DESCR = Bundle.AbstractFsContentNode_noDesc_text();
|
||||||
|
for (CommonFilePropertyType propType : CommonFilePropertyType.values()) {
|
||||||
|
final String propString = propType.toString();
|
||||||
|
ss.put(new NodeProperty<>(propString, propString, NO_DESCR, map.get(propString)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// add tags property to the sheet
|
||||||
|
//addTagProperty(ss);
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fill map with AbstractFile properties
|
||||||
|
*
|
||||||
|
* @param map map with preserved ordering, where property names/values
|
||||||
|
* are put
|
||||||
|
* @param content The content to get properties for.
|
||||||
|
*/
|
||||||
|
static public void fillPropertyMap(Map<String, Object> map, AbstractFile content) {
|
||||||
|
map.put(CommonFilePropertyType.Name.toString(), content.getName());
|
||||||
|
map.put(CommonFilePropertyType.Md5Hash.toString(), StringUtils.defaultString(content.getMd5Hash()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@NbBundle.Messages({
|
||||||
|
"CommonFilePropertyType.nameColLbl=Name",
|
||||||
|
"CommonFilePropertyType.md5HashColLbl=MD5 Hash"})
|
||||||
|
public enum CommonFilePropertyType {
|
||||||
|
|
||||||
|
Name(Bundle.CommonFilePropertyType_nameColLbl()),
|
||||||
|
Md5Hash(Bundle.CommonFilePropertyType_md5HashColLbl());
|
||||||
|
|
||||||
|
final private String displayString;
|
||||||
|
|
||||||
|
private CommonFilePropertyType(String displayString){
|
||||||
|
this.displayString = displayString;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return displayString;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user