Autopsy  4.21.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
Classes | Public Member Functions | Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer Class Reference

Inherits JPanel, and org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer.


class  AnnotationWorker

Public Member Functions

 AnnotationsContentViewer ()
DataContentViewer createInstance ()
Component getComponent ()
default String getTitle (Node node)
String getTitle ()
String getToolTip ()
int isPreferred (Node node)
boolean isSupported (Node node)
void resetComponent ()
void setNode (Node node)

Protected Member Functions

void finalize () throws Throwable

Private Member Functions

void initComponents ()
void refresh ()
void registerListeners ()
void unregisterListeners ()
void updateData (Node node, boolean forceReset)

Static Private Member Functions

static Pair< Long, Long > getIdsFromEvent (PropertyChangeEvent evt)

Private Attributes

final PropertyChangeListener caseEventListener
Long curArtifactId
Long curContentId
final PropertyChangeListener ingestEventListener
Node node
javax.swing.JTextPane textPanel
final Object updateLock = new Object()
final PropertyChangeListener weakCaseEventListener = WeakListeners.propertyChange(caseEventListener, null)
final PropertyChangeListener weakIngestEventListener = WeakListeners.propertyChange(ingestEventListener, null)
AnnotationWorker worker = null

Static Private Attributes

static final Set< BlackboardArtifact.Type > ARTIFACT_TYPES_OF_INTEREST
static final Set< Case.Events > CASE_EVENTS_OF_INTEREST
static final Set< IngestManager.IngestModuleEvent > INGEST_MODULE_EVENTS_OF_INTEREST = EnumSet.of(IngestManager.IngestModuleEvent.DATA_ADDED)
static final Logger logger = Logger.getLogger(AnnotationsContentViewer.class.getName())
static final long serialVersionUID = 1L

Detailed Description

Annotations view of file contents.

Definition at line 62 of file

Constructor & Destructor Documentation

org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.AnnotationsContentViewer ( )

Member Function Documentation

DataContentViewer org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.createInstance ( )

Create and return a new instance of your viewer. The reason that this is needed is because the specific viewer modules will be found via NetBeans Lookup and the type will only be DataContentViewer. This method is used to get an instance of your specific type.

A new instance of the viewer

Implements org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer.

Definition at line 329 of file

void org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.finalize ( ) throws Throwable

Definition at line 161 of file

Component org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.getComponent ( )

Return the Swing Component to display. Implementations of this method that extend JPanel and do a 'return this;'. Otherwise return an internal instance of the JPanel.

the component which is displayed for this viewer

Implements org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer.

Definition at line 344 of file

static Pair<Long, Long> org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.getIdsFromEvent ( PropertyChangeEvent  evt)

Returns a pair of the artifact id (or null) and the content id (or null) for the case event.

evtThe case event.
A pair of the artifact id (or null) and the content id (or null) for the case event.

Definition at line 191 of file

default String org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer.getTitle ( Node  node)

Returns the title of this viewer to display in the tab.

nodeThe node to be viewed in the DataContentViewer.
the title of DataContentViewer.

Implemented in org.sleuthkit.autopsy.contentviewers.Metadata.

Definition at line 61 of file

References org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer.getTitle().

String org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.getTitle ( )

Returns the title of this viewer to display in the tab.

the title of DataContentViewer

Implements org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer.

Definition at line 319 of file

String org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.getToolTip ( )

Returns a short description of this viewer to use as a tool tip for its tab.

the tooltip for this TextViewer

Implements org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer.

Definition at line 324 of file

void org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.initComponents ( )

This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always regenerated by the Form Editor.

Definition at line 290 of file

int org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.isPreferred ( Node  node)

Checks whether the given viewer is preferred for the Node. This is a bit subjective, but the idea is that Autopsy wants to display the most relevant tab. The more generic the viewer, the lower the return value should be. This will only be called on viewers that support the given node (i.e., isSupported() has already returned true).

The following are some examples of the current levels in use. If the selected node is an artifact, the level may be determined by both the artifact and its associated file.

Level 8 - Used for viewers that summarize a data artifact and display a relevant subset to help the examiner decide if they should look into it further. Not currently used by any modules, but an example would be a module that summarizes an email message.

Level 7 - Used for data artifact viewers. These have higher priority over file content viewers because a Node will likely have the ‘source’ file for a data artifact and we want to give the artifact priority. Currently used by the Data Artifacts viewer.

Level 6 - Used for type-specific file content viewers that summarize the file content and display a relevant subset. These viewers help the examiner determine if the file is worth looking into further. Examples of this would be Video Triage Module that displays a subset of a video or a document.

Level 5 - Used for type-specific file content viewers that are optimized for that type, such as displaying an image or a PDF file with images and proper layout. Currently used by the Application viewer.

Level 4 - Used for type-specific file content viewers that are not optimized. For example, displaying only the plain text from a PDF would be at this level, but displaying the same PDF with images and layout would be level 5. Currently used by the Text viewer that returns text from Solr.

Level 3 - Used for viewing Data Artifacts that refer to files and the user may want to view the files more than the artifact itself. This is currently used by the Data Artifact viewer when a Web Download artifact is selected.

