mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-16 09:47:42 +00:00
Add more change listeners for UserPreferences
This commit is contained in:
parent
b3867eb4ff
commit
f771ca1634
@ -33,6 +33,7 @@ public final class UserPreferences {
|
|||||||
public static final String HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE = "HideKnownFilesInDataSourcesTree"; //NON-NLS
|
public static final String HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE = "HideKnownFilesInDataSourcesTree"; //NON-NLS
|
||||||
public static final String HIDE_KNOWN_FILES_IN_VIEWS_TREE = "HideKnownFilesInViewsTree"; //NON-NLS
|
public static final String HIDE_KNOWN_FILES_IN_VIEWS_TREE = "HideKnownFilesInViewsTree"; //NON-NLS
|
||||||
public static final String DISPLAY_TIMES_IN_LOCAL_TIME = "DisplayTimesInLocalTime"; //NON-NLS
|
public static final String DISPLAY_TIMES_IN_LOCAL_TIME = "DisplayTimesInLocalTime"; //NON-NLS
|
||||||
|
public static final String NUMBER_OF_FILE_INGEST_THREADS = "NumberOfFileingestThreads"; //NON-NLS
|
||||||
|
|
||||||
// Prevent instantiation.
|
// Prevent instantiation.
|
||||||
private UserPreferences() {
|
private UserPreferences() {
|
||||||
@ -77,4 +78,12 @@ public final class UserPreferences {
|
|||||||
public static void setDisplayTimesInLocalTime(boolean value) {
|
public static void setDisplayTimesInLocalTime(boolean value) {
|
||||||
preferences.putBoolean(DISPLAY_TIMES_IN_LOCAL_TIME, value);
|
preferences.putBoolean(DISPLAY_TIMES_IN_LOCAL_TIME, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int numberOfFileIngestThreads() {
|
||||||
|
return preferences.getInt(NUMBER_OF_FILE_INGEST_THREADS, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setNumberOfFileIngestThreads(int value) {
|
||||||
|
preferences.putInt(NUMBER_OF_FILE_INGEST_THREADS, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,10 @@ package org.sleuthkit.autopsy.corecomponents;
|
|||||||
|
|
||||||
import javax.swing.DefaultComboBoxModel;
|
import javax.swing.DefaultComboBoxModel;
|
||||||
import org.sleuthkit.autopsy.core.UserPreferences;
|
import org.sleuthkit.autopsy.core.UserPreferences;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options panel that allow users to set application preferences.
|
||||||
|
*/
|
||||||
final class AutopsyOptionsPanel extends javax.swing.JPanel {
|
final class AutopsyOptionsPanel extends javax.swing.JPanel {
|
||||||
|
|
||||||
AutopsyOptionsPanel(AutopsyOptionsPanelController controller) {
|
AutopsyOptionsPanel(AutopsyOptionsPanelController controller) {
|
||||||
@ -39,7 +41,7 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel {
|
|||||||
boolean useLocalTime = UserPreferences.displayTimesInLocalTime();
|
boolean useLocalTime = UserPreferences.displayTimesInLocalTime();
|
||||||
useLocalTimeRB.setSelected(useLocalTime);
|
useLocalTimeRB.setSelected(useLocalTime);
|
||||||
useGMTTimeRB.setSelected(!useLocalTime);
|
useGMTTimeRB.setSelected(!useLocalTime);
|
||||||
numberOfFileIngestThreadsComboBox.setSelectedItem(IngestManager.getNumberOfFileIngestThreads());
|
numberOfFileIngestThreadsComboBox.setSelectedItem(UserPreferences.numberOfFileIngestThreads());
|
||||||
}
|
}
|
||||||
|
|
||||||
void store() {
|
void store() {
|
||||||
@ -47,7 +49,7 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel {
|
|||||||
UserPreferences.setHideKnownFilesInDataSourcesTree(dataSourcesHideKnownCB.isSelected());
|
UserPreferences.setHideKnownFilesInDataSourcesTree(dataSourcesHideKnownCB.isSelected());
|
||||||
UserPreferences.setHideKnownFilesInViewsTree(viewsHideKnownCB.isSelected());
|
UserPreferences.setHideKnownFilesInViewsTree(viewsHideKnownCB.isSelected());
|
||||||
UserPreferences.setDisplayTimesInLocalTime(useLocalTimeRB.isSelected());
|
UserPreferences.setDisplayTimesInLocalTime(useLocalTimeRB.isSelected());
|
||||||
IngestManager.setNumberOfFileIngestThreads((Integer) numberOfFileIngestThreadsComboBox.getSelectedItem());
|
UserPreferences.setNumberOfFileIngestThreads((Integer) numberOfFileIngestThreadsComboBox.getSelectedItem());
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean valid() {
|
boolean valid() {
|
||||||
@ -161,7 +163,6 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel {
|
|||||||
.addComponent(numberOfFileIngestThreadsComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(numberOfFileIngestThreadsComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
);
|
);
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
private javax.swing.ButtonGroup buttonGroup1;
|
private javax.swing.ButtonGroup buttonGroup1;
|
||||||
private javax.swing.ButtonGroup buttonGroup3;
|
private javax.swing.ButtonGroup buttonGroup3;
|
||||||
|
@ -139,7 +139,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat
|
|||||||
refreshContentTreeSafe();
|
refreshContentTreeSafe();
|
||||||
break;
|
break;
|
||||||
case UserPreferences.HIDE_KNOWN_FILES_IN_VIEWS_TREE:
|
case UserPreferences.HIDE_KNOWN_FILES_IN_VIEWS_TREE:
|
||||||
// RJCTODO: There does not appear to be a way to refresh the Views subtree
|
// TODO: Need a way to refresh the Views subtree
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,16 +29,17 @@ import java.util.concurrent.Executors;
|
|||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import java.util.prefs.PreferenceChangeEvent;
|
||||||
|
import java.util.prefs.PreferenceChangeListener;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.netbeans.api.progress.ProgressHandle;
|
import org.netbeans.api.progress.ProgressHandle;
|
||||||
import org.netbeans.api.progress.ProgressHandleFactory;
|
import org.netbeans.api.progress.ProgressHandleFactory;
|
||||||
import org.openide.util.Cancellable;
|
import org.openide.util.Cancellable;
|
||||||
import org.openide.util.NbPreferences;
|
|
||||||
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||||
import org.sleuthkit.datamodel.Content;
|
import org.sleuthkit.datamodel.Content;
|
||||||
import java.util.prefs.Preferences;
|
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
|
import org.sleuthkit.autopsy.core.UserPreferences;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages the execution of ingest jobs.
|
* Manages the execution of ingest jobs.
|
||||||
@ -46,12 +47,10 @@ import javax.swing.JOptionPane;
|
|||||||
public class IngestManager {
|
public class IngestManager {
|
||||||
|
|
||||||
private static final int MAX_NUMBER_OF_DATA_SOURCE_INGEST_THREADS = 1;
|
private static final int MAX_NUMBER_OF_DATA_SOURCE_INGEST_THREADS = 1;
|
||||||
private static final String NUMBER_OF_FILE_INGEST_THREADS_KEY = "NumberOfFileingestThreads"; //NON-NLS
|
|
||||||
private static final int MIN_NUMBER_OF_FILE_INGEST_THREADS = 1;
|
private static final int MIN_NUMBER_OF_FILE_INGEST_THREADS = 1;
|
||||||
private static final int MAX_NUMBER_OF_FILE_INGEST_THREADS = 16;
|
private static final int MAX_NUMBER_OF_FILE_INGEST_THREADS = 16;
|
||||||
private static final int DEFAULT_NUMBER_OF_FILE_INGEST_THREADS = 2;
|
private static final int DEFAULT_NUMBER_OF_FILE_INGEST_THREADS = 2;
|
||||||
private static final Logger logger = Logger.getLogger(IngestManager.class.getName());
|
private static final Logger logger = Logger.getLogger(IngestManager.class.getName());
|
||||||
private static final Preferences userPreferences = NbPreferences.forModule(IngestManager.class);
|
|
||||||
private static final IngestManager instance = new IngestManager();
|
private static final IngestManager instance = new IngestManager();
|
||||||
private final PropertyChangeSupport ingestJobEventPublisher = new PropertyChangeSupport(IngestManager.class);
|
private final PropertyChangeSupport ingestJobEventPublisher = new PropertyChangeSupport(IngestManager.class);
|
||||||
private final PropertyChangeSupport ingestModuleEventPublisher = new PropertyChangeSupport(IngestManager.class);
|
private final PropertyChangeSupport ingestModuleEventPublisher = new PropertyChangeSupport(IngestManager.class);
|
||||||
@ -82,10 +81,23 @@ public class IngestManager {
|
|||||||
*/
|
*/
|
||||||
private IngestManager() {
|
private IngestManager() {
|
||||||
startDataSourceIngestThread();
|
startDataSourceIngestThread();
|
||||||
int numberOfFileIngestThreads = getNumberOfFileIngestThreads();
|
int numberOfFileIngestThreads = UserPreferences.numberOfFileIngestThreads();
|
||||||
|
if ((numberOfFileIngestThreads < MIN_NUMBER_OF_FILE_INGEST_THREADS) || (numberOfFileIngestThreads > MAX_NUMBER_OF_FILE_INGEST_THREADS)) {
|
||||||
|
numberOfFileIngestThreads = DEFAULT_NUMBER_OF_FILE_INGEST_THREADS;
|
||||||
|
UserPreferences.setNumberOfFileIngestThreads(numberOfFileIngestThreads);
|
||||||
|
}
|
||||||
for (int i = 0; i < numberOfFileIngestThreads; ++i) {
|
for (int i = 0; i < numberOfFileIngestThreads; ++i) {
|
||||||
startFileIngestThread();
|
startFileIngestThread();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UserPreferences.addChangeListener(new PreferenceChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void preferenceChange(PreferenceChangeEvent evt) {
|
||||||
|
if (evt.getKey().equals(UserPreferences.NUMBER_OF_FILE_INGEST_THREADS)) {
|
||||||
|
setNumberOfFileIngestThreads();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -115,13 +127,6 @@ public class IngestManager {
|
|||||||
return MAX_NUMBER_OF_FILE_INGEST_THREADS;
|
return MAX_NUMBER_OF_FILE_INGEST_THREADS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the number of file ingest threads the ingest manager will use.
|
|
||||||
*/
|
|
||||||
public synchronized static int getNumberOfFileIngestThreads() {
|
|
||||||
return userPreferences.getInt(NUMBER_OF_FILE_INGEST_THREADS_KEY, DEFAULT_NUMBER_OF_FILE_INGEST_THREADS);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Changes the number of file ingest threads the ingest manager will use to
|
* Changes the number of file ingest threads the ingest manager will use to
|
||||||
* no more than MAX_NUMBER_OF_FILE_INGEST_THREADS and no less than
|
* no more than MAX_NUMBER_OF_FILE_INGEST_THREADS and no less than
|
||||||
@ -130,12 +135,12 @@ public class IngestManager {
|
|||||||
*
|
*
|
||||||
* @param numberOfThreads The desired number of file ingest threads.
|
* @param numberOfThreads The desired number of file ingest threads.
|
||||||
*/
|
*/
|
||||||
public synchronized static void setNumberOfFileIngestThreads(int numberOfThreads) {
|
public synchronized static void setNumberOfFileIngestThreads() {
|
||||||
|
int numberOfThreads = UserPreferences.numberOfFileIngestThreads();
|
||||||
if ((numberOfThreads < MIN_NUMBER_OF_FILE_INGEST_THREADS) || (numberOfThreads > MAX_NUMBER_OF_FILE_INGEST_THREADS)) {
|
if ((numberOfThreads < MIN_NUMBER_OF_FILE_INGEST_THREADS) || (numberOfThreads > MAX_NUMBER_OF_FILE_INGEST_THREADS)) {
|
||||||
numberOfThreads = DEFAULT_NUMBER_OF_FILE_INGEST_THREADS;
|
numberOfThreads = DEFAULT_NUMBER_OF_FILE_INGEST_THREADS;
|
||||||
|
UserPreferences.setNumberOfFileIngestThreads(numberOfThreads);
|
||||||
}
|
}
|
||||||
userPreferences.putInt(NUMBER_OF_FILE_INGEST_THREADS_KEY, numberOfThreads);
|
|
||||||
|
|
||||||
if (instance.fileIngestThreads.size() != numberOfThreads) {
|
if (instance.fileIngestThreads.size() != numberOfThreads) {
|
||||||
if (instance.fileIngestThreads.size() > numberOfThreads) {
|
if (instance.fileIngestThreads.size() > numberOfThreads) {
|
||||||
Long[] threadIds = instance.fileIngestThreads.keySet().toArray(new Long[instance.fileIngestThreads.size()]);
|
Long[] threadIds = instance.fileIngestThreads.keySet().toArray(new Long[instance.fileIngestThreads.size()]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user