mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-17 10:17:41 +00:00
inital commit with a message of a merge from my other branch
This commit is contained in:
parent
01ec2f56af
commit
806eb76f7f
@ -27,7 +27,6 @@ import org.openide.nodes.Children;
|
|||||||
import org.openide.nodes.Node;
|
import org.openide.nodes.Node;
|
||||||
import org.openide.nodes.Sheet;
|
import org.openide.nodes.Sheet;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.ImageUtils;
|
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.datamodel.AbstractAbstractFileNode;
|
import org.sleuthkit.autopsy.datamodel.AbstractAbstractFileNode;
|
||||||
import org.sleuthkit.autopsy.datamodel.FileNode;
|
import org.sleuthkit.autopsy.datamodel.FileNode;
|
||||||
@ -44,11 +43,11 @@ import org.sleuthkit.datamodel.TskCoreException;
|
|||||||
* the addNotify function in ThumbnailChildNode ends up wtih a list containing
|
* the addNotify function in ThumbnailChildNode ends up wtih a list containing
|
||||||
* just the wait node and the thumbanils never appear.
|
* just the wait node and the thumbanils never appear.
|
||||||
*/
|
*/
|
||||||
final class ThumbnailChildren extends Children.Keys<AbstractFile> {
|
final class AttachementsChildren extends Children.Keys<AbstractFile> {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(ThumbnailChildren.class.getName());
|
private static final Logger logger = Logger.getLogger(AttachementsChildren.class.getName());
|
||||||
|
|
||||||
private final Set<AbstractFile> thumbnails;
|
private final Set<BlackboardArtifact> artifacts;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates the list of thumbnails from the given list of
|
* Creates the list of thumbnails from the given list of
|
||||||
@ -57,9 +56,21 @@ final class ThumbnailChildren extends Children.Keys<AbstractFile> {
|
|||||||
* The thumbnails will be initialls sorted by size, then name so that they
|
* The thumbnails will be initialls sorted by size, then name so that they
|
||||||
* appear sorted by size by default.
|
* appear sorted by size by default.
|
||||||
*/
|
*/
|
||||||
ThumbnailChildren(Set<BlackboardArtifact> artifacts) {
|
AttachementsChildren(Set<BlackboardArtifact> artifacts) {
|
||||||
super(false);
|
super(false);
|
||||||
thumbnails = new TreeSet<>((AbstractFile file1, AbstractFile file2) -> {
|
this.artifacts = artifacts;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Node[] createNodes(AbstractFile t) {
|
||||||
|
return new Node[]{new AttachmentNode(t)};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addNotify() {
|
||||||
|
super.addNotify();
|
||||||
|
|
||||||
|
Set<AbstractFile> attachments = new TreeSet<>((AbstractFile file1, AbstractFile file2) -> {
|
||||||
int result = Long.compare(file1.getSize(), file2.getSize());
|
int result = Long.compare(file1.getSize(), file2.getSize());
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
result = file1.getName().compareTo(file2.getName());
|
result = file1.getName().compareTo(file2.getName());
|
||||||
@ -71,33 +82,24 @@ final class ThumbnailChildren extends Children.Keys<AbstractFile> {
|
|||||||
artifacts.forEach((bba) -> {
|
artifacts.forEach((bba) -> {
|
||||||
try {
|
try {
|
||||||
for (Content childContent : bba.getChildren()) {
|
for (Content childContent : bba.getChildren()) {
|
||||||
if (childContent instanceof AbstractFile && ImageUtils.thumbnailSupported((AbstractFile) childContent)) {
|
if (childContent instanceof AbstractFile) {
|
||||||
thumbnails.add((AbstractFile) childContent);
|
attachments.add((AbstractFile) childContent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (TskCoreException ex) {
|
} catch (TskCoreException ex) {
|
||||||
logger.log(Level.WARNING, "Unable to get children from artifact.", ex); //NON-NLS
|
logger.log(Level.WARNING, "Unable to get children from artifact.", ex); //NON-NLS
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
setKeys(attachments);
|
||||||
protected Node[] createNodes(AbstractFile t) {
|
|
||||||
return new Node[]{new ThumbnailNode(t)};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addNotify() {
|
|
||||||
super.addNotify();
|
|
||||||
setKeys(thumbnails);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A node for representing a thumbnail.
|
* A node for representing a attachememt.
|
||||||
*/
|
*/
|
||||||
static class ThumbnailNode extends FileNode {
|
static class AttachmentNode extends FileNode {
|
||||||
|
|
||||||
ThumbnailNode(AbstractFile file) {
|
AttachmentNode(AbstractFile file) {
|
||||||
super(file, false);
|
super(file, false);
|
||||||
}
|
}
|
||||||
|
|
@ -46,11 +46,11 @@ import org.sleuthkit.datamodel.Content;
|
|||||||
import org.sleuthkit.datamodel.TskCoreException;
|
import org.sleuthkit.datamodel.TskCoreException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This panel is a RelationshipsViewer panel
|
||||||
*/
|
*/
|
||||||
public class ThumbnailViewer extends JPanel implements RelationshipsViewer, ExplorerManager.Provider, Lookup.Provider {
|
public class MediaViewer extends JPanel implements RelationshipsViewer, ExplorerManager.Provider, Lookup.Provider {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(ThumbnailChildren.class.getName());
|
private static final Logger logger = Logger.getLogger(MediaViewer.class.getName());
|
||||||
|
|
||||||
private final ExplorerManager tableEM = new ExplorerManager();
|
private final ExplorerManager tableEM = new ExplorerManager();
|
||||||
private final PropertyChangeListener focusPropertyListener;
|
private final PropertyChangeListener focusPropertyListener;
|
||||||
@ -63,7 +63,7 @@ public class ThumbnailViewer extends JPanel implements RelationshipsViewer, Expl
|
|||||||
/**
|
/**
|
||||||
* Creates new form ThumbnailViewer
|
* Creates new form ThumbnailViewer
|
||||||
*/
|
*/
|
||||||
public ThumbnailViewer() {
|
public MediaViewer() {
|
||||||
proxyLookup = new ModifiableProxyLookup(createLookup(tableEM, getActionMap()));
|
proxyLookup = new ModifiableProxyLookup(createLookup(tableEM, getActionMap()));
|
||||||
|
|
||||||
// See org.sleuthkit.autopsy.timeline.TimeLineTopComponent for a detailed
|
// See org.sleuthkit.autopsy.timeline.TimeLineTopComponent for a detailed
|
||||||
@ -78,7 +78,7 @@ public class ThumbnailViewer extends JPanel implements RelationshipsViewer, Expl
|
|||||||
if (isDescendingFrom(newFocusOwner, contentViewer)) {
|
if (isDescendingFrom(newFocusOwner, contentViewer)) {
|
||||||
//if the focus owner is within the MessageContentViewer (the attachments table)
|
//if the focus owner is within the MessageContentViewer (the attachments table)
|
||||||
proxyLookup.setNewLookups(createLookup(((MessageDataContent) contentViewer).getExplorerManager(), getActionMap()));
|
proxyLookup.setNewLookups(createLookup(((MessageDataContent) contentViewer).getExplorerManager(), getActionMap()));
|
||||||
} else if (isDescendingFrom(newFocusOwner, ThumbnailViewer.this)) {
|
} else if (isDescendingFrom(newFocusOwner, MediaViewer.this)) {
|
||||||
//... or if it is within the Results table.
|
//... or if it is within the Results table.
|
||||||
proxyLookup.setNewLookups(createLookup(tableEM, getActionMap()));
|
proxyLookup.setNewLookups(createLookup(tableEM, getActionMap()));
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ public class ThumbnailViewer extends JPanel implements RelationshipsViewer, Expl
|
|||||||
thumbnailViewer.resetComponent();
|
thumbnailViewer.resetComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
thumbnailViewer.setNode(new TableFilterNode(new DataResultFilterNode(new AbstractNode(new ThumbnailChildren(artifactList)), tableEM), true));
|
thumbnailViewer.setNode(new TableFilterNode(new DataResultFilterNode(new AbstractNode(new AttachementsChildren(artifactList)), tableEM), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
@ -33,7 +33,7 @@ final class RelationshipBrowser extends JPanel implements Lookup.Provider {
|
|||||||
|
|
||||||
private final MessagesViewer messagesViewer;
|
private final MessagesViewer messagesViewer;
|
||||||
private final ContactsViewer contactsViewer;
|
private final ContactsViewer contactsViewer;
|
||||||
private final ThumbnailViewer thumbnailsViewer;
|
private final MediaViewer thumbnailsViewer;
|
||||||
|
|
||||||
private final ModifiableProxyLookup proxyLookup;
|
private final ModifiableProxyLookup proxyLookup;
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ final class RelationshipBrowser extends JPanel implements Lookup.Provider {
|
|||||||
public RelationshipBrowser() {
|
public RelationshipBrowser() {
|
||||||
messagesViewer = new MessagesViewer();
|
messagesViewer = new MessagesViewer();
|
||||||
contactsViewer = new ContactsViewer();
|
contactsViewer = new ContactsViewer();
|
||||||
thumbnailsViewer = new ThumbnailViewer();
|
thumbnailsViewer = new MediaViewer();
|
||||||
|
|
||||||
proxyLookup = new ModifiableProxyLookup(messagesViewer.getLookup());
|
proxyLookup = new ModifiableProxyLookup(messagesViewer.getLookup());
|
||||||
|
|
||||||
|
@ -561,7 +561,7 @@ public class MessageContentViewer extends javax.swing.JPanel implements DataCont
|
|||||||
msgbodyTabbedPane.setEnabledAt(ATTM_TAB_INDEX, numberOfAttachments > 0);
|
msgbodyTabbedPane.setEnabledAt(ATTM_TAB_INDEX, numberOfAttachments > 0);
|
||||||
msgbodyTabbedPane.setTitleAt(ATTM_TAB_INDEX, "Attachments (" + numberOfAttachments + ")");
|
msgbodyTabbedPane.setTitleAt(ATTM_TAB_INDEX, "Attachments (" + numberOfAttachments + ")");
|
||||||
drp.setNode(new TableFilterNode(new DataResultFilterNode(new AbstractNode(
|
drp.setNode(new TableFilterNode(new DataResultFilterNode(new AbstractNode(
|
||||||
new AttachmentsChildren(attachments)), null), true));
|
new AttachmentsChildren(attachments))), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String wrapInHtmlBody(String htmlText) {
|
private static String wrapInHtmlBody(String htmlText) {
|
||||||
|
@ -125,9 +125,23 @@ public class DataResultFilterNode extends FilterNode {
|
|||||||
|
|
||||||
static private final DisplayableItemNodeVisitor<List<Action>> getActionsDIV = new GetPopupActionsDisplayableItemNodeVisitor();
|
static private final DisplayableItemNodeVisitor<List<Action>> getActionsDIV = new GetPopupActionsDisplayableItemNodeVisitor();
|
||||||
private final DisplayableItemNodeVisitor<AbstractAction> getPreferredActionsDIV = new GetPreferredActionsDisplayableItemNodeVisitor();
|
private final DisplayableItemNodeVisitor<AbstractAction> getPreferredActionsDIV = new GetPreferredActionsDisplayableItemNodeVisitor();
|
||||||
|
|
||||||
|
// In GetPreferredActionsDisplayableItemNodeVisitor this is expected
|
||||||
|
// to be the directory tree explorer manager
|
||||||
|
private final ExplorerManager sourceEm;
|
||||||
|
|
||||||
private final ExplorerManager sourceEm;
|
/**
|
||||||
|
* Constructs a node used to wrap another node before passing it to the
|
||||||
|
* result viewers. The wrapper node defines the actions associated with the
|
||||||
|
* wrapped node and may filter out some of its children.
|
||||||
|
*
|
||||||
|
* @param node The node to wrap.
|
||||||
|
*/
|
||||||
|
public DataResultFilterNode(Node node) {
|
||||||
|
super(node, null);
|
||||||
|
this.sourceEm = null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a node used to wrap another node before passing it to the
|
* Constructs a node used to wrap another node before passing it to the
|
||||||
* result viewers. The wrapper node defines the actions associated with the
|
* result viewers. The wrapper node defines the actions associated with the
|
||||||
@ -635,6 +649,10 @@ public class DataResultFilterNode extends FilterNode {
|
|||||||
// is a DirectoryTreeFilterNode that wraps the dataModelNode. We need
|
// is a DirectoryTreeFilterNode that wraps the dataModelNode. We need
|
||||||
// to set that wrapped node as the selection and root context of the
|
// to set that wrapped node as the selection and root context of the
|
||||||
// directory tree explorer manager (sourceEm)
|
// directory tree explorer manager (sourceEm)
|
||||||
|
if(sourceEm == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
final Node currentSelectionInDirectoryTree = sourceEm.getSelectedNodes()[0];
|
final Node currentSelectionInDirectoryTree = sourceEm.getSelectedNodes()[0];
|
||||||
|
|
||||||
return new AbstractAction() {
|
return new AbstractAction() {
|
||||||
@ -675,6 +693,9 @@ public class DataResultFilterNode extends FilterNode {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private AbstractAction openParent(AbstractNode node) {
|
private AbstractAction openParent(AbstractNode node) {
|
||||||
|
if(sourceEm == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
// @@@ Why do we ignore node?
|
// @@@ Why do we ignore node?
|
||||||
Node[] selectedFilterNodes = sourceEm.getSelectedNodes();
|
Node[] selectedFilterNodes = sourceEm.getSelectedNodes();
|
||||||
Node selectedFilterNode = selectedFilterNodes[0];
|
Node selectedFilterNode = selectedFilterNodes[0];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user