Level 2 - Used for viewing Analysis Results. This is a lower priority than Data Artifacts and file content because Analysis Results are used to identify content of interest and therefore the content itself should be shown. Currently used by the Analysis Results viewer. * Level 1 - Used for metadata viewers that give more information and context about the primary file or artifact. Currently used by Metadata, Annotations, Context, Other Occurrences, and OS Account.

Level 0 - Used for general purpose file content viewers that are not file specific and will always be enabled. Currently used by Text/Strings and Hex.

nodeNode to check for preference
an int (0-10) higher return means the viewer has higher priority

Implements org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer.

Definition at line 339 of file

References org.sleuthkit.autopsy.contentviewers.utils.ViewerPriority.viewerPriority.LevelOne.

boolean org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.isSupported ( Node  node)

Checks whether the given node is supported by the viewer. This will be used to enable or disable the tab for the viewer.

nodeNode to check for support
True if the node can be displayed / processed, else false

Implements org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer.

Definition at line 334 of file

References org.sleuthkit.autopsy.contentviewers.annotations.AnnotationUtils.isSupported().

void org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.refresh ( )

Refreshes the data displayed.

Definition at line 244 of file

void org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.registerListeners ( )
void org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.resetComponent ( )

Resets the contents of the viewer / component.

Implements org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer.

Definition at line 349 of file

void org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.setNode ( Node  selectedNode)

Autopsy will call this when this panel is focused with the file that should be analyzed. When called with null, must clear all references to previous nodes.

selectedNodethe node which is used to determine what is displayed in this viewer

Implements org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer.

Definition at line 174 of file

void org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.unregisterListeners ( )
void org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.updateData ( Node  node,
boolean  forceReset 

Updates data displayed in the viewer.

nodeThe node to use for data.
forceResetIf true, forces a reset cancelling the previous worker if one exists and clearing data in the component. If false, only submits a worker if no previous worker is running.

Definition at line 259 of file

Member Data Documentation

final Set<BlackboardArtifact.Type> org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.ARTIFACT_TYPES_OF_INTEREST
Initial value:
= ImmutableSet.of(

("deprecation") - we need to support already existing interesting file and artifact hits.

Definition at line 81 of file

final Set<Case.Events> org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.CASE_EVENTS_OF_INTEREST
Initial value:
= EnumSet.of(

Definition at line 67 of file

final PropertyChangeListener org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.caseEventListener
Initial value:
= (evt) -> {
Long curArtifactId = AnnotationsContentViewer.this.curArtifactId;
Long curContentId = AnnotationsContentViewer.this.curContentId;
if (curArtifactId == null && curContentId == null) {
Pair<Long, Long> artifactContentId = getIdsFromEvent(evt);
Long artifactId = artifactContentId.getLeft();
Long contentId = artifactContentId.getRight();
if ((curArtifactId != null && curArtifactId.equals(artifactId)) || (curContentId != null && curContentId.equals(contentId))) {

Definition at line 116 of file

Long org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.curArtifactId

Definition at line 140 of file

Long org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.curContentId

Definition at line 141 of file

final Set<IngestManager.IngestModuleEvent> org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.INGEST_MODULE_EVENTS_OF_INTEREST = EnumSet.of(IngestManager.IngestModuleEvent.DATA_ADDED)

Definition at line 74 of file

final PropertyChangeListener org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.ingestEventListener
Initial value:
= (evt) -> {
Long curArtifactId = AnnotationsContentViewer.this.curArtifactId;
Long curContentId = AnnotationsContentViewer.this.curContentId;
if (curArtifactId == null && curContentId == null) {
if (IngestManager.IngestModuleEvent.DATA_ADDED.toString().equals(evt.getPropertyName())
&& evt.getOldValue() instanceof ModuleDataEvent) {
ModuleDataEvent moduleDataEvent = (ModuleDataEvent) evt.getOldValue();
if (ARTIFACT_TYPES_OF_INTEREST.contains(moduleDataEvent.getBlackboardArtifactType())) {
for (BlackboardArtifact artifact : moduleDataEvent.getArtifacts()) {
if ((curArtifactId != null && artifact.getArtifactID() == curArtifactId)
|| (curContentId != null && artifact.getObjectID() == curContentId)) {

Definition at line 87 of file

final Logger org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.logger = Logger.getLogger(AnnotationsContentViewer.class.getName())

Definition at line 65 of file

Node org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.node

Definition at line 139 of file

final long org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.serialVersionUID = 1L

Definition at line 64 of file

javax.swing.JTextPane org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.textPanel

Definition at line 315 of file

final Object org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.updateLock = new Object()

Definition at line 136 of file

final PropertyChangeListener org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.weakCaseEventListener = WeakListeners.propertyChange(caseEventListener, null)

Definition at line 134 of file

final PropertyChangeListener org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.weakIngestEventListener = WeakListeners.propertyChange(ingestEventListener, null)

Definition at line 114 of file

AnnotationWorker org.sleuthkit.autopsy.contentviewers.annotations.AnnotationsContentViewer.worker = null

Definition at line 138 of file

The documentation for this class was generated from the following file:

Copyright © 2012-2022 Basis Technology. Generated on: Tue Feb 6 2024
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.