mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-13 00:16:16 +00:00
Merge pull request #3030 from esaunders/2948_reduce_event_listeners
Reduce number of event listeners
This commit is contained in:
commit
47ee46a40f
@ -377,7 +377,9 @@ public class Case {
|
|||||||
*
|
*
|
||||||
* @param eventNames The events the subscriber is interested in.
|
* @param eventNames The events the subscriber is interested in.
|
||||||
* @param subscriber The subscriber (PropertyChangeListener) to add.
|
* @param subscriber The subscriber (PropertyChangeListener) to add.
|
||||||
|
* @deprecated Use addEventTypeSubscriber instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public static void addEventSubscriber(Set<String> eventNames, PropertyChangeListener subscriber) {
|
public static void addEventSubscriber(Set<String> eventNames, PropertyChangeListener subscriber) {
|
||||||
eventPublisher.addSubscriber(eventNames, subscriber);
|
eventPublisher.addSubscriber(eventNames, subscriber);
|
||||||
}
|
}
|
||||||
@ -385,9 +387,23 @@ public class Case {
|
|||||||
/**
|
/**
|
||||||
* Adds a subscriber to specific case events.
|
* Adds a subscriber to specific case events.
|
||||||
*
|
*
|
||||||
* @param eventName The event the subscriber is interested in.
|
* @param eventTypes The events the subscriber is interested in.
|
||||||
* @param subscriber The subscriber (PropertyChangeListener) to add.
|
* @param subscriber The subscriber (PropertyChangeListener) to add.
|
||||||
*/
|
*/
|
||||||
|
public static void addEventTypeSubscriber(Set<Events> eventTypes, PropertyChangeListener subscriber) {
|
||||||
|
eventTypes.forEach((Events event) -> {
|
||||||
|
eventPublisher.addSubscriber(event.toString(), subscriber);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a subscriber to specific case events.
|
||||||
|
*
|
||||||
|
* @param eventName The event the subscriber is interested in.
|
||||||
|
* @param subscriber The subscriber (PropertyChangeListener) to add.
|
||||||
|
* @deprecated Use addEventTypeSubscriber instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public static void addEventSubscriber(String eventName, PropertyChangeListener subscriber) {
|
public static void addEventSubscriber(String eventName, PropertyChangeListener subscriber) {
|
||||||
eventPublisher.addSubscriber(eventName, subscriber);
|
eventPublisher.addSubscriber(eventName, subscriber);
|
||||||
}
|
}
|
||||||
@ -412,6 +428,18 @@ public class Case {
|
|||||||
eventPublisher.removeSubscriber(eventNames, subscriber);
|
eventPublisher.removeSubscriber(eventNames, subscriber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes a subscriber to specific case events.
|
||||||
|
*
|
||||||
|
* @param eventTypes The events the subscriber is no longer interested in.
|
||||||
|
* @param subscriber The subscriber (PropertyChangeListener) to remove.
|
||||||
|
*/
|
||||||
|
public static void removeEventTypeSubscriber(Set<Events> eventTypes, PropertyChangeListener subscriber) {
|
||||||
|
eventTypes.forEach((Events event) -> {
|
||||||
|
eventPublisher.removeSubscriber(event.toString(), subscriber);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if a case display name is valid, i.e., does not include any
|
* Checks if a case display name is valid, i.e., does not include any
|
||||||
* characters that cannot be used in file names.
|
* characters that cannot be used in file names.
|
||||||
|
@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.casemodule;
|
|||||||
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
@ -49,7 +50,7 @@ final class CaseDeleteAction extends CallableSystemAction {
|
|||||||
CaseDeleteAction() {
|
CaseDeleteAction() {
|
||||||
putValue(Action.NAME, NbBundle.getMessage(CaseDeleteAction.class, "CTL_CaseDeleteAction"));
|
putValue(Action.NAME, NbBundle.getMessage(CaseDeleteAction.class, "CTL_CaseDeleteAction"));
|
||||||
this.setEnabled(false);
|
this.setEnabled(false);
|
||||||
Case.addEventSubscriber(Case.Events.CURRENT_CASE.toString(), (PropertyChangeEvent evt) -> {
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> {
|
||||||
setEnabled(null != evt.getNewValue() && UserPreferences.getMode() != UserPreferences.SelectedMode.REVIEW);
|
setEnabled(null != evt.getNewValue() && UserPreferences.getMode() != UserPreferences.SelectedMode.REVIEW);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ import java.awt.Dimension;
|
|||||||
import java.awt.Toolkit;
|
import java.awt.Toolkit;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
|
import java.util.EnumSet;
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
import javax.swing.JDialog;
|
import javax.swing.JDialog;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
@ -42,7 +43,7 @@ final class CasePropertiesAction extends CallableSystemAction {
|
|||||||
CasePropertiesAction() {
|
CasePropertiesAction() {
|
||||||
putValue(Action.NAME, NbBundle.getMessage(CasePropertiesAction.class, "CTL_CasePropertiesAction"));
|
putValue(Action.NAME, NbBundle.getMessage(CasePropertiesAction.class, "CTL_CasePropertiesAction"));
|
||||||
this.setEnabled(false);
|
this.setEnabled(false);
|
||||||
Case.addEventSubscriber(Case.Events.CURRENT_CASE.toString(), (PropertyChangeEvent evt) -> {
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> {
|
||||||
setEnabled(null != evt.getNewValue());
|
setEnabled(null != evt.getNewValue());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -24,9 +24,8 @@ import java.beans.PropertyChangeListener;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Arrays;
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -57,7 +56,8 @@ final class CollaborationMonitor {
|
|||||||
|
|
||||||
private static final String EVENT_CHANNEL_NAME = "%s-Collaboration-Monitor-Events"; //NON-NLS
|
private static final String EVENT_CHANNEL_NAME = "%s-Collaboration-Monitor-Events"; //NON-NLS
|
||||||
private static final String COLLABORATION_MONITOR_EVENT = "COLLABORATION_MONITOR_EVENT"; //NON-NLS
|
private static final String COLLABORATION_MONITOR_EVENT = "COLLABORATION_MONITOR_EVENT"; //NON-NLS
|
||||||
private static final Set<String> CASE_EVENTS_OF_INTEREST = new HashSet<>(Arrays.asList(new String[]{Case.Events.ADDING_DATA_SOURCE.toString(), Case.Events.DATA_SOURCE_ADDED.toString(), Case.Events.ADDING_DATA_SOURCE_FAILED.toString()}));
|
private static final Set<Case.Events> CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.ADDING_DATA_SOURCE,
|
||||||
|
Case.Events.DATA_SOURCE_ADDED, Case.Events.ADDING_DATA_SOURCE_FAILED);
|
||||||
private static final int NUMBER_OF_PERIODIC_TASK_THREADS = 2;
|
private static final int NUMBER_OF_PERIODIC_TASK_THREADS = 2;
|
||||||
private static final String PERIODIC_TASK_THREAD_NAME = "collab-monitor-periodic-tasks-%d"; //NON-NLS
|
private static final String PERIODIC_TASK_THREAD_NAME = "collab-monitor-periodic-tasks-%d"; //NON-NLS
|
||||||
private static final long HEARTBEAT_INTERVAL_MINUTES = 1;
|
private static final long HEARTBEAT_INTERVAL_MINUTES = 1;
|
||||||
@ -113,7 +113,7 @@ final class CollaborationMonitor {
|
|||||||
*/
|
*/
|
||||||
localTasksManager = new LocalTasksManager();
|
localTasksManager = new LocalTasksManager();
|
||||||
IngestManager.getInstance().addIngestJobEventListener(localTasksManager);
|
IngestManager.getInstance().addIngestJobEventListener(localTasksManager);
|
||||||
Case.addEventSubscriber(CASE_EVENTS_OF_INTEREST, localTasksManager);
|
Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, localTasksManager);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start periodic tasks that:
|
* Start periodic tasks that:
|
||||||
@ -141,7 +141,7 @@ final class CollaborationMonitor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Case.removeEventSubscriber(CASE_EVENTS_OF_INTEREST, localTasksManager);
|
Case.removeEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, localTasksManager);
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(localTasksManager);
|
IngestManager.getInstance().removeIngestJobEventListener(localTasksManager);
|
||||||
|
|
||||||
if (null != eventPublisher) {
|
if (null != eventPublisher) {
|
||||||
|
@ -35,6 +35,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import static java.util.Objects.nonNull;
|
import static java.util.Objects.nonNull;
|
||||||
@ -153,7 +154,7 @@ public class ImageUtils {
|
|||||||
SUPPORTED_IMAGE_MIME_TYPES.removeIf("application/octet-stream"::equals); //NON-NLS
|
SUPPORTED_IMAGE_MIME_TYPES.removeIf("application/octet-stream"::equals); //NON-NLS
|
||||||
|
|
||||||
//Clear the file map when the case changes, so we don't accidentaly get images from the old case.
|
//Clear the file map when the case changes, so we don't accidentaly get images from the old case.
|
||||||
Case.addEventSubscriber(Case.Events.CURRENT_CASE.toString(), evt -> cacheFileMap.clear());
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), evt -> cacheFileMap.clear());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,9 +21,11 @@ package org.sleuthkit.autopsy.datamodel;
|
|||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.openide.nodes.Children;
|
import org.openide.nodes.Children;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@ -49,6 +51,9 @@ public abstract class AbstractAbstractFileNode<T extends AbstractFile> extends A
|
|||||||
|
|
||||||
private static final Logger LOGGER = Logger.getLogger(AbstractAbstractFileNode.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(AbstractAbstractFileNode.class.getName());
|
||||||
|
|
||||||
|
private static final Set<Case.Events> CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.CURRENT_CASE,
|
||||||
|
Case.Events.CONTENT_TAG_ADDED, Case.Events.CONTENT_TAG_DELETED);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param <T> type of the AbstractFile data to encapsulate
|
* @param <T> type of the AbstractFile data to encapsulate
|
||||||
* @param abstractFile file to encapsulate
|
* @param abstractFile file to encapsulate
|
||||||
@ -68,13 +73,14 @@ public abstract class AbstractAbstractFileNode<T extends AbstractFile> extends A
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Listen for case events so that we can detect when case is closed
|
// Listen for case events so that we can detect when the case is closed
|
||||||
Case.addPropertyChangeListener(pcl);
|
// or when tags are added.
|
||||||
|
Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeListeners() {
|
private void removeListeners() {
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final PropertyChangeListener pcl = (PropertyChangeEvent evt) -> {
|
private final PropertyChangeListener pcl = (PropertyChangeEvent evt) -> {
|
||||||
@ -96,7 +102,11 @@ public abstract class AbstractAbstractFileNode<T extends AbstractFile> extends A
|
|||||||
// If so, refresh our children.
|
// If so, refresh our children.
|
||||||
try {
|
try {
|
||||||
Children parentsChildren = getParentNode().getChildren();
|
Children parentsChildren = getParentNode().getChildren();
|
||||||
if (parentsChildren != null) {
|
// We only want to refresh our parents children if we are in the
|
||||||
|
// data sources branch of the tree. The parent nodes in other
|
||||||
|
// branches of the tree (e.g. File Types and Deleted Files) do
|
||||||
|
// not need to be refreshed.
|
||||||
|
if (parentsChildren instanceof ContentChildren) {
|
||||||
((ContentChildren) parentsChildren).refreshChildren();
|
((ContentChildren) parentsChildren).refreshChildren();
|
||||||
parentsChildren.getNodesCount();
|
parentsChildren.getNodesCount();
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ import java.beans.PropertyChangeListener;
|
|||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -67,13 +68,11 @@ import org.sleuthkit.datamodel.TskCoreException;
|
|||||||
public class BlackboardArtifactNode extends DisplayableItemNode {
|
public class BlackboardArtifactNode extends DisplayableItemNode {
|
||||||
|
|
||||||
private static final Logger LOGGER = Logger.getLogger(BlackboardArtifactNode.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(BlackboardArtifactNode.class.getName());
|
||||||
private static final Set<String> CASE_EVENTS_OF_INTEREST = new HashSet<>(Arrays.asList(new String[]{
|
private static final Set<Case.Events> CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.BLACKBOARD_ARTIFACT_TAG_ADDED,
|
||||||
Case.Events.BLACKBOARD_ARTIFACT_TAG_ADDED.toString(),
|
Case.Events.BLACKBOARD_ARTIFACT_TAG_DELETED,
|
||||||
Case.Events.BLACKBOARD_ARTIFACT_TAG_DELETED.toString(),
|
Case.Events.CONTENT_TAG_ADDED,
|
||||||
Case.Events.CONTENT_TAG_ADDED.toString(),
|
Case.Events.CONTENT_TAG_DELETED,
|
||||||
Case.Events.CONTENT_TAG_DELETED.toString(),
|
Case.Events.CURRENT_CASE);
|
||||||
Case.Events.CURRENT_CASE.toString()
|
|
||||||
}));
|
|
||||||
|
|
||||||
private static Cache<Long, Content> contentCache = CacheBuilder.newBuilder()
|
private static Cache<Long, Content> contentCache = CacheBuilder.newBuilder()
|
||||||
.expireAfterWrite(1, TimeUnit.MINUTES).
|
.expireAfterWrite(1, TimeUnit.MINUTES).
|
||||||
@ -148,7 +147,7 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
|
|||||||
this.setName(Long.toString(artifact.getArtifactID()));
|
this.setName(Long.toString(artifact.getArtifactID()));
|
||||||
this.setDisplayName();
|
this.setDisplayName();
|
||||||
this.setIconBaseWithExtension(iconPath);
|
this.setIconBaseWithExtension(iconPath);
|
||||||
Case.addEventSubscriber(CASE_EVENTS_OF_INTEREST, WeakListeners.propertyChange(pcl, null));
|
Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, WeakListeners.propertyChange(pcl, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -165,11 +164,11 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
|
|||||||
this.setName(Long.toString(artifact.getArtifactID()));
|
this.setName(Long.toString(artifact.getArtifactID()));
|
||||||
this.setDisplayName();
|
this.setDisplayName();
|
||||||
this.setIconBaseWithExtension(ExtractedContent.getIconFilePath(artifact.getArtifactTypeID())); //NON-NLS
|
this.setIconBaseWithExtension(ExtractedContent.getIconFilePath(artifact.getArtifactTypeID())); //NON-NLS
|
||||||
Case.addEventSubscriber(CASE_EVENTS_OF_INTEREST, WeakListeners.propertyChange(pcl, null));
|
Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, WeakListeners.propertyChange(pcl, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeListeners() {
|
private void removeListeners() {
|
||||||
Case.removeEventSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
Case.removeEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -22,6 +22,7 @@ import java.beans.PropertyChangeEvent;
|
|||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import org.openide.nodes.Sheet;
|
import org.openide.nodes.Sheet;
|
||||||
@ -88,13 +89,13 @@ public class DataSourcesNode extends DisplayableItemNode {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addNotify() {
|
protected void addNotify() {
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.DATA_SOURCE_ADDED), pcl);
|
||||||
reloadKeys();
|
reloadKeys();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void removeNotify() {
|
protected void removeNotify() {
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(EnumSet.of(Case.Events.DATA_SOURCE_ADDED), pcl);
|
||||||
currentKeys.clear();
|
currentKeys.clear();
|
||||||
setKeys(Collections.<Content>emptySet());
|
setKeys(Collections.<Content>emptySet());
|
||||||
}
|
}
|
||||||
|
@ -22,9 +22,11 @@ import java.beans.PropertyChangeEvent;
|
|||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Observable;
|
import java.util.Observable;
|
||||||
import java.util.Observer;
|
import java.util.Observer;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
@ -172,24 +174,26 @@ public class DeletedContent implements AutopsyVisitableItem {
|
|||||||
* Listens for case and ingest invest. Updates observers when events are
|
* Listens for case and ingest invest. Updates observers when events are
|
||||||
* fired. Other nodes are listening to this for changes.
|
* fired. Other nodes are listening to this for changes.
|
||||||
*/
|
*/
|
||||||
private final class DeletedContentsChildrenObservable extends Observable {
|
private static final class DeletedContentsChildrenObservable extends Observable {
|
||||||
|
private static final Set<Case.Events> CASE_EVENTS_OF_INTEREST = EnumSet.of(
|
||||||
|
Case.Events.DATA_SOURCE_ADDED,
|
||||||
|
Case.Events.CURRENT_CASE
|
||||||
|
);
|
||||||
|
|
||||||
DeletedContentsChildrenObservable() {
|
DeletedContentsChildrenObservable() {
|
||||||
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeListeners() {
|
private void removeListeners() {
|
||||||
deleteObservers();
|
deleteObservers();
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final PropertyChangeListener pcl = new PropertyChangeListener() {
|
private final PropertyChangeListener pcl = (PropertyChangeEvent evt) -> {
|
||||||
@Override
|
|
||||||
public void propertyChange(PropertyChangeEvent evt) {
|
|
||||||
String eventType = evt.getPropertyName();
|
String eventType = evt.getPropertyName();
|
||||||
if (eventType.equals(IngestManager.IngestModuleEvent.CONTENT_CHANGED.toString())) {
|
if (eventType.equals(IngestManager.IngestModuleEvent.CONTENT_CHANGED.toString())) {
|
||||||
/**
|
/**
|
||||||
@ -234,7 +238,6 @@ public class DeletedContent implements AutopsyVisitableItem {
|
|||||||
}
|
}
|
||||||
maxFilesDialogShown = false;
|
maxFilesDialogShown = false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private void update() {
|
private void update() {
|
||||||
|
@ -23,6 +23,7 @@ import java.beans.PropertyChangeListener;
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -285,7 +286,7 @@ public class EmailExtracted implements AutopsyVisitableItem {
|
|||||||
protected void addNotify() {
|
protected void addNotify() {
|
||||||
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
emailResults.update();
|
emailResults.update();
|
||||||
emailResults.addObserver(this);
|
emailResults.addObserver(this);
|
||||||
}
|
}
|
||||||
@ -294,7 +295,7 @@ public class EmailExtracted implements AutopsyVisitableItem {
|
|||||||
protected void removeNotify() {
|
protected void removeNotify() {
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
emailResults.deleteObserver(this);
|
emailResults.deleteObserver(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ import java.beans.PropertyChangeListener;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
@ -251,14 +252,14 @@ public class ExtractedContent implements AutopsyVisitableItem {
|
|||||||
protected void addNotify() {
|
protected void addNotify() {
|
||||||
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void removeNotify() {
|
protected void removeNotify() {
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
typeNodeList.clear();
|
typeNodeList.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,7 +310,7 @@ public class ExtractedContent implements AutopsyVisitableItem {
|
|||||||
*/
|
*/
|
||||||
public class TypeNode extends DisplayableItemNode {
|
public class TypeNode extends DisplayableItemNode {
|
||||||
|
|
||||||
private BlackboardArtifact.Type type;
|
private final BlackboardArtifact.Type type;
|
||||||
private long childCount = 0;
|
private long childCount = 0;
|
||||||
|
|
||||||
TypeNode(BlackboardArtifact.Type type) {
|
TypeNode(BlackboardArtifact.Type type) {
|
||||||
|
@ -22,9 +22,11 @@ import java.beans.PropertyChangeEvent;
|
|||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Observable;
|
import java.util.Observable;
|
||||||
import java.util.Observer;
|
import java.util.Observer;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import org.openide.nodes.AbstractNode;
|
import org.openide.nodes.AbstractNode;
|
||||||
import org.openide.nodes.ChildFactory;
|
import org.openide.nodes.ChildFactory;
|
||||||
@ -168,32 +170,32 @@ public class FileSize implements AutopsyVisitableItem {
|
|||||||
* Listens for case and ingest invest. Updates observers when events are
|
* Listens for case and ingest invest. Updates observers when events are
|
||||||
* fired. Size-based nodes are listening to this for changes.
|
* fired. Size-based nodes are listening to this for changes.
|
||||||
*/
|
*/
|
||||||
private final class FileSizeRootChildrenObservable extends Observable {
|
private static final class FileSizeRootChildrenObservable extends Observable {
|
||||||
|
|
||||||
|
private static final Set<Case.Events> CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.DATA_SOURCE_ADDED, Case.Events.CURRENT_CASE);
|
||||||
|
|
||||||
FileSizeRootChildrenObservable() {
|
FileSizeRootChildrenObservable() {
|
||||||
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeListeners() {
|
private void removeListeners() {
|
||||||
deleteObservers();
|
deleteObservers();
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final PropertyChangeListener pcl = new PropertyChangeListener() {
|
private final PropertyChangeListener pcl = (PropertyChangeEvent evt) -> {
|
||||||
@Override
|
|
||||||
public void propertyChange(PropertyChangeEvent evt) {
|
|
||||||
String eventType = evt.getPropertyName();
|
String eventType = evt.getPropertyName();
|
||||||
|
|
||||||
if (eventType.equals(IngestManager.IngestModuleEvent.CONTENT_CHANGED.toString())) {
|
if (eventType.equals(IngestManager.IngestModuleEvent.CONTENT_CHANGED.toString())) {
|
||||||
/**
|
/**
|
||||||
* Checking for a current case is a stop gap measure
|
* Checking for a current case is a stop gap measure until a
|
||||||
* until a different way of handling the closing of
|
* different way of handling the closing of cases is worked
|
||||||
* cases is worked out. Currently, remote events may be
|
* out. Currently, remote events may be received for a case
|
||||||
* received for a case that is already closed.
|
* that is already closed.
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
// new file was added
|
// new file was added
|
||||||
@ -209,10 +211,10 @@ public class FileSize implements AutopsyVisitableItem {
|
|||||||
|| eventType.equals(IngestManager.IngestJobEvent.CANCELLED.toString())
|
|| eventType.equals(IngestManager.IngestJobEvent.CANCELLED.toString())
|
||||||
|| eventType.equals(Case.Events.DATA_SOURCE_ADDED.toString())) {
|
|| eventType.equals(Case.Events.DATA_SOURCE_ADDED.toString())) {
|
||||||
/**
|
/**
|
||||||
* Checking for a current case is a stop gap measure
|
* Checking for a current case is a stop gap measure until a
|
||||||
* until a different way of handling the closing of
|
* different way of handling the closing of cases is worked
|
||||||
* cases is worked out. Currently, remote events may be
|
* out. Currently, remote events may be received for a case
|
||||||
* received for a case that is already closed.
|
* that is already closed.
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
Case.getCurrentCase();
|
Case.getCurrentCase();
|
||||||
@ -228,7 +230,6 @@ public class FileSize implements AutopsyVisitableItem {
|
|||||||
removeListeners();
|
removeListeners();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private void update() {
|
private void update() {
|
||||||
|
@ -21,10 +21,11 @@ package org.sleuthkit.autopsy.datamodel;
|
|||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Observable;
|
import java.util.Observable;
|
||||||
import java.util.Observer;
|
import java.util.Observer;
|
||||||
import java.util.function.Function;
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
@ -39,8 +40,6 @@ import org.sleuthkit.autopsy.core.UserPreferences;
|
|||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.datamodel.FileTypes.FileTypesKey;
|
import org.sleuthkit.autopsy.datamodel.FileTypes.FileTypesKey;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
|
||||||
import org.sleuthkit.datamodel.Content;
|
|
||||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||||
import org.sleuthkit.datamodel.TskCoreException;
|
import org.sleuthkit.datamodel.TskCoreException;
|
||||||
import org.sleuthkit.datamodel.TskData;
|
import org.sleuthkit.datamodel.TskData;
|
||||||
@ -75,9 +74,11 @@ public final class FileTypesByExtension implements AutopsyVisitableItem {
|
|||||||
private class FileTypesByExtObservable extends Observable {
|
private class FileTypesByExtObservable extends Observable {
|
||||||
|
|
||||||
private final PropertyChangeListener pcl;
|
private final PropertyChangeListener pcl;
|
||||||
|
private final Set<Case.Events> CASE_EVENTS_OF_INTEREST;
|
||||||
|
|
||||||
private FileTypesByExtObservable() {
|
private FileTypesByExtObservable() {
|
||||||
super();
|
super();
|
||||||
|
this.CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.DATA_SOURCE_ADDED, Case.Events.CURRENT_CASE);
|
||||||
this.pcl = (PropertyChangeEvent evt) -> {
|
this.pcl = (PropertyChangeEvent evt) -> {
|
||||||
String eventType = evt.getPropertyName();
|
String eventType = evt.getPropertyName();
|
||||||
if (eventType.equals(IngestManager.IngestModuleEvent.CONTENT_CHANGED.toString())
|
if (eventType.equals(IngestManager.IngestModuleEvent.CONTENT_CHANGED.toString())
|
||||||
@ -109,15 +110,14 @@ public final class FileTypesByExtension implements AutopsyVisitableItem {
|
|||||||
|
|
||||||
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeListeners() {
|
private void removeListeners() {
|
||||||
deleteObservers();
|
deleteObservers();
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void update() {
|
private void update() {
|
||||||
|
@ -24,11 +24,13 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Observable;
|
import java.util.Observable;
|
||||||
import java.util.Observer;
|
import java.util.Observer;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@ -44,7 +46,6 @@ import static org.sleuthkit.autopsy.core.UserPreferences.hideSlackFilesInViewsTr
|
|||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.datamodel.FileTypes.FileTypesKey;
|
import org.sleuthkit.autopsy.datamodel.FileTypes.FileTypesKey;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||||
import org.sleuthkit.datamodel.Content;
|
|
||||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||||
import org.sleuthkit.datamodel.TskCoreException;
|
import org.sleuthkit.datamodel.TskCoreException;
|
||||||
import org.sleuthkit.datamodel.TskData;
|
import org.sleuthkit.datamodel.TskData;
|
||||||
@ -79,6 +80,8 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi
|
|||||||
*/
|
*/
|
||||||
private final PropertyChangeListener pcl;
|
private final PropertyChangeListener pcl;
|
||||||
|
|
||||||
|
private static final Set<Case.Events> CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.DATA_SOURCE_ADDED, Case.Events.CURRENT_CASE);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create the base expression used as the where clause in the queries for
|
* Create the base expression used as the where clause in the queries for
|
||||||
* files by mime type. Filters out certain kinds of files and directories,
|
* files by mime type. Filters out certain kinds of files and directories,
|
||||||
@ -102,7 +105,7 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi
|
|||||||
private void removeListeners() {
|
private void removeListeners() {
|
||||||
deleteObservers();
|
deleteObservers();
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -175,7 +178,7 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
populateHashMap();
|
populateHashMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
@ -252,7 +253,7 @@ public class HashsetHits implements AutopsyVisitableItem {
|
|||||||
protected void addNotify() {
|
protected void addNotify() {
|
||||||
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
hashsetResults.update();
|
hashsetResults.update();
|
||||||
hashsetResults.addObserver(this);
|
hashsetResults.addObserver(this);
|
||||||
}
|
}
|
||||||
@ -261,7 +262,7 @@ public class HashsetHits implements AutopsyVisitableItem {
|
|||||||
protected void removeNotify() {
|
protected void removeNotify() {
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
hashsetResults.deleteObserver(this);
|
hashsetResults.deleteObserver(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
@ -79,12 +80,12 @@ public class ImageNode extends AbstractContentNode<Image> {
|
|||||||
// Listen for ingest events so that we can detect new added files (e.g. carved)
|
// Listen for ingest events so that we can detect new added files (e.g. carved)
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
// Listen for case events so that we can detect when case is closed
|
// Listen for case events so that we can detect when case is closed
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeListeners() {
|
private void removeListeners() {
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -24,6 +24,7 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
@ -188,9 +189,7 @@ public class InterestingHits implements AutopsyVisitableItem {
|
|||||||
* nice methods for its startup and shutdown, so it seemed like a
|
* nice methods for its startup and shutdown, so it seemed like a
|
||||||
* cleaner place to register the property change listener.
|
* cleaner place to register the property change listener.
|
||||||
*/
|
*/
|
||||||
private final PropertyChangeListener pcl = new PropertyChangeListener() {
|
private final PropertyChangeListener pcl = (PropertyChangeEvent evt) -> {
|
||||||
@Override
|
|
||||||
public void propertyChange(PropertyChangeEvent evt) {
|
|
||||||
String eventType = evt.getPropertyName();
|
String eventType = evt.getPropertyName();
|
||||||
if (eventType.equals(IngestManager.IngestModuleEvent.DATA_ADDED.toString())) {
|
if (eventType.equals(IngestManager.IngestModuleEvent.DATA_ADDED.toString())) {
|
||||||
/**
|
/**
|
||||||
@ -240,14 +239,13 @@ public class InterestingHits implements AutopsyVisitableItem {
|
|||||||
skCase = null;
|
skCase = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addNotify() {
|
protected void addNotify() {
|
||||||
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
interestingResults.update();
|
interestingResults.update();
|
||||||
interestingResults.addObserver(this);
|
interestingResults.addObserver(this);
|
||||||
}
|
}
|
||||||
@ -256,7 +254,7 @@ public class InterestingHits implements AutopsyVisitableItem {
|
|||||||
protected void removeNotify() {
|
protected void removeNotify() {
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
interestingResults.deleteObserver(this);
|
interestingResults.deleteObserver(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -455,7 +456,7 @@ public class KeywordHits implements AutopsyVisitableItem {
|
|||||||
protected void addNotify() {
|
protected void addNotify() {
|
||||||
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
keywordResults.update();
|
keywordResults.update();
|
||||||
super.addNotify();
|
super.addNotify();
|
||||||
}
|
}
|
||||||
@ -464,7 +465,7 @@ public class KeywordHits implements AutopsyVisitableItem {
|
|||||||
protected void removeNotify() {
|
protected void removeNotify() {
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
super.removeNotify();
|
super.removeNotify();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,9 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.AbstractAction;
|
import javax.swing.AbstractAction;
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
@ -103,8 +105,10 @@ public final class Reports implements AutopsyVisitableItem {
|
|||||||
*/
|
*/
|
||||||
private static final class ReportNodeFactory extends ChildFactory<Report> {
|
private static final class ReportNodeFactory extends ChildFactory<Report> {
|
||||||
|
|
||||||
|
private static final Set<Case.Events> CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.REPORT_ADDED, Case.Events.REPORT_DELETED);
|
||||||
|
|
||||||
ReportNodeFactory() {
|
ReportNodeFactory() {
|
||||||
Case.addPropertyChangeListener((PropertyChangeEvent evt) -> {
|
Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, (PropertyChangeEvent evt) -> {
|
||||||
String eventType = evt.getPropertyName();
|
String eventType = evt.getPropertyName();
|
||||||
if (eventType.equals(Case.Events.REPORT_ADDED.toString()) || eventType.equals(Case.Events.REPORT_DELETED.toString())) {
|
if (eventType.equals(Case.Events.REPORT_ADDED.toString()) || eventType.equals(Case.Events.REPORT_DELETED.toString())) {
|
||||||
/**
|
/**
|
||||||
|
@ -21,9 +21,11 @@ package org.sleuthkit.autopsy.datamodel;
|
|||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Observable;
|
import java.util.Observable;
|
||||||
import java.util.Observer;
|
import java.util.Observer;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import org.openide.nodes.ChildFactory;
|
import org.openide.nodes.ChildFactory;
|
||||||
import org.openide.nodes.Children;
|
import org.openide.nodes.Children;
|
||||||
@ -118,6 +120,12 @@ public class Tags implements AutopsyVisitableItem {
|
|||||||
|
|
||||||
private class TagNameNodeFactory extends ChildFactory.Detachable<TagName> implements Observer {
|
private class TagNameNodeFactory extends ChildFactory.Detachable<TagName> implements Observer {
|
||||||
|
|
||||||
|
private final Set<Case.Events> CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.BLACKBOARD_ARTIFACT_TAG_ADDED,
|
||||||
|
Case.Events.BLACKBOARD_ARTIFACT_TAG_DELETED,
|
||||||
|
Case.Events.CONTENT_TAG_ADDED,
|
||||||
|
Case.Events.CONTENT_TAG_DELETED,
|
||||||
|
Case.Events.CURRENT_CASE);
|
||||||
|
|
||||||
private final PropertyChangeListener pcl = new PropertyChangeListener() {
|
private final PropertyChangeListener pcl = new PropertyChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void propertyChange(PropertyChangeEvent evt) {
|
public void propertyChange(PropertyChangeEvent evt) {
|
||||||
@ -171,7 +179,7 @@ public class Tags implements AutopsyVisitableItem {
|
|||||||
protected void addNotify() {
|
protected void addNotify() {
|
||||||
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
tagResults.update();
|
tagResults.update();
|
||||||
tagResults.addObserver(this);
|
tagResults.addObserver(this);
|
||||||
}
|
}
|
||||||
@ -180,7 +188,7 @@ public class Tags implements AutopsyVisitableItem {
|
|||||||
protected void removeNotify() {
|
protected void removeNotify() {
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl);
|
||||||
tagResults.deleteObserver(this);
|
tagResults.deleteObserver(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.datamodel;
|
|||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
import org.openide.nodes.Children;
|
import org.openide.nodes.Children;
|
||||||
@ -72,12 +73,12 @@ public class VolumeNode extends AbstractContentNode<Volume> {
|
|||||||
// Listen for ingest events so that we can detect new added files (e.g. carved)
|
// Listen for ingest events so that we can detect new added files (e.g. carved)
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
// Listen for case events so that we can detect when case is closed
|
// Listen for case events so that we can detect when case is closed
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeListeners() {
|
private void removeListeners() {
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -32,6 +32,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -311,7 +312,7 @@ final public class Accounts implements AutopsyVisitableItem {
|
|||||||
protected void removeNotify() {
|
protected void removeNotify() {
|
||||||
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
IngestManager.getInstance().removeIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
IngestManager.getInstance().removeIngestModuleEventListener(pcl);
|
||||||
Case.removePropertyChangeListener(pcl);
|
Case.removeEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
super.removeNotify();
|
super.removeNotify();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -319,7 +320,7 @@ final public class Accounts implements AutopsyVisitableItem {
|
|||||||
protected void addNotify() {
|
protected void addNotify() {
|
||||||
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
IngestManager.getInstance().addIngestJobEventListener(pcl);
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
IngestManager.getInstance().addIngestModuleEventListener(pcl);
|
||||||
Case.addPropertyChangeListener(pcl);
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), pcl);
|
||||||
super.addNotify();
|
super.addNotify();
|
||||||
refreshKeys();
|
refreshKeys();
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ import java.beans.PropertyVetoException;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -151,7 +152,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Case.addEventSubscriber(new HashSet<>(Arrays.asList(Case.Events.CURRENT_CASE.toString(), Case.Events.DATA_SOURCE_ADDED.toString())), this);
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE, Case.Events.DATA_SOURCE_ADDED), this);
|
||||||
this.em.addPropertyChangeListener(this);
|
this.em.addPropertyChangeListener(this);
|
||||||
IngestManager.getInstance().addIngestJobEventListener(this);
|
IngestManager.getInstance().addIngestJobEventListener(this);
|
||||||
IngestManager.getInstance().addIngestModuleEventListener(this);
|
IngestManager.getInstance().addIngestModuleEventListener(this);
|
||||||
|
@ -28,6 +28,7 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -53,6 +54,9 @@ class DateSearchFilter extends AbstractFileSearchFilter<DateSearchPanel> {
|
|||||||
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/yyyy");
|
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/yyyy");
|
||||||
private static final String SEPARATOR = "SEPARATOR"; //NON-NLS
|
private static final String SEPARATOR = "SEPARATOR"; //NON-NLS
|
||||||
|
|
||||||
|
private static final Set<Case.Events> CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.CURRENT_CASE,
|
||||||
|
Case.Events.DATA_SOURCE_ADDED, Case.Events.DATA_SOURCE_DELETED);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* New DateSearchFilter with the default panel
|
* New DateSearchFilter with the default panel
|
||||||
*/
|
*/
|
||||||
@ -62,7 +66,7 @@ class DateSearchFilter extends AbstractFileSearchFilter<DateSearchPanel> {
|
|||||||
|
|
||||||
private DateSearchFilter(DateSearchPanel panel) {
|
private DateSearchFilter(DateSearchPanel panel) {
|
||||||
super(panel);
|
super(panel);
|
||||||
Case.addPropertyChangeListener(this.new CasePropertyChangeListener());
|
Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, this.new CasePropertyChangeListener());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -20,7 +20,7 @@ package org.sleuthkit.autopsy.filesearch;
|
|||||||
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.util.EnumSet;
|
||||||
import org.openide.util.HelpCtx;
|
import org.openide.util.HelpCtx;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.openide.util.actions.CallableSystemAction;
|
import org.openide.util.actions.CallableSystemAction;
|
||||||
@ -35,14 +35,10 @@ final class FileSearchAction extends CallableSystemAction implements FileSearchP
|
|||||||
FileSearchAction() {
|
FileSearchAction() {
|
||||||
super();
|
super();
|
||||||
setEnabled(Case.isCaseOpen());
|
setEnabled(Case.isCaseOpen());
|
||||||
Case.addPropertyChangeListener(new PropertyChangeListener() {
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> {
|
||||||
@Override
|
|
||||||
public void propertyChange(PropertyChangeEvent evt) {
|
|
||||||
if (evt.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) {
|
if (evt.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) {
|
||||||
setEnabled(evt.getNewValue() != null);
|
setEnabled(evt.getNewValue() != null);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -229,7 +230,7 @@ public class IngestManager {
|
|||||||
* opened/closed) events.
|
* opened/closed) events.
|
||||||
*/
|
*/
|
||||||
private void subscribeToCaseEvents() {
|
private void subscribeToCaseEvents() {
|
||||||
Case.addEventSubscriber(Case.Events.CURRENT_CASE.toString(), (PropertyChangeEvent event) -> {
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent event) -> {
|
||||||
if (event.getNewValue() != null) {
|
if (event.getNewValue() != null) {
|
||||||
handleCaseOpened();
|
handleCaseOpened();
|
||||||
} else {
|
} else {
|
||||||
|
@ -25,6 +25,7 @@ import java.awt.Font;
|
|||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
|
import java.util.EnumSet;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.openide.windows.Mode;
|
import org.openide.windows.Mode;
|
||||||
@ -128,7 +129,7 @@ class IngestMessagesToolbar extends javax.swing.JPanel {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Case.addPropertyChangeListener((PropertyChangeEvent evt) -> {
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> {
|
||||||
if (evt.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) {
|
if (evt.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) {
|
||||||
setEnabled(evt.getNewValue() != null && RuntimeProperties.runningWithGUI());
|
setEnabled(evt.getNewValue() != null && RuntimeProperties.runningWithGUI());
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ import java.awt.event.ActionListener;
|
|||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.logging.FileHandler;
|
import java.util.logging.FileHandler;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.SimpleFormatter;
|
import java.util.logging.SimpleFormatter;
|
||||||
@ -121,7 +122,7 @@ public final class IngestMonitor {
|
|||||||
|
|
||||||
MonitorTimerAction() {
|
MonitorTimerAction() {
|
||||||
findRootDirectoryForCurrentCase();
|
findRootDirectoryForCurrentCase();
|
||||||
Case.addEventSubscriber(Case.Events.CURRENT_CASE.toString(), (PropertyChangeEvent evt) -> {
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> {
|
||||||
if (evt instanceof AutopsyEvent) {
|
if (evt instanceof AutopsyEvent) {
|
||||||
AutopsyEvent event = (AutopsyEvent) evt;
|
AutopsyEvent event = (AutopsyEvent) evt;
|
||||||
if (AutopsyEvent.SourceType.LOCAL == event.getSourceType() && event.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) {
|
if (AutopsyEvent.SourceType.LOCAL == event.getSourceType() && event.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) {
|
||||||
|
@ -23,7 +23,7 @@ import java.awt.event.ActionListener;
|
|||||||
import java.awt.event.WindowAdapter;
|
import java.awt.event.WindowAdapter;
|
||||||
import java.awt.event.WindowEvent;
|
import java.awt.event.WindowEvent;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.util.EnumSet;
|
||||||
import org.openide.util.HelpCtx;
|
import org.openide.util.HelpCtx;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.openide.util.actions.CallableSystemAction;
|
import org.openide.util.actions.CallableSystemAction;
|
||||||
@ -43,14 +43,10 @@ class HashDbPanelSearchAction extends CallableSystemAction {
|
|||||||
HashDbPanelSearchAction() {
|
HashDbPanelSearchAction() {
|
||||||
super();
|
super();
|
||||||
setEnabled(Case.isCaseOpen());
|
setEnabled(Case.isCaseOpen());
|
||||||
Case.addPropertyChangeListener(new PropertyChangeListener() {
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public void propertyChange(PropertyChangeEvent evt) {
|
|
||||||
if (evt.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) {
|
if (evt.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) {
|
||||||
setEnabled(evt.getNewValue() != null);
|
setEnabled(evt.getNewValue() != null);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ import java.awt.event.ActionEvent;
|
|||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import javax.swing.ImageIcon;
|
import javax.swing.ImageIcon;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
@ -81,7 +82,7 @@ public final class ReportWizardAction extends CallableSystemAction implements Pr
|
|||||||
|
|
||||||
public ReportWizardAction() {
|
public ReportWizardAction() {
|
||||||
setEnabled(false);
|
setEnabled(false);
|
||||||
Case.addPropertyChangeListener((PropertyChangeEvent evt) -> {
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> {
|
||||||
if (evt.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) {
|
if (evt.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) {
|
||||||
Case newCase = (Case) evt.getNewValue();
|
Case newCase = (Case) evt.getNewValue();
|
||||||
setEnabled(newCase != null && RuntimeProperties.runningWithGUI());
|
setEnabled(newCase != null && RuntimeProperties.runningWithGUI());
|
||||||
|
@ -23,6 +23,7 @@ import java.awt.event.ActionListener;
|
|||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.event.PopupMenuEvent;
|
import javax.swing.event.PopupMenuEvent;
|
||||||
@ -76,7 +77,7 @@ class DropdownToolbar extends javax.swing.JPanel {
|
|||||||
private void customizeComponents() {
|
private void customizeComponents() {
|
||||||
searchSettingsChangeListener = new SearchSettingsChangeListener();
|
searchSettingsChangeListener = new SearchSettingsChangeListener();
|
||||||
KeywordSearch.getServer().addServerActionListener(searchSettingsChangeListener);
|
KeywordSearch.getServer().addServerActionListener(searchSettingsChangeListener);
|
||||||
Case.addPropertyChangeListener(searchSettingsChangeListener);
|
Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), searchSettingsChangeListener);
|
||||||
|
|
||||||
DropdownListSearchPanel listsPanel = DropdownListSearchPanel.getDefault();
|
DropdownListSearchPanel listsPanel = DropdownListSearchPanel.getDefault();
|
||||||
listsPanel.addSearchButtonActionListener((ActionEvent e) -> {
|
listsPanel.addSearchButtonActionListener((ActionEvent e) -> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user