From f838a9a8c40b075c28f7cd3d7a93c84c567212f3 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Thu, 6 Sep 2018 09:56:14 -0400 Subject: [PATCH 01/11] Initial panel. --- .../casemodule/ViewPreferencesPanel.form | 28 ++++++++++++ .../casemodule/ViewPreferencesPanel.java | 45 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100755 Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.form create mode 100755 Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.java diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.form new file mode 100755 index 0000000000..4f9abb50dc --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.form @@ -0,0 +1,28 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.java new file mode 100755 index 0000000000..c9e8f59d1a --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.java @@ -0,0 +1,45 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.sleuthkit.autopsy.casemodule; + +/** + * + * @author dgrove + */ +public class ViewPreferencesPanel extends javax.swing.JPanel { + + /** + * Creates new form ViewPreferencesPanel + */ + public ViewPreferencesPanel() { + 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. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 400, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 300, Short.MAX_VALUE) + ); + }// //GEN-END:initComponents + + + // Variables declaration - do not modify//GEN-BEGIN:variables + // End of variables declaration//GEN-END:variables +} From 2a49a171649ae9f97f5ccd2d3557e93b33bb4b08 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Tue, 11 Sep 2018 23:56:35 -0400 Subject: [PATCH 02/11] Partial implementation. --- .../autopsy/casemodule/Bundle.properties | 2 + .../autopsy/casemodule/CasePreferences.java | 93 +++++ .../casemodule/ViewPreferencesPanel.form | 28 -- .../casemodule/ViewPreferencesPanel.java | 45 --- .../services/TagsOptionsPanelController.java | 2 +- .../EamOptionsPanelController.java | 2 +- .../autopsy/core/UserPreferences.java | 4 +- .../corecomponents/AutopsyOptionsPanel.form | 92 ++--- .../corecomponents/AutopsyOptionsPanel.java | 228 +++++------ .../autopsy/corecomponents/Bundle.properties | 46 ++- .../corecomponents/Bundle_ja.properties | 27 +- .../MultiUserSettingsPanelController.java | 2 +- .../corecomponents/ViewPreferencesDialog.form | 78 ++++ .../corecomponents/ViewPreferencesDialog.java | 133 +++++++ .../corecomponents/ViewPreferencesPanel.form | 335 ++++++++++++++++ .../corecomponents/ViewPreferencesPanel.java | 362 ++++++++++++++++++ .../ViewPreferencesPanelController.java | 149 +++++++ .../datamodel/AutopsyTreeChildFactory.java | 18 +- .../autopsy/datamodel/ExtractedContent.java | 22 +- .../autopsy/datamodel/accounts/Accounts.java | 27 +- .../autopsy/directorytree/Bundle.properties | 7 +- .../DirectoryTreeTopComponent.form | 78 ++-- .../DirectoryTreeTopComponent.java | 120 +++--- .../ExternalViewerOptionsPanelController.java | 2 +- .../directorytree/ViewContextAction.java | 18 +- .../directorytree/view-preferences-24.png | Bin 0 -> 2039 bytes .../autopsy/images/view-preferences-32.png | Bin 0 -> 873 bytes .../ingest/IngestOptionsPanelController.java | 2 +- ...FileExtMismatchOptionsPanelController.java | 2 +- .../FileTypeIdOptionsPanelController.java | 2 +- .../HashDatabaseOptionsPanelController.java | 2 +- ...restingItemDefsOptionsPanelController.java | 2 +- .../AutoIngestSettingsPanelController.java | 2 +- .../configuration/SharedConfiguration.java | 5 +- .../ImageGalleryOptionsPanelController.java | 2 +- .../KeywordSearchOptionsPanelController.java | 2 +- 36 files changed, 1571 insertions(+), 370 deletions(-) create mode 100755 Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java delete mode 100755 Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.form delete mode 100755 Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.java create mode 100755 Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.form create mode 100755 Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.java create mode 100755 Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form create mode 100755 Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java create mode 100755 Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanelController.java create mode 100755 Core/src/org/sleuthkit/autopsy/directorytree/view-preferences-24.png create mode 100755 Core/src/org/sleuthkit/autopsy/images/view-preferences-32.png diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties index 4154a913b9..a89ea845dd 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties @@ -233,3 +233,5 @@ LocalDiskSelectionDialog.okButton.text=OK LocalDiskPanel.localDiskLabel.text=Local Disk: LocalDiskPanel.imageWriterErrorLabel.text=Error Label LocalDiskSelectionDialog.title=Select Local Disk +ViewPreferencesDialog.okButton.text=OK +ViewPreferencesDialog.cancelButton.text=Cancel diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java new file mode 100755 index 0000000000..8d40b23538 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java @@ -0,0 +1,93 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2018 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.casemodule; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Properties; +import java.util.logging.Level; +import org.sleuthkit.autopsy.coreutils.Logger; + +/** + * Read and update case preference file values. + */ +public final class CasePreferences { + + private static final String SETTINGS_FILE = "CasePreferences.properties"; //NON-NLS + public static final String GROUP_ITEMS_IN_TREE_BY_DATASOURCE = "GroupItemsInTreeByDataSource"; //NON-NLS + + private static final Logger logger = Logger.getLogger(CasePreferences.class.getName()); + + private Boolean groupItemsInTreeByDataSource = null; + + //DLG: + public CasePreferences(Case currentCase) { + loadFromStorage(currentCase); + } + + public Boolean getGroupItemsInTreeByDataSource() { + return groupItemsInTreeByDataSource; + } + + public void setGroupItemsInTreeByDataSource(boolean value) { + groupItemsInTreeByDataSource = value; + } + + /** + * Load case preferences from the settings file. + */ + private void loadFromStorage(Case currentCase) { + Path settingsFile = Paths.get(currentCase.getConfigDirectory(), SETTINGS_FILE); //NON-NLS + if (settingsFile.toFile().exists()) { + // Read the settings + try (InputStream inputStream = Files.newInputStream(settingsFile)) { + Properties props = new Properties(); + props.load(inputStream); + if (props.getProperty("groupByDataSource", "false").equals("true")) { + groupItemsInTreeByDataSource = true; + } else { + groupItemsInTreeByDataSource = false; + } + } catch (IOException ex) { + logger.log(Level.SEVERE, "Error reading settings file", ex); + } + } + } + + /** + * Store case preferences in the settings file. + */ + public void saveToStorage(Case currentCase) { + Path settingsFile = Paths.get(currentCase.getConfigDirectory(), SETTINGS_FILE); //NON-NLS + Properties props = new Properties(); + if (groupItemsInTreeByDataSource != null) { + props.setProperty("groupByDataSource", (groupItemsInTreeByDataSource ? "true" : "false")); + } + + try (OutputStream fos = Files.newOutputStream(settingsFile)) { + props.store(fos, ""); //NON-NLS + } catch (IOException ex) { + logger.log(Level.SEVERE, "Error writing settings file", ex); + } + } +} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.form deleted file mode 100755 index 4f9abb50dc..0000000000 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.form +++ /dev/null @@ -1,28 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.java deleted file mode 100755 index c9e8f59d1a..0000000000 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ViewPreferencesPanel.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package org.sleuthkit.autopsy.casemodule; - -/** - * - * @author dgrove - */ -public class ViewPreferencesPanel extends javax.swing.JPanel { - - /** - * Creates new form ViewPreferencesPanel - */ - public ViewPreferencesPanel() { - 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. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); - this.setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 400, Short.MAX_VALUE) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 300, Short.MAX_VALUE) - ); - }// //GEN-END:initComponents - - - // Variables declaration - do not modify//GEN-BEGIN:variables - // End of variables declaration//GEN-END:variables -} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsOptionsPanelController.java b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsOptionsPanelController.java index fcd2131f90..8fa16928d4 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsOptionsPanelController.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsOptionsPanelController.java @@ -31,7 +31,7 @@ import org.openide.util.Lookup; iconBase = "org/sleuthkit/autopsy/casemodule/services/tag-options-panel-icon.png", keywords = "#OptionsCategory_TagNames", keywordsCategory = "CustomTagNames", - position = 11 + position = 12 ) public final class TagsOptionsPanelController extends OptionsPanelController { diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamOptionsPanelController.java b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamOptionsPanelController.java index dab04c255f..045afe99b5 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamOptionsPanelController.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/EamOptionsPanelController.java @@ -35,7 +35,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; */ @OptionsPanelController.TopLevelRegistration(categoryName = "#OptionsCategory_Name_Central_Repository_Options", iconBase = "org/sleuthkit/autopsy/centralrepository/images/options-icon.png", - position = 14, + position = 15, keywords = "#OptionsCategory_Keywords_Central_Repository_Options", keywordsCategory = "CentralRepository") public final class EamOptionsPanelController extends OptionsPanelController { diff --git a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java index 78b726111e..3b92e24481 100644 --- a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java +++ b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java @@ -189,11 +189,11 @@ public final class UserPreferences { preferences.putInt(NUMBER_OF_FILE_INGEST_THREADS, value); } - public static boolean groupItemsInTreeByDatasource() { + public static boolean groupItemsInTreeByDatasource() { //DLG: Replace use of this with the equivallent method in CasePreferences return preferences.getBoolean(GROUP_ITEMS_IN_TREE_BY_DATASOURCE, false); } - public static void setGroupItemsInTreeByDatasource(boolean value) { + public static void setGroupItemsInTreeByDatasource(boolean value) { //DLG: Replace use of this with the equivallent method in CasePreferences preferences.putBoolean(GROUP_ITEMS_IN_TREE_BY_DATASOURCE, value); } diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.form b/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.form index a9ead822e7..b63f0c6f8b 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.form +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.form @@ -69,7 +69,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -232,12 +232,12 @@ - + - + @@ -254,19 +254,19 @@ - - - - - + + + + + - - - + + + @@ -291,27 +291,27 @@ - + - + - + - + - + - + - + - + @@ -324,36 +324,36 @@ - + - + - + - + - + - + - + - + @@ -363,24 +363,24 @@ - + - + - + - + - + - + @@ -390,24 +390,24 @@ - + - + - + - + - + - + @@ -417,30 +417,30 @@ - + - + - + - + - + - + diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.java index 6c5a67a3f7..2bdf9dd7ea 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.java @@ -286,15 +286,15 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { */ void load() { boolean keepPreferredViewer = UserPreferences.keepPreferredContentViewer(); - keepCurrentViewerRB.setSelected(keepPreferredViewer); - useBestViewerRB.setSelected(!keepPreferredViewer); - dataSourcesHideKnownCB.setSelected(UserPreferences.hideKnownFilesInDataSourcesTree()); - viewsHideKnownCB.setSelected(UserPreferences.hideKnownFilesInViewsTree()); - dataSourcesHideSlackCB.setSelected(UserPreferences.hideSlackFilesInDataSourcesTree()); - viewsHideSlackCB.setSelected(UserPreferences.hideSlackFilesInViewsTree()); + oldKeepCurrentViewerRB.setSelected(keepPreferredViewer); + oldUseBestViewerRB.setSelected(!keepPreferredViewer); + oldDataSourcesHideKnownCB.setSelected(UserPreferences.hideKnownFilesInDataSourcesTree()); + oldViewsHideKnownCB.setSelected(UserPreferences.hideKnownFilesInViewsTree()); + oldDataSourcesHideSlackCB.setSelected(UserPreferences.hideSlackFilesInDataSourcesTree()); + oldViewsHideSlackCB.setSelected(UserPreferences.hideSlackFilesInViewsTree()); boolean useLocalTime = UserPreferences.displayTimesInLocalTime(); - useLocalTimeRB.setSelected(useLocalTime); - useGMTTimeRB.setSelected(!useLocalTime); + oldUseLocalTimeRB.setSelected(useLocalTime); + oldUseGMTTimeRB.setSelected(!useLocalTime); String path = ModuleSettings.getConfigSetting(ReportBranding.MODULE_NAME, ReportBranding.AGENCY_LOGO_PATH_PROP); boolean useDefault = (path == null || path.isEmpty()); defaultLogoRB.setSelected(useDefault); @@ -350,12 +350,12 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { * Store the current user preferences. */ void store() { - UserPreferences.setKeepPreferredContentViewer(keepCurrentViewerRB.isSelected()); - UserPreferences.setHideKnownFilesInDataSourcesTree(dataSourcesHideKnownCB.isSelected()); - UserPreferences.setHideKnownFilesInViewsTree(viewsHideKnownCB.isSelected()); - UserPreferences.setHideSlackFilesInDataSourcesTree(dataSourcesHideSlackCB.isSelected()); - UserPreferences.setHideSlackFilesInViewsTree(viewsHideSlackCB.isSelected()); - UserPreferences.setDisplayTimesInLocalTime(useLocalTimeRB.isSelected()); + UserPreferences.setKeepPreferredContentViewer(oldKeepCurrentViewerRB.isSelected()); + UserPreferences.setHideKnownFilesInDataSourcesTree(oldDataSourcesHideKnownCB.isSelected()); + UserPreferences.setHideKnownFilesInViewsTree(oldViewsHideKnownCB.isSelected()); + UserPreferences.setHideSlackFilesInDataSourcesTree(oldDataSourcesHideSlackCB.isSelected()); + UserPreferences.setHideSlackFilesInViewsTree(oldViewsHideSlackCB.isSelected()); + UserPreferences.setDisplayTimesInLocalTime(oldUseLocalTimeRB.isSelected()); UserPreferences.setLogFileCount(Integer.parseInt(logFileCount.getText())); if (!agencyLogoPathField.getText().isEmpty()) { File file = new File(agencyLogoPathField.getText()); @@ -535,19 +535,19 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { defaultLogoRB = new javax.swing.JRadioButton(); specifyLogoRB = new javax.swing.JRadioButton(); agencyLogoPathFieldValidationLabel = new javax.swing.JLabel(); - viewPanel = new javax.swing.JPanel(); + oldViewPanel = new javax.swing.JPanel(); jLabelSelectFile = new javax.swing.JLabel(); - useBestViewerRB = new javax.swing.JRadioButton(); - keepCurrentViewerRB = new javax.swing.JRadioButton(); + oldUseBestViewerRB = new javax.swing.JRadioButton(); + oldKeepCurrentViewerRB = new javax.swing.JRadioButton(); jLabelHideKnownFiles = new javax.swing.JLabel(); - dataSourcesHideKnownCB = new javax.swing.JCheckBox(); - viewsHideKnownCB = new javax.swing.JCheckBox(); + oldDataSourcesHideKnownCB = new javax.swing.JCheckBox(); + oldViewsHideKnownCB = new javax.swing.JCheckBox(); jLabelHideSlackFiles = new javax.swing.JLabel(); - dataSourcesHideSlackCB = new javax.swing.JCheckBox(); - viewsHideSlackCB = new javax.swing.JCheckBox(); + oldDataSourcesHideSlackCB = new javax.swing.JCheckBox(); + oldViewsHideSlackCB = new javax.swing.JCheckBox(); jLabelTimeDisplay = new javax.swing.JLabel(); - useLocalTimeRB = new javax.swing.JRadioButton(); - useGMTTimeRB = new javax.swing.JRadioButton(); + oldUseLocalTimeRB = new javax.swing.JRadioButton(); + oldUseGMTTimeRB = new javax.swing.JRadioButton(); runtimePanel = new javax.swing.JPanel(); maxMemoryLabel = new javax.swing.JLabel(); maxMemoryUnitsLabel = new javax.swing.JLabel(); @@ -643,137 +643,137 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { .addGap(0, 0, Short.MAX_VALUE)) ); - viewPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.viewPanel.border.title"))); // NOI18N + oldViewPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldViewPanel.border.title"))); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jLabelSelectFile, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.jLabelSelectFile.text")); // NOI18N - fileSelectionButtonGroup.add(useBestViewerRB); - org.openide.awt.Mnemonics.setLocalizedText(useBestViewerRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.useBestViewerRB.text")); // NOI18N - useBestViewerRB.setToolTipText(org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.useBestViewerRB.toolTipText")); // NOI18N - useBestViewerRB.addActionListener(new java.awt.event.ActionListener() { + fileSelectionButtonGroup.add(oldUseBestViewerRB); + org.openide.awt.Mnemonics.setLocalizedText(oldUseBestViewerRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldUseBestViewerRB.text")); // NOI18N + oldUseBestViewerRB.setToolTipText(org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldUseBestViewerRB.toolTipText")); // NOI18N + oldUseBestViewerRB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - useBestViewerRBActionPerformed(evt); + oldUseBestViewerRBActionPerformed(evt); } }); - fileSelectionButtonGroup.add(keepCurrentViewerRB); - org.openide.awt.Mnemonics.setLocalizedText(keepCurrentViewerRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.keepCurrentViewerRB.text")); // NOI18N - keepCurrentViewerRB.setToolTipText(org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.keepCurrentViewerRB.toolTipText")); // NOI18N - keepCurrentViewerRB.addActionListener(new java.awt.event.ActionListener() { + fileSelectionButtonGroup.add(oldKeepCurrentViewerRB); + org.openide.awt.Mnemonics.setLocalizedText(oldKeepCurrentViewerRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldKeepCurrentViewerRB.text")); // NOI18N + oldKeepCurrentViewerRB.setToolTipText(org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldKeepCurrentViewerRB.toolTipText")); // NOI18N + oldKeepCurrentViewerRB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - keepCurrentViewerRBActionPerformed(evt); + oldKeepCurrentViewerRBActionPerformed(evt); } }); org.openide.awt.Mnemonics.setLocalizedText(jLabelHideKnownFiles, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.jLabelHideKnownFiles.text")); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(dataSourcesHideKnownCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.dataSourcesHideKnownCB.text")); // NOI18N - dataSourcesHideKnownCB.addActionListener(new java.awt.event.ActionListener() { + org.openide.awt.Mnemonics.setLocalizedText(oldDataSourcesHideKnownCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldDataSourcesHideKnownCB.text")); // NOI18N + oldDataSourcesHideKnownCB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - dataSourcesHideKnownCBActionPerformed(evt); + oldDataSourcesHideKnownCBActionPerformed(evt); } }); - org.openide.awt.Mnemonics.setLocalizedText(viewsHideKnownCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.viewsHideKnownCB.text")); // NOI18N - viewsHideKnownCB.addActionListener(new java.awt.event.ActionListener() { + org.openide.awt.Mnemonics.setLocalizedText(oldViewsHideKnownCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldViewsHideKnownCB.text")); // NOI18N + oldViewsHideKnownCB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - viewsHideKnownCBActionPerformed(evt); + oldViewsHideKnownCBActionPerformed(evt); } }); org.openide.awt.Mnemonics.setLocalizedText(jLabelHideSlackFiles, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.jLabelHideSlackFiles.text")); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(dataSourcesHideSlackCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.dataSourcesHideSlackCB.text")); // NOI18N - dataSourcesHideSlackCB.addActionListener(new java.awt.event.ActionListener() { + org.openide.awt.Mnemonics.setLocalizedText(oldDataSourcesHideSlackCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldDataSourcesHideSlackCB.text")); // NOI18N + oldDataSourcesHideSlackCB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - dataSourcesHideSlackCBActionPerformed(evt); + oldDataSourcesHideSlackCBActionPerformed(evt); } }); - org.openide.awt.Mnemonics.setLocalizedText(viewsHideSlackCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.viewsHideSlackCB.text")); // NOI18N - viewsHideSlackCB.addActionListener(new java.awt.event.ActionListener() { + org.openide.awt.Mnemonics.setLocalizedText(oldViewsHideSlackCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldViewsHideSlackCB.text")); // NOI18N + oldViewsHideSlackCB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - viewsHideSlackCBActionPerformed(evt); + oldViewsHideSlackCBActionPerformed(evt); } }); org.openide.awt.Mnemonics.setLocalizedText(jLabelTimeDisplay, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.jLabelTimeDisplay.text")); // NOI18N - displayTimesButtonGroup.add(useLocalTimeRB); - org.openide.awt.Mnemonics.setLocalizedText(useLocalTimeRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.useLocalTimeRB.text")); // NOI18N - useLocalTimeRB.addActionListener(new java.awt.event.ActionListener() { + displayTimesButtonGroup.add(oldUseLocalTimeRB); + org.openide.awt.Mnemonics.setLocalizedText(oldUseLocalTimeRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldUseLocalTimeRB.text")); // NOI18N + oldUseLocalTimeRB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - useLocalTimeRBActionPerformed(evt); + oldUseLocalTimeRBActionPerformed(evt); } }); - displayTimesButtonGroup.add(useGMTTimeRB); - org.openide.awt.Mnemonics.setLocalizedText(useGMTTimeRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.useGMTTimeRB.text")); // NOI18N - useGMTTimeRB.addActionListener(new java.awt.event.ActionListener() { + displayTimesButtonGroup.add(oldUseGMTTimeRB); + org.openide.awt.Mnemonics.setLocalizedText(oldUseGMTTimeRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldUseGMTTimeRB.text")); // NOI18N + oldUseGMTTimeRB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - useGMTTimeRBActionPerformed(evt); + oldUseGMTTimeRBActionPerformed(evt); } }); - javax.swing.GroupLayout viewPanelLayout = new javax.swing.GroupLayout(viewPanel); - viewPanel.setLayout(viewPanelLayout); - viewPanelLayout.setHorizontalGroup( - viewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, viewPanelLayout.createSequentialGroup() + javax.swing.GroupLayout oldViewPanelLayout = new javax.swing.GroupLayout(oldViewPanel); + oldViewPanel.setLayout(oldViewPanelLayout); + oldViewPanelLayout.setHorizontalGroup( + oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, oldViewPanelLayout.createSequentialGroup() .addContainerGap() - .addGroup(viewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(viewPanelLayout.createSequentialGroup() + .addGroup(oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(oldViewPanelLayout.createSequentialGroup() .addGap(10, 10, 10) - .addGroup(viewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(viewPanelLayout.createSequentialGroup() - .addGroup(viewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(useGMTTimeRB) - .addComponent(keepCurrentViewerRB) - .addComponent(useBestViewerRB) - .addComponent(dataSourcesHideKnownCB) - .addComponent(viewsHideKnownCB)) + .addGroup(oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(oldViewPanelLayout.createSequentialGroup() + .addGroup(oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(oldUseGMTTimeRB) + .addComponent(oldKeepCurrentViewerRB) + .addComponent(oldUseBestViewerRB) + .addComponent(oldDataSourcesHideKnownCB) + .addComponent(oldViewsHideKnownCB)) .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(viewPanelLayout.createSequentialGroup() - .addGroup(viewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(dataSourcesHideSlackCB) - .addComponent(viewsHideSlackCB) - .addComponent(useLocalTimeRB)) + .addGroup(oldViewPanelLayout.createSequentialGroup() + .addGroup(oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(oldDataSourcesHideSlackCB) + .addComponent(oldViewsHideSlackCB) + .addComponent(oldUseLocalTimeRB)) .addContainerGap(158, Short.MAX_VALUE)))) - .addGroup(viewPanelLayout.createSequentialGroup() - .addGroup(viewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(oldViewPanelLayout.createSequentialGroup() + .addGroup(oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabelHideSlackFiles) .addComponent(jLabelTimeDisplay) .addComponent(jLabelHideKnownFiles) .addComponent(jLabelSelectFile)) .addGap(30, 30, 30)))) ); - viewPanelLayout.setVerticalGroup( - viewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, viewPanelLayout.createSequentialGroup() + oldViewPanelLayout.setVerticalGroup( + oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, oldViewPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(jLabelSelectFile) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(useBestViewerRB) + .addComponent(oldUseBestViewerRB) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(keepCurrentViewerRB) + .addComponent(oldKeepCurrentViewerRB) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabelHideKnownFiles) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(dataSourcesHideKnownCB) + .addComponent(oldDataSourcesHideKnownCB) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(viewsHideKnownCB) + .addComponent(oldViewsHideKnownCB) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabelHideSlackFiles) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(dataSourcesHideSlackCB) + .addComponent(oldDataSourcesHideSlackCB) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(viewsHideSlackCB) + .addComponent(oldViewsHideSlackCB) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabelTimeDisplay) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(useLocalTimeRB) + .addComponent(oldUseLocalTimeRB) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(useGMTTimeRB)) + .addComponent(oldUseGMTTimeRB)) ); runtimePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.runtimePanel.border.title"))); // NOI18N @@ -889,7 +889,7 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(logoPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 1010, Short.MAX_VALUE) .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(viewPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(oldViewPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(runtimePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addContainerGap()) @@ -899,7 +899,7 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { .addGroup(jPanel1Layout.createSequentialGroup() .addGap(0, 0, 0) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(viewPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(oldViewPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(runtimePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(logoPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -940,37 +940,37 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); }//GEN-LAST:event_memFieldKeyReleased - private void useGMTTimeRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useGMTTimeRBActionPerformed + private void oldUseGMTTimeRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldUseGMTTimeRBActionPerformed firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_useGMTTimeRBActionPerformed + }//GEN-LAST:event_oldUseGMTTimeRBActionPerformed - private void useLocalTimeRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useLocalTimeRBActionPerformed + private void oldUseLocalTimeRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldUseLocalTimeRBActionPerformed firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_useLocalTimeRBActionPerformed + }//GEN-LAST:event_oldUseLocalTimeRBActionPerformed - private void viewsHideSlackCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewsHideSlackCBActionPerformed + private void oldViewsHideSlackCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldViewsHideSlackCBActionPerformed firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_viewsHideSlackCBActionPerformed + }//GEN-LAST:event_oldViewsHideSlackCBActionPerformed - private void dataSourcesHideSlackCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dataSourcesHideSlackCBActionPerformed + private void oldDataSourcesHideSlackCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldDataSourcesHideSlackCBActionPerformed firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_dataSourcesHideSlackCBActionPerformed + }//GEN-LAST:event_oldDataSourcesHideSlackCBActionPerformed - private void viewsHideKnownCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewsHideKnownCBActionPerformed + private void oldViewsHideKnownCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldViewsHideKnownCBActionPerformed firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_viewsHideKnownCBActionPerformed + }//GEN-LAST:event_oldViewsHideKnownCBActionPerformed - private void dataSourcesHideKnownCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dataSourcesHideKnownCBActionPerformed + private void oldDataSourcesHideKnownCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldDataSourcesHideKnownCBActionPerformed firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_dataSourcesHideKnownCBActionPerformed + }//GEN-LAST:event_oldDataSourcesHideKnownCBActionPerformed - private void keepCurrentViewerRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_keepCurrentViewerRBActionPerformed + private void oldKeepCurrentViewerRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldKeepCurrentViewerRBActionPerformed firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_keepCurrentViewerRBActionPerformed + }//GEN-LAST:event_oldKeepCurrentViewerRBActionPerformed - private void useBestViewerRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useBestViewerRBActionPerformed + private void oldUseBestViewerRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldUseBestViewerRBActionPerformed firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_useBestViewerRBActionPerformed + }//GEN-LAST:event_oldUseBestViewerRBActionPerformed private void specifyLogoRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_specifyLogoRBActionPerformed agencyLogoPathField.setEnabled(true); @@ -1028,8 +1028,6 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { private javax.swing.JLabel agencyLogoPathFieldValidationLabel; private javax.swing.JLabel agencyLogoPreview; private javax.swing.JButton browseLogosButton; - private javax.swing.JCheckBox dataSourcesHideKnownCB; - private javax.swing.JCheckBox dataSourcesHideSlackCB; private javax.swing.JRadioButton defaultLogoRB; private javax.swing.ButtonGroup displayTimesButtonGroup; private javax.swing.ButtonGroup fileSelectionButtonGroup; @@ -1039,7 +1037,6 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { private javax.swing.JLabel jLabelTimeDisplay; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JRadioButton keepCurrentViewerRB; private javax.swing.JTextField logFileCount; private javax.swing.JTextField logNumAlert; private javax.swing.JPanel logoPanel; @@ -1050,17 +1047,20 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { private javax.swing.JLabel maxMemoryUnitsLabel1; private javax.swing.JTextField memField; private javax.swing.JLabel memFieldValidationLabel; + private javax.swing.JCheckBox oldDataSourcesHideKnownCB; + private javax.swing.JCheckBox oldDataSourcesHideSlackCB; + private javax.swing.JRadioButton oldKeepCurrentViewerRB; + private javax.swing.JRadioButton oldUseBestViewerRB; + private javax.swing.JRadioButton oldUseGMTTimeRB; + private javax.swing.JRadioButton oldUseLocalTimeRB; + private javax.swing.JPanel oldViewPanel; + private javax.swing.JCheckBox oldViewsHideKnownCB; + private javax.swing.JCheckBox oldViewsHideSlackCB; private javax.swing.JLabel restartNecessaryWarning; private javax.swing.JPanel runtimePanel; private javax.swing.JRadioButton specifyLogoRB; private javax.swing.JLabel systemMemoryTotal; private javax.swing.JLabel totalMemoryLabel; - private javax.swing.JRadioButton useBestViewerRB; - private javax.swing.JRadioButton useGMTTimeRB; - private javax.swing.JRadioButton useLocalTimeRB; - private javax.swing.JPanel viewPanel; - private javax.swing.JCheckBox viewsHideKnownCB; - private javax.swing.JCheckBox viewsHideSlackCB; // End of variables declaration//GEN-END:variables } diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties index bb98cc90f6..1a83101f5e 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties @@ -96,14 +96,6 @@ DataResultViewerThumbnail.comboBox.mediumThumbnails=Medium Thumbnails DataResultViewerThumbnail.comboBox.largeThumbnails=Large Thumbnails DataResultViewerThumbnail.switchPage.done.errMsg=Error making thumbnails\: {0} AboutWindowPanel.actVerboseLogging.text=Activate verbose logging -AutopsyOptionsPanel.viewsHideKnownCB.text=Views area -AutopsyOptionsPanel.dataSourcesHideKnownCB.text=Data Sources area (the directory hierarchy) -AutopsyOptionsPanel.useBestViewerRB.toolTipText=For example, change from Hex to Media when a JPEG is selected. -AutopsyOptionsPanel.useBestViewerRB.text=Change to the most specific file viewer -AutopsyOptionsPanel.useGMTTimeRB.text=Use GMT -AutopsyOptionsPanel.useLocalTimeRB.text=Use local time zone -AutopsyOptionsPanel.keepCurrentViewerRB.toolTipText=For example, stay in Hex view when a JPEG is selected. -AutopsyOptionsPanel.keepCurrentViewerRB.text=Stay on the same file viewer AutopsyOptionsPanel.jLabelSelectFile.text=When selecting a file: AutopsyOptionsPanel.jLabelHideKnownFiles.text=Hide known files (i.e. those in the NIST NSRL) in the: AutopsyOptionsPanel.jLabelTimeDisplay.text=When displaying times: @@ -154,8 +146,6 @@ MultiUserSettingsPanel.lbTestDbWarning.text= MultiUserSettingsPanel.KeywordSearchNull=Cannot find keyword search service MultiUserSettingsPanel.InvalidPortNumber=Invalid port number AutopsyOptionsPanel.jLabelHideSlackFiles.text=Hide slack files in the: -AutopsyOptionsPanel.dataSourcesHideSlackCB.text=Data Sources area (the directory hierarchy) -AutopsyOptionsPanel.viewsHideSlackCB.text=Views area AutopsyOptionsPanel.agencyLogoImageLabel.toolTipText= AutopsyOptionsPanel.agencyLogoPathField.text= SortChooserDialog.label=remove @@ -177,7 +167,41 @@ AutopsyOptionsPanel.specifyLogoRB.text=Specify a logo AutopsyOptionsPanel.agencyLogoPreview.text=
No logo
selected
AutopsyOptionsPanel.logoPanel.border.title=Logo AutopsyOptionsPanel.runtimePanel.border.title=Runtime -AutopsyOptionsPanel.viewPanel.border.title=View DataResultPanel.matchLabel.text=Results DataResultPanel.numberOfChildNodesLabel.text=0 DataResultPanel.descriptionLabel.text=directoryPath +ViewPreferencesPanel.selectFileLabel.text=When selecting a file: +ViewPreferencesPanel.globalSettingsPanel.border.title=Global Settings +ViewPreferencesPanel.displayTimeLabel.text=When displaying times: +ViewPreferencesPanel.hideSlackFilesLabel.text=Hide slack files in the: +ViewPreferencesPanel.groupByDataSourceCheckbox.text=Group by data source +ViewPreferencesPanel.hideKnownFilesLabel.text=Hide known files (i.e. those in the NIST NSRL) in the: +ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text=Hide other user's tags +ViewPreferencesPanel.currentCaseSettingsPanel.border.title=Current Case Settings +OptionsCategory_Name_View=View +OptionsCategory_Keywords_View=View +ViewPreferencesDialog.okButton.text=OK +ViewPreferencesDialog.cancelButton.text=Cancel +AutopsyOptionsPanel.oldViewPanel.border.title=View +AutopsyOptionsPanel.oldUseBestViewerRB.toolTipText=For example, change from Hex to Media when a JPEG is selected. +AutopsyOptionsPanel.oldUseBestViewerRB.text=Change to the most specific file viewer +AutopsyOptionsPanel.oldKeepCurrentViewerRB.toolTipText=For example, stay in Hex view when a JPEG is selected. +AutopsyOptionsPanel.oldKeepCurrentViewerRB.text=Stay on the same file viewer +AutopsyOptionsPanel.oldDataSourcesHideKnownCB.text=Data Sources area (the directory hierarchy) +AutopsyOptionsPanel.oldViewsHideKnownCB.text=Views area +AutopsyOptionsPanel.oldDataSourcesHideSlackCB.text=Data Sources area (the directory hierarchy) +AutopsyOptionsPanel.oldViewsHideSlackCB.text=Views area +AutopsyOptionsPanel.oldUseLocalTimeRB.text=Use local time zone +AutopsyOptionsPanel.oldUseGMTTimeRB.text=Use GMT +ViewPreferencesPanel.useBestViewerRadioButton.toolTipText=For example, change from Hex to Media when a JPEG is selected. +ViewPreferencesPanel.useBestViewerRadioButton.text=Change to the most specific file viewer +ViewPreferencesPanel.keepCurrentViewerRadioButton.toolTipText=For example, stay in Hex view when a JPEG is selected. +ViewPreferencesPanel.keepCurrentViewerRadioButton.text=Stay on the same file viewer +ViewPreferencesPanel.useLocalTimeRadioButton.text=Use local time zone +ViewPreferencesPanel.useGMTTimeRadioButton.text=Use GMT +ViewPreferencesPanel.dataSourcesHideKnownCheckbox.text=Data Sources area (the directory hierarchy) +ViewPreferencesPanel.viewsHideKnownCheckbox.text=Views area +ViewPreferencesPanel.dataSourcesHideSlackCheckbox.text=Data Sources area (the directory hierarchy) +ViewPreferencesPanel.viewsHideSlackCheckbox.text=Views area +ViewPreferencesPanel.currentSessionSettingsPanel.border.title=Current Session Settings +ViewPreferencesPanel.hideRejectedResultsCheckbox.text=Hide rejected results diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties index cbdabb3747..0eadc6458b 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties @@ -79,14 +79,6 @@ DataResultViewerThumbnail.comboBox.mediumThumbnails=\u30b5\u30e0\u30cd\u30a4\u30 DataResultViewerThumbnail.comboBox.largeThumbnails=\u30b5\u30e0\u30cd\u30a4\u30eb\uff08\u5927\uff09 DataResultViewerThumbnail.switchPage.done.errMsg=\u30b5\u30e0\u30cd\u30a4\u30eb\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a {0} AboutWindowPanel.actVerboseLogging.text=Verbose\u30ed\u30b0\u3092\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30c8 -AutopsyOptionsPanel.viewsHideKnownCB.text=\u30d3\u30e5\u30fc\u30a8\u30ea\u30a2 -AutopsyOptionsPanel.dataSourcesHideKnownCB.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30a8\u30ea\u30a2\uff08\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u968e\u5c64\uff09 -AutopsyOptionsPanel.useBestViewerRB.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u306fHEX\u304b\u3089\u30e1\u30c7\u30a3\u30a2\u306b\u5909\u66f4\u3059\u308b\u3002 -AutopsyOptionsPanel.useBestViewerRB.text=\u6700\u3082\u5c02\u9580\u7684\u306a\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u306b\u5909\u66f4 -AutopsyOptionsPanel.useGMTTimeRB.text=GMT\u3092\u4f7f\u7528 -AutopsyOptionsPanel.useLocalTimeRB.text=\u30ed\u30fc\u30ab\u30eb\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528 -AutopsyOptionsPanel.keepCurrentViewerRB.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u305d\u306e\u307e\u307eHEX\u30d3\u30e5\u30fc\u3092\u4f7f\u7528\u3002 -AutopsyOptionsPanel.keepCurrentViewerRB.text=\u305d\u306e\u307e\u307e\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u3092\u4f7f\u7528 AutopsyOptionsPanel.jLabelSelectFile.text=\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3059\u308b\u5834\u5408\uff1a AutopsyOptionsPanel.jLabelHideKnownFiles.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\uff08NIST NSRL\u5185\u306e\uff09\u3092\u6b21\u306b\u96a0\u3059\uff1a AutopsyOptionsPanel.jLabelTimeDisplay.text=\u6642\u9593\u3092\u8868\u793a\u3059\u308b\u5834\u5408\uff1a @@ -131,3 +123,22 @@ MediaViewImagePanel.externalViewerButton.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30 DataResultPanel.matchLabel.text=\u7d50\u679c DataResultPanel.numberOfChildNodesLabel.text=0 DataResultPanel.descriptionLabel.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30d1\u30b9 +ViewPreferencesPanel.selectFileLabel.text=\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3059\u308b\u5834\u5408\uff1a +ViewPreferencesPanel.displayTimeLabel.text=\u6642\u9593\u3092\u8868\u793a\u3059\u308b\u5834\u5408\uff1a +ViewPreferencesPanel.hideKnownFilesLabel.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\uff08NIST NSRL\u5185\u306e\uff09\u3092\u6b21\u306b\u96a0\u3059\uff1a +AutopsyOptionsPanel.oldUseBestViewerRB.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u306fHEX\u304b\u3089\u30e1\u30c7\u30a3\u30a2\u306b\u5909\u66f4\u3059\u308b\u3002 +AutopsyOptionsPanel.oldUseBestViewerRB.text=\u6700\u3082\u5c02\u9580\u7684\u306a\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u306b\u5909\u66f4 +AutopsyOptionsPanel.oldKeepCurrentViewerRB.text=\u305d\u306e\u307e\u307e\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u3092\u4f7f\u7528 +AutopsyOptionsPanel.oldKeepCurrentViewerRB.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u305d\u306e\u307e\u307eHEX\u30d3\u30e5\u30fc\u3092\u4f7f\u7528\u3002 +AutopsyOptionsPanel.oldDataSourcesHideKnownCB.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30a8\u30ea\u30a2\uff08\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u968e\u5c64\uff09 +AutopsyOptionsPanel.oldViewsHideKnownCB.text=\u30d3\u30e5\u30fc\u30a8\u30ea\u30a2 +AutopsyOptionsPanel.oldUseLocalTimeRB.text=\u30ed\u30fc\u30ab\u30eb\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528 +AutopsyOptionsPanel.oldUseGMTTimeRB.text=GMT\u3092\u4f7f\u7528 +ViewPreferencesPanel.useBestViewerRadioButton.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u306fHEX\u304b\u3089\u30e1\u30c7\u30a3\u30a2\u306b\u5909\u66f4\u3059\u308b\u3002 +ViewPreferencesPanel.useBestViewerRadioButton.text=\u6700\u3082\u5c02\u9580\u7684\u306a\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u306b\u5909\u66f4 +ViewPreferencesPanel.keepCurrentViewerRadioButton.text=\u305d\u306e\u307e\u307e\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u3092\u4f7f\u7528 +ViewPreferencesPanel.keepCurrentViewerRadioButton.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u305d\u306e\u307e\u307eHEX\u30d3\u30e5\u30fc\u3092\u4f7f\u7528\u3002 +ViewPreferencesPanel.useLocalTimeRadioButton.text=\u30ed\u30fc\u30ab\u30eb\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528 +ViewPreferencesPanel.useGMTTimeRadioButton.text=GMT\u3092\u4f7f\u7528 +ViewPreferencesPanel.dataSourcesHideKnownCheckbox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30a8\u30ea\u30a2\uff08\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u968e\u5c64\uff09 +ViewPreferencesPanel.viewsHideKnownCheckbox.text=\u30d3\u30e5\u30fc\u30a8\u30ea\u30a2 diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java index 9c23379975..212bfa7dcd 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java @@ -31,7 +31,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; @OptionsPanelController.TopLevelRegistration(categoryName = "#OptionsCategory_Name_Multi_User_Settings", iconBase = "org/sleuthkit/autopsy/images/User-Group-icon-green32.png", - position = 3, + position = 4, keywords = "#OptionsCategory_Keywords_Multi_User_Options", keywordsCategory = "Multi-User") public final class MultiUserSettingsPanelController extends OptionsPanelController { diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.form b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.form new file mode 100755 index 0000000000..d57d767a1e --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.form @@ -0,0 +1,78 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.java new file mode 100755 index 0000000000..bab69e596b --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.java @@ -0,0 +1,133 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2018 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.corecomponents; + +import java.awt.Dialog; +import org.openide.util.NbBundle; +import org.openide.windows.WindowManager; + +/** + * Popup dialog for hosting the ViewPreferencesPanel. This is intended to be + * used from the DirectoryTreeTopComponent. + */ +final public class ViewPreferencesDialog extends javax.swing.JDialog { + + /** + * Creates new form ViewPreferencesDialog + */ + @NbBundle.Messages({ + "ViewPreferencesDialog.title.text=View Preferences" + }) + public ViewPreferencesDialog() { + super(WindowManager.getDefault().getMainWindow(), + Bundle.ViewPreferencesDialog_title_text(), + Dialog.ModalityType.APPLICATION_MODAL); + initComponents(); + viewPreferencesPanel.load(); + } + + /** + * Show the dialog. + */ + public void display() { + setLocationRelativeTo(WindowManager.getDefault().getMainWindow()); + setVisible(true); + } + + /** + * Close the dialog. + */ + private void close() { + setVisible(false); + dispose(); + } + + /** + * 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. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + okButton = new javax.swing.JButton(); + cancelButton = new javax.swing.JButton(); + viewPreferencesPanel = new org.sleuthkit.autopsy.corecomponents.ViewPreferencesPanel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + org.openide.awt.Mnemonics.setLocalizedText(okButton, org.openide.util.NbBundle.getMessage(ViewPreferencesDialog.class, "ViewPreferencesDialog.okButton.text")); // NOI18N + okButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + okButtonActionPerformed(evt); + } + }); + + org.openide.awt.Mnemonics.setLocalizedText(cancelButton, org.openide.util.NbBundle.getMessage(ViewPreferencesDialog.class, "ViewPreferencesDialog.cancelButton.text")); // NOI18N + cancelButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cancelButtonActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cancelButton, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(viewPreferencesPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap() + .addComponent(viewPreferencesPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(okButton) + .addComponent(cancelButton)) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed + viewPreferencesPanel.store(); + close(); + }//GEN-LAST:event_okButtonActionPerformed + + private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed + close(); + }//GEN-LAST:event_cancelButtonActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton cancelButton; + private javax.swing.JButton okButton; + private org.sleuthkit.autopsy.corecomponents.ViewPreferencesPanel viewPreferencesPanel; + // End of variables declaration//GEN-END:variables +} diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form new file mode 100755 index 0000000000..1fcbee8b23 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form @@ -0,0 +1,335 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java new file mode 100755 index 0000000000..1e9b1fcbbd --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java @@ -0,0 +1,362 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2018 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.corecomponents; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Objects; +import java.util.Properties; +import java.util.logging.Level; +import javax.swing.JPanel; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.core.UserPreferences; +import org.sleuthkit.autopsy.coreutils.Logger; + +/** + * Panel for configuring view preferences. + */ +public class ViewPreferencesPanel extends JPanel implements OptionsPanel { + + private static final Logger logger = Logger.getLogger(ViewPreferencesPanel.class.getName()); + + private Case currentCase = null; + private CasePreferences casePreferences = null; + + /** + * Creates new form ViewPreferencesPanel + */ + public ViewPreferencesPanel() { + initComponents(); + } + + @Override + public void load() { + boolean keepPreferredViewer = UserPreferences.keepPreferredContentViewer(); + keepCurrentViewerRadioButton.setSelected(keepPreferredViewer); + useBestViewerRadioButton.setSelected(!keepPreferredViewer); + + boolean useLocalTime = UserPreferences.displayTimesInLocalTime(); + useLocalTimeRadioButton.setSelected(useLocalTime); + useGMTTimeRadioButton.setSelected(!useLocalTime); + + dataSourcesHideKnownCheckbox.setSelected(UserPreferences.hideKnownFilesInDataSourcesTree()); + viewsHideKnownCheckbox.setSelected(UserPreferences.hideKnownFilesInViewsTree()); + + dataSourcesHideSlackCheckbox.setSelected(UserPreferences.hideSlackFilesInDataSourcesTree()); + viewsHideSlackCheckbox.setSelected(UserPreferences.hideSlackFilesInViewsTree()); + + hideOtherUsersTagsCheckbox.setSelected(UserPreferences.showOnlyCurrentUserTags() == false); + + try { + currentCase = Case.getCurrentCaseThrows(); + casePreferences = new CasePreferences(currentCase); + + groupByDataSourceCheckbox.setSelected(Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true)); + } catch (NoCurrentCaseException ex) { + // No open case. + } + } + + @Override + public void store() { + UserPreferences.setKeepPreferredContentViewer(keepCurrentViewerRadioButton.isSelected()); + UserPreferences.setDisplayTimesInLocalTime(useLocalTimeRadioButton.isSelected()); + UserPreferences.setHideKnownFilesInDataSourcesTree(dataSourcesHideKnownCheckbox.isSelected()); + UserPreferences.setHideKnownFilesInViewsTree(viewsHideKnownCheckbox.isSelected()); + UserPreferences.setHideSlackFilesInDataSourcesTree(dataSourcesHideSlackCheckbox.isSelected()); + UserPreferences.setHideSlackFilesInViewsTree(viewsHideSlackCheckbox.isSelected()); + + UserPreferences.setShowOnlyCurrentUserTags(hideOtherUsersTagsCheckbox.isSelected()); + + if (currentCase != null) { + /* + * Only write the value if it has already been previously stored, or + * if the checkbox is selected. This allows GroupDataSourcesDialog + * to work. + */ + if (casePreferences.getGroupItemsInTreeByDataSource() != null || groupByDataSourceCheckbox.isSelected()) { + firePropertyChange( + CasePreferences.GROUP_ITEMS_IN_TREE_BY_DATASOURCE, + casePreferences.getGroupItemsInTreeByDataSource(), Boolean.valueOf(groupByDataSourceCheckbox.isSelected())); + casePreferences.setGroupItemsInTreeByDataSource(groupByDataSourceCheckbox.isSelected()); + } + casePreferences.saveToStorage(currentCase); + } + } + + /** + * 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. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + globalSettingsPanel = new javax.swing.JPanel(); + selectFileLabel = new javax.swing.JLabel(); + useBestViewerRadioButton = new javax.swing.JRadioButton(); + keepCurrentViewerRadioButton = new javax.swing.JRadioButton(); + hideKnownFilesLabel = new javax.swing.JLabel(); + dataSourcesHideKnownCheckbox = new javax.swing.JCheckBox(); + viewsHideKnownCheckbox = new javax.swing.JCheckBox(); + hideSlackFilesLabel = new javax.swing.JLabel(); + dataSourcesHideSlackCheckbox = new javax.swing.JCheckBox(); + viewsHideSlackCheckbox = new javax.swing.JCheckBox(); + displayTimeLabel = new javax.swing.JLabel(); + useLocalTimeRadioButton = new javax.swing.JRadioButton(); + useGMTTimeRadioButton = new javax.swing.JRadioButton(); + currentCaseSettingsPanel = new javax.swing.JPanel(); + hideOtherUsersTagsCheckbox = new javax.swing.JCheckBox(); + groupByDataSourceCheckbox = new javax.swing.JCheckBox(); + currentSessionSettingsPanel = new javax.swing.JPanel(); + hideRejectedResultsCheckbox = new javax.swing.JCheckBox(); + + globalSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.globalSettingsPanel.border.title"))); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(selectFileLabel, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.selectFileLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(useBestViewerRadioButton, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.useBestViewerRadioButton.text")); // NOI18N + useBestViewerRadioButton.setToolTipText(org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.useBestViewerRadioButton.toolTipText")); // NOI18N + useBestViewerRadioButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + useBestViewerRadioButtonActionPerformed(evt); + } + }); + + org.openide.awt.Mnemonics.setLocalizedText(keepCurrentViewerRadioButton, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.keepCurrentViewerRadioButton.text")); // NOI18N + keepCurrentViewerRadioButton.setToolTipText(org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.keepCurrentViewerRadioButton.toolTipText")); // NOI18N + keepCurrentViewerRadioButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + keepCurrentViewerRadioButtonActionPerformed(evt); + } + }); + + org.openide.awt.Mnemonics.setLocalizedText(hideKnownFilesLabel, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.hideKnownFilesLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(dataSourcesHideKnownCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.dataSourcesHideKnownCheckbox.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(viewsHideKnownCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.viewsHideKnownCheckbox.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(hideSlackFilesLabel, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.hideSlackFilesLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(dataSourcesHideSlackCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.dataSourcesHideSlackCheckbox.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(viewsHideSlackCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.viewsHideSlackCheckbox.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(displayTimeLabel, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.displayTimeLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(useLocalTimeRadioButton, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.useLocalTimeRadioButton.text")); // NOI18N + useLocalTimeRadioButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + useLocalTimeRadioButtonActionPerformed(evt); + } + }); + + org.openide.awt.Mnemonics.setLocalizedText(useGMTTimeRadioButton, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.useGMTTimeRadioButton.text")); // NOI18N + useGMTTimeRadioButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + useGMTTimeRadioButtonActionPerformed(evt); + } + }); + + javax.swing.GroupLayout globalSettingsPanelLayout = new javax.swing.GroupLayout(globalSettingsPanel); + globalSettingsPanel.setLayout(globalSettingsPanelLayout); + globalSettingsPanelLayout.setHorizontalGroup( + globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, globalSettingsPanelLayout.createSequentialGroup() + .addContainerGap() + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(displayTimeLabel) + .addGroup(globalSettingsPanelLayout.createSequentialGroup() + .addGap(10, 10, 10) + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(keepCurrentViewerRadioButton) + .addComponent(useBestViewerRadioButton) + .addComponent(useGMTTimeRadioButton) + .addComponent(useLocalTimeRadioButton))) + .addComponent(selectFileLabel)) + .addGap(18, 18, 18) + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(hideKnownFilesLabel) + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(globalSettingsPanelLayout.createSequentialGroup() + .addGap(10, 10, 10) + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(dataSourcesHideSlackCheckbox) + .addComponent(viewsHideSlackCheckbox))) + .addComponent(hideSlackFilesLabel)) + .addGroup(globalSettingsPanelLayout.createSequentialGroup() + .addGap(10, 10, 10) + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(dataSourcesHideKnownCheckbox) + .addComponent(viewsHideKnownCheckbox))))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + globalSettingsPanelLayout.setVerticalGroup( + globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, globalSettingsPanelLayout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(globalSettingsPanelLayout.createSequentialGroup() + .addComponent(hideKnownFilesLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(dataSourcesHideKnownCheckbox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(viewsHideKnownCheckbox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(hideSlackFilesLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(dataSourcesHideSlackCheckbox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(viewsHideSlackCheckbox)) + .addGroup(globalSettingsPanelLayout.createSequentialGroup() + .addComponent(selectFileLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(useBestViewerRadioButton) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(keepCurrentViewerRadioButton) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(displayTimeLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(useLocalTimeRadioButton) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(useGMTTimeRadioButton)))) + ); + + currentCaseSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.currentCaseSettingsPanel.border.title"))); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(hideOtherUsersTagsCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(groupByDataSourceCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.groupByDataSourceCheckbox.text")); // NOI18N + + javax.swing.GroupLayout currentCaseSettingsPanelLayout = new javax.swing.GroupLayout(currentCaseSettingsPanel); + currentCaseSettingsPanel.setLayout(currentCaseSettingsPanelLayout); + currentCaseSettingsPanelLayout.setHorizontalGroup( + currentCaseSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(currentCaseSettingsPanelLayout.createSequentialGroup() + .addContainerGap() + .addGroup(currentCaseSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(hideOtherUsersTagsCheckbox) + .addComponent(groupByDataSourceCheckbox)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + currentCaseSettingsPanelLayout.setVerticalGroup( + currentCaseSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(currentCaseSettingsPanelLayout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(hideOtherUsersTagsCheckbox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(groupByDataSourceCheckbox) + .addGap(20, 20, 20)) + ); + + currentSessionSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.currentSessionSettingsPanel.border.title"))); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(hideRejectedResultsCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.hideRejectedResultsCheckbox.text")); // NOI18N + + javax.swing.GroupLayout currentSessionSettingsPanelLayout = new javax.swing.GroupLayout(currentSessionSettingsPanel); + currentSessionSettingsPanel.setLayout(currentSessionSettingsPanelLayout); + currentSessionSettingsPanelLayout.setHorizontalGroup( + currentSessionSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(currentSessionSettingsPanelLayout.createSequentialGroup() + .addContainerGap() + .addComponent(hideRejectedResultsCheckbox) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + currentSessionSettingsPanelLayout.setVerticalGroup( + currentSessionSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(currentSessionSettingsPanelLayout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(hideRejectedResultsCheckbox)) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(currentSessionSettingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(globalSettingsPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(currentCaseSettingsPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(globalSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(currentCaseSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(currentSessionSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + }// //GEN-END:initComponents + + private void useBestViewerRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useBestViewerRadioButtonActionPerformed + useBestViewerRadioButton.setSelected(true); + keepCurrentViewerRadioButton.setSelected(false); + }//GEN-LAST:event_useBestViewerRadioButtonActionPerformed + + private void keepCurrentViewerRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_keepCurrentViewerRadioButtonActionPerformed + useBestViewerRadioButton.setSelected(false); + keepCurrentViewerRadioButton.setSelected(true); + }//GEN-LAST:event_keepCurrentViewerRadioButtonActionPerformed + + private void useLocalTimeRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useLocalTimeRadioButtonActionPerformed + useLocalTimeRadioButton.setSelected(true); + useGMTTimeRadioButton.setSelected(false); + }//GEN-LAST:event_useLocalTimeRadioButtonActionPerformed + + private void useGMTTimeRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useGMTTimeRadioButtonActionPerformed + useLocalTimeRadioButton.setSelected(false); + useGMTTimeRadioButton.setSelected(true); + }//GEN-LAST:event_useGMTTimeRadioButtonActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JPanel currentCaseSettingsPanel; + private javax.swing.JPanel currentSessionSettingsPanel; + private javax.swing.JCheckBox dataSourcesHideKnownCheckbox; + private javax.swing.JCheckBox dataSourcesHideSlackCheckbox; + private javax.swing.JLabel displayTimeLabel; + private javax.swing.JPanel globalSettingsPanel; + private javax.swing.JCheckBox groupByDataSourceCheckbox; + private javax.swing.JLabel hideKnownFilesLabel; + private javax.swing.JCheckBox hideOtherUsersTagsCheckbox; + private javax.swing.JCheckBox hideRejectedResultsCheckbox; + private javax.swing.JLabel hideSlackFilesLabel; + private javax.swing.JRadioButton keepCurrentViewerRadioButton; + private javax.swing.JLabel selectFileLabel; + private javax.swing.JRadioButton useBestViewerRadioButton; + private javax.swing.JRadioButton useGMTTimeRadioButton; + private javax.swing.JRadioButton useLocalTimeRadioButton; + private javax.swing.JCheckBox viewsHideKnownCheckbox; + private javax.swing.JCheckBox viewsHideSlackCheckbox; + // End of variables declaration//GEN-END:variables +} diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanelController.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanelController.java new file mode 100755 index 0000000000..40efcd0149 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanelController.java @@ -0,0 +1,149 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2018 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.corecomponents; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import javax.swing.JComponent; +import org.netbeans.spi.options.OptionsPanelController; +import org.openide.util.HelpCtx; +import org.openide.util.Lookup; +import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; +import java.util.logging.Level; +import org.openide.util.NbBundle.Messages; +import org.sleuthkit.autopsy.coreutils.Logger; + +/** + * Controller for the main settings panel + */ +@OptionsPanelController.TopLevelRegistration(categoryName = "#OptionsCategory_Name_View", + iconBase = "org/sleuthkit/autopsy/images/view-preferences-32.png", + position = 2, + keywords = "#OptionsCategory_Keywords_View", + keywordsCategory = "View") +public final class ViewPreferencesPanelController extends OptionsPanelController { + + private ViewPreferencesPanel panel; + private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); + private boolean changed; + private static final Logger logger = Logger.getLogger(ViewPreferencesPanelController.class.getName()); + + @Override + public void update() { + getPanel().load(); + changed = false; + } + + @Override + public void applyChanges() { + getPanel().store(); + changed = false; + } + + @Override + public void cancel() { + } + + @Override + public boolean isValid() { + return true; + } + + @Override + public boolean isChanged() { + return changed; + } + + @Override + public HelpCtx getHelpCtx() { + return null; + } + + @Override + public JComponent getComponent(Lookup masterLookup) { + return getPanel(); + } + + @Override + public void addPropertyChangeListener(PropertyChangeListener l) { + if (pcs.getPropertyChangeListeners().length == 0) { + pcs.addPropertyChangeListener(l); + } + } + + @Override + public void removePropertyChangeListener(PropertyChangeListener l) { + /** + * Note the NetBeans Framework does not appear to call this at all. We + * are using NetBeans 7.3.1 Build 201306052037. Perhaps in a future + * version of the Framework this will be resolved, but for now, simply + * don't unregister anything and add one time only in the + * addPropertyChangeListener() method above. + */ + } + + /** + * Retrieve an instance of the ViewPreferencesPanel. + * + * @return A ViewPreferencesPanel instance. + */ + private ViewPreferencesPanel getPanel() { + if (panel == null) { + panel = new ViewPreferencesPanel(); + panel.addPropertyChangeListener((PropertyChangeEvent evt) -> { + if (evt.getPropertyName().equals(OptionsPanelController.PROP_CHANGED)) { + changed(); + } + }); + } + return panel; + } + + /** + * Executed whenever a property change occurs. + */ + @Messages({"ViewOptionsController.moduleErr=Error processing value changes.", + "ViewOptionsController.moduleErr.msg=Value change processing failed."}) + void changed() { + if (!changed) { + changed = true; + + try { + pcs.firePropertyChange(OptionsPanelController.PROP_CHANGED, false, true); + } catch (Exception ex) { + logger.log(Level.SEVERE, "Error processing property change", ex); //NON-NLS + MessageNotifyUtil.Notify.show( + Bundle.ViewOptionsController_moduleErr(), + Bundle.ViewOptionsController_moduleErr_msg(), + MessageNotifyUtil.MessageType.ERROR); + } + } + + try { + pcs.firePropertyChange(OptionsPanelController.PROP_VALID, null, null); + } catch (Exception e) { + logger.log(Level.SEVERE, "Error processing property change validation.", e); //NON-NLS + MessageNotifyUtil.Notify.show( + Bundle.ViewOptionsController_moduleErr(), + Bundle.ViewOptionsController_moduleErr_msg(), + MessageNotifyUtil.MessageType.ERROR); + } + } +} diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java index 70f0ca3ce6..6fd17f6c4c 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java @@ -24,10 +24,12 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; import java.util.List; +import java.util.Objects; import java.util.logging.Level; import org.openide.nodes.ChildFactory; import org.openide.nodes.Node; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; @@ -52,11 +54,17 @@ public final class AutopsyTreeChildFactory extends ChildFactory.Detachable list) { try { + Case currentCase = Case.getCurrentCaseThrows(); + CasePreferences casePreferences = new CasePreferences(currentCase); SleuthkitCase tskCase = Case.getCurrentCaseThrows().getSleuthkitCase(); - if (UserPreferences.groupItemsInTreeByDatasource()) { + if (Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true)) { List dataSources = tskCase.getDataSources(); List keys = new ArrayList<>(); dataSources.forEach((datasource) -> { diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java b/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java index 366aa12979..dc19f0ecb1 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java @@ -26,6 +26,7 @@ import java.util.Comparator; import java.util.EnumSet; import java.util.HashMap; import java.util.List; +import java.util.Objects; import java.util.logging.Level; import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; @@ -34,6 +35,7 @@ import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; @@ -288,10 +290,11 @@ public class ExtractedContent implements AutopsyVisitableItem { @Override protected boolean createKeys(List list) { - //TEST COMMENT if (skCase != null) { try { - List types = (UserPreferences.groupItemsInTreeByDatasource()) ? + Case currentCase = Case.getCurrentCaseThrows(); + CasePreferences casePreferences = new CasePreferences(currentCase); + List types = Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true) ? blackboard.getArtifactTypesInUse(datasourceObjId) : skCase.getArtifactTypesInUse() ; @@ -313,6 +316,8 @@ public class ExtractedContent implements AutopsyVisitableItem { node.updateDisplayName(); } } + } catch (NoCurrentCaseException ex) { + Logger.getLogger(TypeFactory.class.getName()).log(Level.SEVERE, "No current case open: " + ex.getLocalizedMessage()); //NON-NLS } catch (TskCoreException ex) { Logger.getLogger(TypeFactory.class.getName()).log(Level.SEVERE, "Error getting list of artifacts in use: " + ex.getLocalizedMessage()); //NON-NLS } @@ -356,9 +361,14 @@ public class ExtractedContent implements AutopsyVisitableItem { // a performance increase might be had by adding a // "getBlackboardArtifactCount()" method to skCase try { - this.childCount = UserPreferences.groupItemsInTreeByDatasource() ? + Case currentCase = Case.getCurrentCaseThrows(); + CasePreferences casePreferences = new CasePreferences(currentCase); + this.childCount = Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true) ? blackboard.getArtifactsCount(type.getTypeID(), datasourceObjId) : skCase.getBlackboardArtifactsTypeCount(type.getTypeID()); + } catch (NoCurrentCaseException ex) { + Logger.getLogger(TypeNode.class.getName()) + .log(Level.WARNING, "No current case open.", ex); //NON-NLS } catch (TskException ex) { Logger.getLogger(TypeNode.class.getName()) .log(Level.WARNING, "Error getting child count", ex); //NON-NLS @@ -480,11 +490,15 @@ public class ExtractedContent implements AutopsyVisitableItem { protected boolean createKeys(List list) { if (skCase != null) { try { + Case currentCase = Case.getCurrentCaseThrows(); + CasePreferences casePreferences = new CasePreferences(currentCase); List arts = - UserPreferences.groupItemsInTreeByDatasource() ? + Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true) ? blackboard.getArtifacts(type.getTypeID(), datasourceObjId) : skCase.getBlackboardArtifacts(type.getTypeID()); list.addAll(arts); + } catch (NoCurrentCaseException ex) { + Logger.getLogger(ArtifactFactory.class.getName()).log(Level.SEVERE, "No current case open.", ex); //NON-NLS } catch (TskException ex) { Logger.getLogger(ArtifactFactory.class.getName()).log(Level.SEVERE, "Couldn't get blackboard artifacts from database", ex); //NON-NLS } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java index 557e6582ca..ff34985bc7 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java @@ -57,6 +57,7 @@ import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.corecomponents.DataResultTopComponent; @@ -152,9 +153,17 @@ final public class Accounts implements AutopsyVisitableItem { * based on the UserPreferences groupItemsInTreeByDatasource setting */ private String getFilterByDataSourceClause() { - return (UserPreferences.groupItemsInTreeByDatasource()) ? - " AND blackboard_artifacts.data_source_obj_id = " + datasourceObjId + " " - : " "; + try { + Case currentCase = Case.getCurrentCaseThrows(); + CasePreferences casePreferences = new CasePreferences(currentCase); + if (Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true)) { + return " AND blackboard_artifacts.data_source_obj_id = " + datasourceObjId + " "; + } + } catch (NoCurrentCaseException ex) { + LOGGER.log(Level.SEVERE, "No current case open.", ex); //DLG: Review this change. How should we return out of this??? + } + + return " "; } /** @@ -164,6 +173,7 @@ final public class Accounts implements AutopsyVisitableItem { * @return An Action that will toggle whether rejected artifacts are shown * in the tree rooted by this Accounts instance. */ + //DLG: Remove this! public Action newToggleShowRejectedAction() { return new ToggleShowRejected(); } @@ -1686,6 +1696,7 @@ final public class Accounts implements AutopsyVisitableItem { } + //DLG: Remove this! private final class ToggleShowRejected extends AbstractAction { @NbBundle.Messages("ToggleShowRejected.name=Show Rejected Results") @@ -1699,6 +1710,16 @@ final public class Accounts implements AutopsyVisitableItem { reviewStatusBus.post(new ReviewStatusChangeEvent(Collections.emptySet(), null)); } } + + /** + * Update the user interface to show or hide rejected artifacts. + * + * @param showRejected Show rejected artifacts? Yes if true; otherwise no. + */ + public void setShowRejected(boolean showRejected) { + this.showRejected = showRejected; + reviewStatusBus.post(new ReviewStatusChangeEvent(Collections.emptySet(), null)); + } private abstract class ReviewStatusAction extends AbstractAction { diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/Bundle.properties b/Core/src/org/sleuthkit/autopsy/directorytree/Bundle.properties index b90711b8d9..10bd0622cb 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/directorytree/Bundle.properties @@ -59,7 +59,7 @@ DirectoryTreeFilterNode.action.collapseAll.text=Collapse All DirectoryTreeFilterNode.action.openFileSrcByAttr.text=Open File Search by Attributes DirectoryTreeFilterNode.action.runIngestMods.text=Run Ingest Modules DirectoryTreeTopComponent.action.viewArtContent.text=View Artifact Content -DirectoryTreeTopComponent.showRejectedCheckBox.text=Show Rejected Results +DirectoryTreeTopComponent.showRejectedCheckBox.text=Show Rejected ExplorerNodeActionVisitor.action.imgDetails.title=Image Details ExplorerNodeActionVisitor.action.extUnallocToSingleFiles=Extract Unallocated Space to Single Files ExplorerNodeActionVisitor.action.fileSystemDetails.title=File System Details @@ -119,10 +119,11 @@ AddExternalViewerRulePanel.browseButton.text=Browse AddExternalViewerRulePanel.exePathTextField.text= AddExternalViewerRulePanel.exePathLabel.text=Path of the program to use for files with this type or extension AddExternalViewerRulePanel.extRadioButton.text=Extension -DirectoryTreeTopComponent.groupByDatasourceCheckBox.text=Group by Data Source +DirectoryTreeTopComponent.groupByDatasourceCheckBox.text=Group Data Source GroupDataSourcesDialog.dataSourceCountLabel.text=jLabel1 GroupDataSourcesDialog.queryLabel.text=Would you like to group by data source for faster loading? GroupDataSourcesDialog.yesButton.text=Yes GroupDataSourcesDialog.noButton.text=No GroupDataSourcesDialog.title=Group by Data Source? -DirectoryTreeTopComponent.showOnlyCurrentUserTagsCheckbox.text=Hide Other User's Tags +DirectoryTreeTopComponent.showOnlyCurrentUserTagsCheckbox.text=Hide Other Tags +DirectoryTreeTopComponent.openViewPreferencesButton.text= diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form index 8fa8265e06..bacd1d8903 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form @@ -18,44 +18,44 @@ - - - - - - + - - + + + + + + + + + + + + + + - + + - - - - - - - - - - - - - - - - + + + + + + + + + - - + @@ -139,12 +139,36 @@
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index 17cac06732..880ebce710 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -60,7 +60,9 @@ import org.openide.util.NbBundle.Messages; import org.openide.windows.TopComponent; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.corecomponents.ViewPreferencesDialog; import org.sleuthkit.autopsy.core.RuntimeProperties; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.corecomponentinterfaces.CoreComponentControl; @@ -111,6 +113,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat private static final Logger LOGGER = Logger.getLogger(DirectoryTreeTopComponent.class.getName()); private AutopsyTreeChildFactory autopsyTreeChildFactory; private Children autopsyTreeChildren; + private Accounts accounts; private static final long DEFAULT_DATASOURCE_GROUPING_THRESHOLD = 5; // Threshold for prompting the user about grouping by data source private static final String GROUPING_THRESHOLD_NAME = "GroupDataSourceThreshold"; private static final String SETTINGS_FILE = "CasePreferences.properties"; //NON-NLS @@ -151,7 +154,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat switch (evt.getKey()) { case UserPreferences.HIDE_KNOWN_FILES_IN_DATA_SRCS_TREE: case UserPreferences.HIDE_SLACK_FILES_IN_DATA_SRCS_TREE: - case UserPreferences.GROUP_ITEMS_IN_TREE_BY_DATASOURCE: + //DLG: case UserPreferences.GROUP_ITEMS_IN_TREE_BY_DATASOURCE: refreshContentTreeSafe(); break; case UserPreferences.SHOW_ONLY_CURRENT_USER_TAGS: @@ -194,6 +197,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat treeView = new BeanTreeView(); backButton = new javax.swing.JButton(); forwardButton = new javax.swing.JButton(); + openViewPreferencesButton = new javax.swing.JButton(); showRejectedCheckBox = new javax.swing.JCheckBox(); groupByDatasourceCheckBox = new javax.swing.JCheckBox(); showOnlyCurrentUserTagsCheckbox = new javax.swing.JCheckBox(); @@ -232,7 +236,22 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat } }); + openViewPreferencesButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/directorytree/view-preferences-24.png"))); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(openViewPreferencesButton, org.openide.util.NbBundle.getMessage(DirectoryTreeTopComponent.class, "DirectoryTreeTopComponent.openViewPreferencesButton.text")); // NOI18N + openViewPreferencesButton.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); + openViewPreferencesButton.setPreferredSize(new java.awt.Dimension(30, 30)); + openViewPreferencesButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + openViewPreferencesButtonActionPerformed(evt); + } + }); + org.openide.awt.Mnemonics.setLocalizedText(showRejectedCheckBox, org.openide.util.NbBundle.getMessage(DirectoryTreeTopComponent.class, "DirectoryTreeTopComponent.showRejectedCheckBox.text")); // NOI18N + showRejectedCheckBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + showRejectedCheckBoxActionPerformed(evt); + } + }); org.openide.awt.Mnemonics.setLocalizedText(groupByDatasourceCheckBox, org.openide.util.NbBundle.getMessage(DirectoryTreeTopComponent.class, "DirectoryTreeTopComponent.groupByDatasourceCheckBox.text")); // NOI18N groupByDatasourceCheckBox.addActionListener(new java.awt.event.ActionListener() { @@ -254,36 +273,37 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(treeView) .addGroup(layout.createSequentialGroup() - .addComponent(backButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(forwardButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(showOnlyCurrentUserTagsCheckbox, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGap(1, 1, 1) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(showRejectedCheckBox) - .addComponent(groupByDatasourceCheckBox)) - .addContainerGap()) + .addGroup(layout.createSequentialGroup() + .addComponent(showOnlyCurrentUserTagsCheckbox) + .addGap(18, 18, 18) + .addComponent(showRejectedCheckBox) + .addGap(18, 18, 18) + .addComponent(groupByDatasourceCheckBox)) + .addGroup(layout.createSequentialGroup() + .addComponent(backButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(forwardButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(254, 254, 254) + .addComponent(openViewPreferencesButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() + .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGap(5, 5, 5) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(showRejectedCheckBox) - .addComponent(showOnlyCurrentUserTagsCheckbox)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(groupByDatasourceCheckBox)) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(forwardButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(backButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addComponent(backButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(forwardButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(openViewPreferencesButton, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(9, 9, 9) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(showOnlyCurrentUserTagsCheckbox) + .addComponent(showRejectedCheckBox) + .addComponent(groupByDatasourceCheckBox)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(treeView, javax.swing.GroupLayout.DEFAULT_SIZE, 843, Short.MAX_VALUE) - .addGap(0, 0, 0)) + .addComponent(treeView, javax.swing.GroupLayout.DEFAULT_SIZE, 870, Short.MAX_VALUE)) ); }// //GEN-END:initComponents @@ -337,17 +357,27 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat }//GEN-LAST:event_forwardButtonActionPerformed private void groupByDatasourceCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_groupByDatasourceCheckBoxActionPerformed - UserPreferences.setGroupItemsInTreeByDatasource(this.groupByDatasourceCheckBox.isSelected()); + UserPreferences.setGroupItemsInTreeByDatasource(this.groupByDatasourceCheckBox.isSelected()); //DLG: Remove this checkbox }//GEN-LAST:event_groupByDatasourceCheckBoxActionPerformed private void showOnlyCurrentUserTagsCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showOnlyCurrentUserTagsCheckboxActionPerformed - UserPreferences.setShowOnlyCurrentUserTags(this.showOnlyCurrentUserTagsCheckbox.isSelected()); + UserPreferences.setShowOnlyCurrentUserTags(this.showOnlyCurrentUserTagsCheckbox.isSelected()); //DLG: Remove this checkbox }//GEN-LAST:event_showOnlyCurrentUserTagsCheckboxActionPerformed + private void showRejectedCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showRejectedCheckBoxActionPerformed + //DLG: Remove this checkbox + }//GEN-LAST:event_showRejectedCheckBoxActionPerformed + + private void openViewPreferencesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openViewPreferencesButtonActionPerformed + ViewPreferencesDialog dialog = new ViewPreferencesDialog(); + dialog.display(); + }//GEN-LAST:event_openViewPreferencesButtonActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton backButton; private javax.swing.JButton forwardButton; private javax.swing.JCheckBox groupByDatasourceCheckBox; + private javax.swing.JButton openViewPreferencesButton; private javax.swing.JCheckBox showOnlyCurrentUserTagsCheckbox; private javax.swing.JCheckBox showRejectedCheckBox; private javax.swing.JScrollPane treeView; @@ -410,40 +440,20 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat * @param dataSourceCount */ private void promptForDataSourceGrouping(Case currentCase, int dataSourceCount) { - Path settingsFile = Paths.get(currentCase.getConfigDirectory(), SETTINGS_FILE); //NON-NLS - if (settingsFile.toFile().exists()) { - // Read the setting - try (InputStream inputStream = Files.newInputStream(settingsFile)) { - Properties props = new Properties(); - props.load(inputStream); - if (props.getProperty("groupByDataSource", "false").equals("true")) { - UserPreferences.setGroupItemsInTreeByDatasource(true); - groupByDatasourceCheckBox.setSelected(true); - } - } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Error reading settings file", ex); - } - } else { + CasePreferences casePreferences = new CasePreferences(currentCase); + + if (casePreferences.getGroupItemsInTreeByDataSource() == null) { GroupDataSourcesDialog dialog = new GroupDataSourcesDialog(dataSourceCount); dialog.display(); if (dialog.groupByDataSourceSelected()) { - UserPreferences.setGroupItemsInTreeByDatasource(true); - groupByDatasourceCheckBox.setSelected(true); + casePreferences.setGroupItemsInTreeByDataSource(true); + refreshContentTreeSafe(); //DLG: Consider an event. + } else { + casePreferences.setGroupItemsInTreeByDataSource(false); } // Save the response - Properties props = new Properties(); - if (dialog.groupByDataSourceSelected()) { - props.setProperty("groupByDataSource", "true"); - } else { - props.setProperty("groupByDataSource", "false"); - } - - try (OutputStream fos = Files.newOutputStream(settingsFile)) { - props.store(fos, ""); //NON-NLS - } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Error writing settings file", ex); - } + casePreferences.saveToStorage(currentCase); } } @@ -545,7 +555,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat Children resultsChildren = results.getChildren(); Arrays.stream(resultsChildren.getNodes()).forEach(tree::expandNode); - Accounts accounts = resultsChildren.findChild(Accounts.NAME).getLookup().lookup(Accounts.class); + accounts = resultsChildren.findChild(Accounts.NAME).getLookup().lookup(Accounts.class); if (!Objects.isNull(accounts)) { showRejectedCheckBox.setAction(accounts.newToggleShowRejectedAction()); showRejectedCheckBox.setSelected(false); diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerOptionsPanelController.java b/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerOptionsPanelController.java index 35523a65dc..bbbac25bdd 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerOptionsPanelController.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerOptionsPanelController.java @@ -34,7 +34,7 @@ import org.openide.util.Lookup; iconBase = "org/sleuthkit/autopsy/directorytree/external-viewer-rules-32x32.png", keywords = "#OptionsCategory_Keywords_ExternalViewer", keywordsCategory = "ExternalViewer", - position = 12 + position = 13 ) public final class ExternalViewerOptionsPanelController extends OptionsPanelController { diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java index f4da3a3edf..585241c4f8 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2017 Basis Technology Corp. + * Copyright 2011-2018 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -35,6 +35,7 @@ import org.openide.nodes.Children; import org.openide.nodes.Node; import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; @@ -138,15 +139,24 @@ public class ViewContextAction extends AbstractAction { */ DirectoryTreeTopComponent treeViewTopComponent = DirectoryTreeTopComponent.findInstance(); ExplorerManager treeViewExplorerMgr = treeViewTopComponent.getExplorerManager(); + Case currentCase; + try { + currentCase = Case.getCurrentCaseThrows(); + } catch (NoCurrentCaseException ex) { + MessageNotifyUtil.Message.error(Bundle.ViewContextAction_errorMessage_cannotFindNode()); + logger.log(Level.SEVERE, "Failed to locate data source node in tree.", ex); //NON-NLS + return; + } Node parentTreeViewNode; - if (UserPreferences.groupItemsInTreeByDatasource()) { // 'Group by Data Source' view + CasePreferences casePreferences = new CasePreferences(currentCase); + if (Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true)) { // 'Group by Data Source' view SleuthkitCase skCase; String dsname; try { // get the objid/name of the datasource of the selected content. - skCase = Case.getCurrentCaseThrows().getSleuthkitCase(); + skCase = currentCase.getSleuthkitCase(); long contentDSObjid = content.getDataSource().getId(); DataSource datasource = skCase.getDataSource(contentDSObjid); dsname = datasource.getName(); @@ -162,7 +172,7 @@ public class ViewContextAction extends AbstractAction { logger.log(Level.SEVERE, "Failed to locate data source node in tree."); //NON-NLS return; } - } catch (NoCurrentCaseException| TskDataException | TskCoreException ex) { + } catch (TskDataException | TskCoreException ex) { MessageNotifyUtil.Message.error(Bundle.ViewContextAction_errorMessage_cannotFindNode()); logger.log(Level.SEVERE, "Failed to locate data source node in tree.", ex); //NON-NLS return; diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/view-preferences-24.png b/Core/src/org/sleuthkit/autopsy/directorytree/view-preferences-24.png new file mode 100755 index 0000000000000000000000000000000000000000..b18a37372d7c1061c0aa69297bbb3709e064881a GIT binary patch literal 2039 zcmbVN4Qvx-81BFc45mRbDnq>-!5_l)e%kBLg$_qM=+KV34z>vhU+=zakG6NWyW7?+ z1Oq5U!-9c1BOwHl7;%XFY-l2chyeuooiZ`#20>t;GG-!(sQ6vm)ybd4CfDz~?|Z)Y zectDNzxQ4XmQK#k8<}UZSn^B!zA`jEVm^cKLH|?c|Ei;5i0ZFGXpVAm42@-eIP#_mB3I^{l<|e$Jb2VF zRE{L;>gud@HmjmVNZRdolN3WT41o}YUN0LUNyz%>J_|mm^O~d@k|JZKMG#hM3=fW& zrb9@mS+la9kqHS#CV@)QR>}-11r+!!POZ`6Ddz%D!Z=Jo+0YS|&SKT5Vkml4xsB=U z_P-n;X#;_*k6Us{B(g4aqqr7@krCvUXuZ5%g=87jl^TtQ#kGj$Xfqm>^J)+nidL>D z@xDX_`zT{xubCJZ_H+R7l5EEDOutjm2Mp-JO$0%?3CdYcvm9&VXd6MY%-8!6ycZ@(?EbLk#z&eJS_2fa3qdZk^~Mod6BX~H{s&lcEWCFXu=Id z2jOr+)&`vvEArvK^FD>IF-yQapS}%(!Xq31Fk@+l+u>vd!e*xh!r`(zh%jq&5Hy1p z0Yi(7Ev*}3GgXt&g#_{bR!vp{vgl+1aD|;T!P*3tu-hmX;c^3pa6(aVA`uxI1I@Be zRTAfybd=-z%tZ>p>dY)IVX5Nb0B>Fj56+v_00lg=EZstnyYielUl)bQ=p70q?Oj(y zqYh}WD1x-RyDB7a7l96H@67-1@|h-fGyfZ^_J8xw2*gK$9D%6UlDHWWX?CS_ddM3y zm)h&s!TR8+Et=D8KSnRvjt*sHT0{N%{MlU{7E8|B5?@idtFf_tb1d}2h`qg2!$q4m zitjg-E?m#A$>}Ov7#mvp7*iGhaqR2Ii$)!*3=aCNy?y#S*Prbk_t3nFuPl{DJoVOe z=Ho@7QQGXz*e`FaKHu4O^{+#oE1jWF663^q6%!Ay>gx4xaUE(IyI}c+B*Sj_mKrkF z`{972$GQWp&Hh)9w1>zen&^V}9Y;Qj}^yGK`o=XRg z1}~o2GG~8N?u_5PJ5JZnb+r}zz_Ts)t#Vb*nRc-Hi=TE!)-N~{+;Q>J%z`BsPBrC# zT}wZhl6?E;;iGy%Ya;hd_nX@~e7_wlvg_oD)&Z;6R2(?js^?d=H91FKZ(RG5Sg{Xo znfp=n(DF>!GC*&<6I+WS*P6zq_Sz$5-1A=XLMdx~Tcy%>(l;A6$0wTHd4hu&#B@ zGjh(K==gfl?zPu)&iUEGz_5bH&(ywL*tzHa70vT!S=Fozd1^Jy%-y bthjDTPLl>N>S$VLews^)OMM$B&RO_3x-!sL literal 0 HcmV?d00001 diff --git a/Core/src/org/sleuthkit/autopsy/images/view-preferences-32.png b/Core/src/org/sleuthkit/autopsy/images/view-preferences-32.png new file mode 100755 index 0000000000000000000000000000000000000000..45611a8d65080cf6686ce0c7f0b6b54e46b38820 GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-GzZ+Rj;xUkjGiz z5m^kh={g8AI%&+V01C2~c>21sKjP#PX5na5I;0HLWbWzW7~*k!X{ckiu%krn{T#i$ zAzmNSs)O~TQj{}yb+({`xJnL?T++|4#?y4n*9y7zv-ts>7ck)uvxT=b4+RN8o53@~mTQb4uX7m}xf|qjf zN372E{*^tCxI$&jmGd?SEo$)6q0Q9m>{yj}U^fXwZ%><`IWl^ze5Pv|)=6`=i> zclRDSYo=eEUJu01XGNzUcdkTiicR8^19;&zduD<-XuxhIpQn z;d5&u_(H1v=7k+(P5Y$O%9t3d6L`_G!|Rsif<<>8@3Y`#^xk}o>Cz3Mou9p5y?f~L zV)B}!Z1?!@L`{#>@8O#j#JA_l$;K@H-9kAFGfUpcwpnX+%KPrJj*~x_oqSegc7}mm zs>MSI;}_~`7mqLQIrWOk*JQzI!T_RfKl z$DvQtELwkRJ`H*(T@kru`K0Z8*CZ9(_+Yf}sDI3HwW#DtVrDO;V&d(7MY1(yEr+qAXP8F VD1G)j8!4b722WQ%mvv4FO#pW5S`z>O literal 0 HcmV?d00001 diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanelController.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanelController.java index 69c88d63c4..056f93d719 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanelController.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanelController.java @@ -30,7 +30,7 @@ import org.openide.util.Lookup; @OptionsPanelController.TopLevelRegistration( categoryName = "#OptionsCategory_Name_IngestOptions", iconBase = "org/sleuthkit/autopsy/images/file_ingest_filter32x32.png", - position = 2, + position = 3, keywords = "#OptionsCategory_Keywords_IngestOptions", keywordsCategory = "IngestOptions") diff --git a/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchOptionsPanelController.java b/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchOptionsPanelController.java index e15ea5a6e9..042c49ed3b 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchOptionsPanelController.java +++ b/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchOptionsPanelController.java @@ -30,7 +30,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; @OptionsPanelController.TopLevelRegistration( categoryName = "#OptionsCategory_Name_FileExtMismatchOptions", iconBase = "org/sleuthkit/autopsy/modules/fileextmismatch/options-icon.png", - position = 8, + position = 9, keywords = "#OptionsCategory_FileExtMismatch", keywordsCategory = "KeywordSearchOptions") public final class FileExtMismatchOptionsPanelController extends OptionsPanelController { diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdOptionsPanelController.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdOptionsPanelController.java index 08979c124e..e724a74856 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdOptionsPanelController.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdOptionsPanelController.java @@ -31,7 +31,7 @@ import org.openide.util.Lookup; iconBase = "org/sleuthkit/autopsy/modules/filetypeid/user-defined-file-types-settings.png", keywords = "#OptionsCategory_Keywords_FileTypeId", keywordsCategory = "FileTypeId", - position = 9 + position = 10 ) public final class FileTypeIdOptionsPanelController extends OptionsPanelController { diff --git a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashDatabaseOptionsPanelController.java b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashDatabaseOptionsPanelController.java index a4d85eef9b..41de451c67 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashDatabaseOptionsPanelController.java +++ b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashDatabaseOptionsPanelController.java @@ -30,7 +30,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; @OptionsPanelController.TopLevelRegistration( categoryName = "#OptionsCategory_Name_HashDatabase", iconBase = "org/sleuthkit/autopsy/modules/hashdatabase/options_icon.png", - position = 7, + position = 8, keywords = "#OptionsCategory_Keywords_HashDatabase", keywordsCategory = "HashDatabase", id = "HashDatabase") diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemDefsOptionsPanelController.java b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemDefsOptionsPanelController.java index 7087b6c013..6d239ae78d 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemDefsOptionsPanelController.java +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemDefsOptionsPanelController.java @@ -32,7 +32,7 @@ import org.openide.util.Lookup; iconBase = "org/sleuthkit/autopsy/images/interesting_item_32x32.png", keywords = "#OptionsCategory_Keywords_InterestingItemDefinitions", keywordsCategory = "InterestingItemDefinitions", - position = 10 + position = 11 ) public final class InterestingItemDefsOptionsPanelController extends OptionsPanelController { diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanelController.java b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanelController.java index 50e2e18e4c..c616403ce6 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanelController.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/AutoIngestSettingsPanelController.java @@ -31,7 +31,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; @OptionsPanelController.TopLevelRegistration(categoryName = "#OptionsCategory_Name_Auto_Ingest", iconBase = "org/sleuthkit/autopsy/experimental/images/autoIngest32.png", - position = 4, + position = 5, keywords = "#OptionsCategory_Keywords_Auto_Ingest_Settings", keywordsCategory = "Auto Ingest") public final class AutoIngestSettingsPanelController extends OptionsPanelController { diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/SharedConfiguration.java b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/SharedConfiguration.java index 106e521142..f9dba08034 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/SharedConfiguration.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/SharedConfiguration.java @@ -102,7 +102,6 @@ public class SharedConfiguration { private boolean hideKnownFilesInViews; private boolean hideSlackFilesInDataSource; private boolean hideSlackFilesInViews; - private boolean groupDatasources; private boolean keepPreferredViewer; /** @@ -353,7 +352,6 @@ public class SharedConfiguration { fileIngestThreads = UserPreferences.numberOfFileIngestThreads(); hideSlackFilesInDataSource = UserPreferences.hideSlackFilesInDataSourcesTree(); hideSlackFilesInViews = UserPreferences.hideSlackFilesInViewsTree(); - groupDatasources = UserPreferences.groupItemsInTreeByDatasource(); } /** @@ -369,8 +367,7 @@ public class SharedConfiguration { UserPreferences.setKeepPreferredContentViewer(keepPreferredViewer); UserPreferences.setNumberOfFileIngestThreads(fileIngestThreads); UserPreferences.setHideSlackFilesInDataSourcesTree(hideSlackFilesInDataSource); - UserPreferences.setHideSlackFilesInViewsTree(hideSlackFilesInViews); - UserPreferences.setGroupItemsInTreeByDatasource(groupDatasources); + UserPreferences.setHideSlackFilesInViewsTree(hideSlackFilesInViews); } /** diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java index 0ffcaf194c..af91181287 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java @@ -34,7 +34,7 @@ import org.openide.util.Lookup; iconBase = "org/sleuthkit/autopsy/imagegallery/images/btn_icon_image_gallery_32.png", keywords = "#OptionsCategory_Keywords_Options", keywordsCategory = "Options", - position = 14 + position = 15 ) @org.openide.util.NbBundle.Messages({"OptionsCategory_Name_Options=Image / Video Gallery", "OptionsCategory_Keywords_Options=image video gallery category "}) public final class ImageGalleryOptionsPanelController extends OptionsPanelController { diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchOptionsPanelController.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchOptionsPanelController.java index 91f5b504d4..40c7c2d938 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchOptionsPanelController.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchOptionsPanelController.java @@ -30,7 +30,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; @OptionsPanelController.TopLevelRegistration( categoryName = "#OptionsCategory_Name_KeywordSearchOptions", iconBase = "org/sleuthkit/autopsy/keywordsearch/options-icon.png", - position = 5, + position = 6, keywords = "#OptionsCategory_Keywords_KeywordSearchOptions", keywordsCategory = "KeywordSearchOptions") public final class KeywordSearchOptionsPanelController extends OptionsPanelController { From b577b761a653db6f68490a802794cb38f2ab6364 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Wed, 12 Sep 2018 23:24:56 -0400 Subject: [PATCH 03/11] Implementation as a JPopupMenu. --- .../autopsy/casemodule/CasePreferences.java | 38 +- .../corecomponents/ViewPreferencesPanel.form | 613 ++++++++++-------- .../corecomponents/ViewPreferencesPanel.java | 210 +++++- .../ViewPreferencesPanelController.java | 2 +- .../datamodel/AutopsyTreeChildFactory.java | 16 +- .../autopsy/datamodel/DeletedContent.java | 4 +- .../autopsy/datamodel/EmailExtracted.java | 4 +- .../autopsy/datamodel/ExtractedContent.java | 19 +- .../sleuthkit/autopsy/datamodel/FileSize.java | 4 +- .../datamodel/FileTypesByExtension.java | 4 +- .../datamodel/FileTypesByMimeType.java | 4 +- .../autopsy/datamodel/HashsetHits.java | 4 +- .../autopsy/datamodel/InterestingHits.java | 4 +- .../autopsy/datamodel/KeywordHits.java | 4 +- .../org/sleuthkit/autopsy/datamodel/Tags.java | 22 +- .../autopsy/datamodel/accounts/Accounts.java | 10 +- .../DirectoryTreeTopComponent.form | 8 + .../DirectoryTreeTopComponent.java | 69 +- .../directorytree/ViewContextAction.java | 3 +- 19 files changed, 650 insertions(+), 392 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java index 8d40b23538..8be8a44882 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java @@ -18,15 +18,18 @@ */ package org.sleuthkit.autopsy.casemodule; +import java.beans.PropertyChangeEvent; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.EnumSet; import java.util.Properties; import java.util.logging.Level; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent; /** * Read and update case preference file values. @@ -38,25 +41,40 @@ public final class CasePreferences { private static final Logger logger = Logger.getLogger(CasePreferences.class.getName()); - private Boolean groupItemsInTreeByDataSource = null; + private static Boolean groupItemsInTreeByDataSource = null; - //DLG: - public CasePreferences(Case currentCase) { - loadFromStorage(currentCase); + private CasePreferences() { } - public Boolean getGroupItemsInTreeByDataSource() { + static { + Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> { + if (evt.getNewValue() != null) { + loadFromStorage((Case) evt.getNewValue()); + } else { + saveToStorage((Case) evt.getOldValue()); + clear(); + } + }); + try { + loadFromStorage(Case.getCurrentCaseThrows()); + } catch (NoCurrentCaseException ex) { + logger.log(Level.SEVERE, "No current case open.", ex); + } + } + + public static Boolean getGroupItemsInTreeByDataSource() { return groupItemsInTreeByDataSource; } - public void setGroupItemsInTreeByDataSource(boolean value) { + public static void setGroupItemsInTreeByDataSource(boolean value) { groupItemsInTreeByDataSource = value; + DirectoryTreeTopComponent.getDefault().refreshContentTreeSafe(); } /** * Load case preferences from the settings file. */ - private void loadFromStorage(Case currentCase) { + private static void loadFromStorage(Case currentCase) { Path settingsFile = Paths.get(currentCase.getConfigDirectory(), SETTINGS_FILE); //NON-NLS if (settingsFile.toFile().exists()) { // Read the settings @@ -73,11 +91,15 @@ public final class CasePreferences { } } } + + private static void clear() { + groupItemsInTreeByDataSource = null; + } /** * Store case preferences in the settings file. */ - public void saveToStorage(Case currentCase) { + private static void saveToStorage(Case currentCase) { Path settingsFile = Paths.get(currentCase.getConfigDirectory(), SETTINGS_FILE); //NON-NLS Properties props = new Properties(); if (groupItemsInTreeByDataSource != null) { diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form index 1fcbee8b23..e2313f0ce5 100755 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form @@ -16,319 +16,368 @@ - - - - - - - - - + - - - - - - - - + - + - - - - - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + - - + + + + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java index 1e9b1fcbbd..51dc4d4f5d 100755 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java @@ -28,11 +28,13 @@ import java.util.Objects; import java.util.Properties; import java.util.logging.Level; import javax.swing.JPanel; +import org.netbeans.spi.options.OptionsPanelController; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent; /** * Panel for configuring view preferences. @@ -41,18 +43,30 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { private static final Logger logger = Logger.getLogger(ViewPreferencesPanel.class.getName()); - private Case currentCase = null; - private CasePreferences casePreferences = null; + private boolean immediateUpdates; /** * Creates new form ViewPreferencesPanel + * + * //DLG: Might not need this constructor anymore. */ public ViewPreferencesPanel() { initComponents(); } + /** + * Creates new form ViewPreferencesPanel + * + * //DLG: + */ + public ViewPreferencesPanel(boolean immediateUpdates) { + initComponents(); + this.immediateUpdates = immediateUpdates; + } + @Override public void load() { + // Global Settings boolean keepPreferredViewer = UserPreferences.keepPreferredContentViewer(); keepCurrentViewerRadioButton.setSelected(keepPreferredViewer); useBestViewerRadioButton.setSelected(!keepPreferredViewer); @@ -67,16 +81,17 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { dataSourcesHideSlackCheckbox.setSelected(UserPreferences.hideSlackFilesInDataSourcesTree()); viewsHideSlackCheckbox.setSelected(UserPreferences.hideSlackFilesInViewsTree()); - hideOtherUsersTagsCheckbox.setSelected(UserPreferences.showOnlyCurrentUserTags() == false); - - try { - currentCase = Case.getCurrentCaseThrows(); - casePreferences = new CasePreferences(currentCase); + // Current Case Settings + boolean caseIsOpen = Case.isCaseOpen(); + currentCaseSettingsPanel.setEnabled(caseIsOpen); + hideOtherUsersTagsCheckbox.setEnabled(caseIsOpen); + groupByDataSourceCheckbox.setEnabled(caseIsOpen); - groupByDataSourceCheckbox.setSelected(Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true)); - } catch (NoCurrentCaseException ex) { - // No open case. - } + hideOtherUsersTagsCheckbox.setSelected(UserPreferences.showOnlyCurrentUserTags() == false); + groupByDataSourceCheckbox.setSelected(Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)); + + // Current Session Settings + hideRejectedResultsCheckbox.setSelected(DirectoryTreeTopComponent.getDefault().getShowRejectedResults() == false); } @Override @@ -87,22 +102,23 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { UserPreferences.setHideKnownFilesInViewsTree(viewsHideKnownCheckbox.isSelected()); UserPreferences.setHideSlackFilesInDataSourcesTree(dataSourcesHideSlackCheckbox.isSelected()); UserPreferences.setHideSlackFilesInViewsTree(viewsHideSlackCheckbox.isSelected()); + UserPreferences.setShowOnlyCurrentUserTags(hideOtherUsersTagsCheckbox.isSelected() == false); - UserPreferences.setShowOnlyCurrentUserTags(hideOtherUsersTagsCheckbox.isSelected()); + storeGroupItemsInTreeByDataSource(); - if (currentCase != null) { + DirectoryTreeTopComponent.getDefault().setShowRejectedResults(hideRejectedResultsCheckbox.isSelected() == false); + } + + private void storeGroupItemsInTreeByDataSource() { + if (Case.isCaseOpen()) { /* * Only write the value if it has already been previously stored, or * if the checkbox is selected. This allows GroupDataSourcesDialog * to work. */ - if (casePreferences.getGroupItemsInTreeByDataSource() != null || groupByDataSourceCheckbox.isSelected()) { - firePropertyChange( - CasePreferences.GROUP_ITEMS_IN_TREE_BY_DATASOURCE, - casePreferences.getGroupItemsInTreeByDataSource(), Boolean.valueOf(groupByDataSourceCheckbox.isSelected())); - casePreferences.setGroupItemsInTreeByDataSource(groupByDataSourceCheckbox.isSelected()); + if (CasePreferences.getGroupItemsInTreeByDataSource() != null || groupByDataSourceCheckbox.isSelected()) { + CasePreferences.setGroupItemsInTreeByDataSource(groupByDataSourceCheckbox.isSelected()); } - casePreferences.saveToStorage(currentCase); } } @@ -115,6 +131,8 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { // //GEN-BEGIN:initComponents private void initComponents() { + viewPreferencesScrollPane = new javax.swing.JScrollPane(); + viewPreferencesPanel = new javax.swing.JPanel(); globalSettingsPanel = new javax.swing.JPanel(); selectFileLabel = new javax.swing.JLabel(); useBestViewerRadioButton = new javax.swing.JRadioButton(); @@ -134,6 +152,8 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { currentSessionSettingsPanel = new javax.swing.JPanel(); hideRejectedResultsCheckbox = new javax.swing.JCheckBox(); + viewPreferencesScrollPane.setBorder(null); + globalSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.globalSettingsPanel.border.title"))); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(selectFileLabel, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.selectFileLabel.text")); // NOI18N @@ -157,14 +177,34 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { org.openide.awt.Mnemonics.setLocalizedText(hideKnownFilesLabel, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.hideKnownFilesLabel.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(dataSourcesHideKnownCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.dataSourcesHideKnownCheckbox.text")); // NOI18N + dataSourcesHideKnownCheckbox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + dataSourcesHideKnownCheckboxActionPerformed(evt); + } + }); org.openide.awt.Mnemonics.setLocalizedText(viewsHideKnownCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.viewsHideKnownCheckbox.text")); // NOI18N + viewsHideKnownCheckbox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + viewsHideKnownCheckboxActionPerformed(evt); + } + }); org.openide.awt.Mnemonics.setLocalizedText(hideSlackFilesLabel, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.hideSlackFilesLabel.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(dataSourcesHideSlackCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.dataSourcesHideSlackCheckbox.text")); // NOI18N + dataSourcesHideSlackCheckbox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + dataSourcesHideSlackCheckboxActionPerformed(evt); + } + }); org.openide.awt.Mnemonics.setLocalizedText(viewsHideSlackCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.viewsHideSlackCheckbox.text")); // NOI18N + viewsHideSlackCheckbox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + viewsHideSlackCheckboxActionPerformed(evt); + } + }); org.openide.awt.Mnemonics.setLocalizedText(displayTimeLabel, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.displayTimeLabel.text")); // NOI18N @@ -186,7 +226,7 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { globalSettingsPanel.setLayout(globalSettingsPanelLayout); globalSettingsPanelLayout.setHorizontalGroup( globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, globalSettingsPanelLayout.createSequentialGroup() + .addGroup(globalSettingsPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(displayTimeLabel) @@ -250,8 +290,18 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { currentCaseSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.currentCaseSettingsPanel.border.title"))); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(hideOtherUsersTagsCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text")); // NOI18N + hideOtherUsersTagsCheckbox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + hideOtherUsersTagsCheckboxActionPerformed(evt); + } + }); org.openide.awt.Mnemonics.setLocalizedText(groupByDataSourceCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.groupByDataSourceCheckbox.text")); // NOI18N + groupByDataSourceCheckbox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + groupByDataSourceCheckboxActionPerformed(evt); + } + }); javax.swing.GroupLayout currentCaseSettingsPanelLayout = new javax.swing.GroupLayout(currentCaseSettingsPanel); currentCaseSettingsPanel.setLayout(currentCaseSettingsPanelLayout); @@ -277,6 +327,11 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { currentSessionSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.currentSessionSettingsPanel.border.title"))); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(hideRejectedResultsCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.hideRejectedResultsCheckbox.text")); // NOI18N + hideRejectedResultsCheckbox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + hideRejectedResultsCheckboxActionPerformed(evt); + } + }); javax.swing.GroupLayout currentSessionSettingsPanelLayout = new javax.swing.GroupLayout(currentSessionSettingsPanel); currentSessionSettingsPanel.setLayout(currentSessionSettingsPanelLayout); @@ -294,50 +349,139 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { .addComponent(hideRejectedResultsCheckbox)) ); - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); - this.setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + javax.swing.GroupLayout viewPreferencesPanelLayout = new javax.swing.GroupLayout(viewPreferencesPanel); + viewPreferencesPanel.setLayout(viewPreferencesPanelLayout); + viewPreferencesPanelLayout.setHorizontalGroup( + viewPreferencesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, viewPreferencesPanelLayout.createSequentialGroup() .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(viewPreferencesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(currentSessionSettingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(globalSettingsPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(currentCaseSettingsPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(currentCaseSettingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(globalSettingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() + viewPreferencesPanelLayout.setVerticalGroup( + viewPreferencesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(viewPreferencesPanelLayout.createSequentialGroup() .addComponent(globalSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGap(11, 11, 11) .addComponent(currentCaseSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(currentSessionSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); + + viewPreferencesScrollPane.setViewportView(viewPreferencesPanel); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(viewPreferencesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 562, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(viewPreferencesScrollPane) + ); }// //GEN-END:initComponents private void useBestViewerRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useBestViewerRadioButtonActionPerformed useBestViewerRadioButton.setSelected(true); keepCurrentViewerRadioButton.setSelected(false); + if (immediateUpdates) { + UserPreferences.setKeepPreferredContentViewer(false); + } else { + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } }//GEN-LAST:event_useBestViewerRadioButtonActionPerformed private void keepCurrentViewerRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_keepCurrentViewerRadioButtonActionPerformed useBestViewerRadioButton.setSelected(false); keepCurrentViewerRadioButton.setSelected(true); + if (immediateUpdates) { + UserPreferences.setKeepPreferredContentViewer(true); + } else { + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } }//GEN-LAST:event_keepCurrentViewerRadioButtonActionPerformed private void useLocalTimeRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useLocalTimeRadioButtonActionPerformed useLocalTimeRadioButton.setSelected(true); useGMTTimeRadioButton.setSelected(false); + if (immediateUpdates) { + UserPreferences.setDisplayTimesInLocalTime(true); + } else { + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } }//GEN-LAST:event_useLocalTimeRadioButtonActionPerformed private void useGMTTimeRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useGMTTimeRadioButtonActionPerformed useLocalTimeRadioButton.setSelected(false); useGMTTimeRadioButton.setSelected(true); + if (immediateUpdates) { + UserPreferences.setDisplayTimesInLocalTime(false); + } else { + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } }//GEN-LAST:event_useGMTTimeRadioButtonActionPerformed + private void dataSourcesHideKnownCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dataSourcesHideKnownCheckboxActionPerformed + if (immediateUpdates) { + UserPreferences.setHideKnownFilesInDataSourcesTree(dataSourcesHideKnownCheckbox.isSelected()); + } else { + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } + }//GEN-LAST:event_dataSourcesHideKnownCheckboxActionPerformed + + private void viewsHideKnownCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewsHideKnownCheckboxActionPerformed + if (immediateUpdates) { + UserPreferences.setHideKnownFilesInViewsTree(viewsHideKnownCheckbox.isSelected()); + } else { + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } + }//GEN-LAST:event_viewsHideKnownCheckboxActionPerformed + + private void dataSourcesHideSlackCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dataSourcesHideSlackCheckboxActionPerformed + if (immediateUpdates) { + UserPreferences.setHideSlackFilesInDataSourcesTree(dataSourcesHideSlackCheckbox.isSelected()); + } else { + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } + }//GEN-LAST:event_dataSourcesHideSlackCheckboxActionPerformed + + private void viewsHideSlackCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewsHideSlackCheckboxActionPerformed + if (immediateUpdates) { + UserPreferences.setHideSlackFilesInViewsTree(viewsHideSlackCheckbox.isSelected()); + } else { + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } + }//GEN-LAST:event_viewsHideSlackCheckboxActionPerformed + + private void hideOtherUsersTagsCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_hideOtherUsersTagsCheckboxActionPerformed + if (immediateUpdates) { + UserPreferences.setShowOnlyCurrentUserTags(hideOtherUsersTagsCheckbox.isSelected() == false); + } else { + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } + }//GEN-LAST:event_hideOtherUsersTagsCheckboxActionPerformed + + private void groupByDataSourceCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_groupByDataSourceCheckboxActionPerformed + if (immediateUpdates) { + storeGroupItemsInTreeByDataSource(); + } else { + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } + }//GEN-LAST:event_groupByDataSourceCheckboxActionPerformed + + private void hideRejectedResultsCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_hideRejectedResultsCheckboxActionPerformed + if (immediateUpdates) { + DirectoryTreeTopComponent.getDefault().setShowRejectedResults(hideRejectedResultsCheckbox.isSelected() == false); + } else { + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } + }//GEN-LAST:event_hideRejectedResultsCheckboxActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel currentCaseSettingsPanel; @@ -356,6 +500,8 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { private javax.swing.JRadioButton useBestViewerRadioButton; private javax.swing.JRadioButton useGMTTimeRadioButton; private javax.swing.JRadioButton useLocalTimeRadioButton; + private javax.swing.JPanel viewPreferencesPanel; + private javax.swing.JScrollPane viewPreferencesScrollPane; private javax.swing.JCheckBox viewsHideKnownCheckbox; private javax.swing.JCheckBox viewsHideSlackCheckbox; // End of variables declaration//GEN-END:variables diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanelController.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanelController.java index 40efcd0149..75a6bb4c42 100755 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanelController.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanelController.java @@ -106,7 +106,7 @@ public final class ViewPreferencesPanelController extends OptionsPanelController */ private ViewPreferencesPanel getPanel() { if (panel == null) { - panel = new ViewPreferencesPanel(); + panel = new ViewPreferencesPanel(false); panel.addPropertyChangeListener((PropertyChangeEvent evt) -> { if (evt.getPropertyName().equals(OptionsPanelController.PROP_CHANGED)) { changed(); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java index 6fd17f6c4c..5af1d5c085 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java @@ -54,15 +54,9 @@ public final class AutopsyTreeChildFactory extends ChildFactory.Detachable list) { try { - Case currentCase = Case.getCurrentCaseThrows(); - CasePreferences casePreferences = new CasePreferences(currentCase); SleuthkitCase tskCase = Case.getCurrentCaseThrows().getSleuthkitCase(); - if (Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true)) { + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { List dataSources = tskCase.getDataSources(); List keys = new ArrayList<>(); dataSources.forEach((datasource) -> { diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/DeletedContent.java b/Core/src/org/sleuthkit/autopsy/datamodel/DeletedContent.java index 370cc5cec7..57bd68911c 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/DeletedContent.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/DeletedContent.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; import java.util.List; +import java.util.Objects; import java.util.Observable; import java.util.Observer; import java.util.Set; @@ -39,6 +40,7 @@ import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; @@ -460,7 +462,7 @@ public class DeletedContent implements AutopsyVisitableItem { + " OR known IS NULL)"; //NON-NLS } - if (UserPreferences.groupItemsInTreeByDatasource()) { + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { query += " AND data_source_obj_id = " + filteringDSObjId; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/EmailExtracted.java b/Core/src/org/sleuthkit/autopsy/datamodel/EmailExtracted.java index d9df849d86..ff268f2de2 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/EmailExtracted.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/EmailExtracted.java @@ -28,6 +28,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Observable; import java.util.Observer; import java.util.Set; @@ -39,6 +40,7 @@ import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; @@ -161,7 +163,7 @@ public class EmailExtracted implements AutopsyVisitableItem { + "attribute_type_id=" + pathAttrId //NON-NLS + " AND blackboard_attributes.artifact_id=blackboard_artifacts.artifact_id" //NON-NLS + " AND blackboard_artifacts.artifact_type_id=" + artId; //NON-NLS - if (UserPreferences.groupItemsInTreeByDatasource()) { + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { query += " AND blackboard_artifacts.data_source_obj_id = " + datasourceObjId; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java b/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java index dc19f0ecb1..3ab5f6cb90 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java @@ -292,9 +292,7 @@ public class ExtractedContent implements AutopsyVisitableItem { protected boolean createKeys(List list) { if (skCase != null) { try { - Case currentCase = Case.getCurrentCaseThrows(); - CasePreferences casePreferences = new CasePreferences(currentCase); - List types = Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true) ? + List types = Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? blackboard.getArtifactTypesInUse(datasourceObjId) : skCase.getArtifactTypesInUse() ; @@ -316,8 +314,6 @@ public class ExtractedContent implements AutopsyVisitableItem { node.updateDisplayName(); } } - } catch (NoCurrentCaseException ex) { - Logger.getLogger(TypeFactory.class.getName()).log(Level.SEVERE, "No current case open: " + ex.getLocalizedMessage()); //NON-NLS } catch (TskCoreException ex) { Logger.getLogger(TypeFactory.class.getName()).log(Level.SEVERE, "Error getting list of artifacts in use: " + ex.getLocalizedMessage()); //NON-NLS } @@ -361,14 +357,9 @@ public class ExtractedContent implements AutopsyVisitableItem { // a performance increase might be had by adding a // "getBlackboardArtifactCount()" method to skCase try { - Case currentCase = Case.getCurrentCaseThrows(); - CasePreferences casePreferences = new CasePreferences(currentCase); - this.childCount = Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true) ? + this.childCount = Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? blackboard.getArtifactsCount(type.getTypeID(), datasourceObjId) : skCase.getBlackboardArtifactsTypeCount(type.getTypeID()); - } catch (NoCurrentCaseException ex) { - Logger.getLogger(TypeNode.class.getName()) - .log(Level.WARNING, "No current case open.", ex); //NON-NLS } catch (TskException ex) { Logger.getLogger(TypeNode.class.getName()) .log(Level.WARNING, "Error getting child count", ex); //NON-NLS @@ -490,15 +481,11 @@ public class ExtractedContent implements AutopsyVisitableItem { protected boolean createKeys(List list) { if (skCase != null) { try { - Case currentCase = Case.getCurrentCaseThrows(); - CasePreferences casePreferences = new CasePreferences(currentCase); List arts = - Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true) ? + Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? blackboard.getArtifacts(type.getTypeID(), datasourceObjId) : skCase.getBlackboardArtifacts(type.getTypeID()); list.addAll(arts); - } catch (NoCurrentCaseException ex) { - Logger.getLogger(ArtifactFactory.class.getName()).log(Level.SEVERE, "No current case open.", ex); //NON-NLS } catch (TskException ex) { Logger.getLogger(ArtifactFactory.class.getName()).log(Level.SEVERE, "Couldn't get blackboard artifacts from database", ex); //NON-NLS } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/FileSize.java b/Core/src/org/sleuthkit/autopsy/datamodel/FileSize.java index 51ece423da..8ce1aa75c8 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/FileSize.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/FileSize.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; import java.util.List; +import java.util.Objects; import java.util.Observable; import java.util.Observer; import java.util.Set; @@ -36,6 +37,7 @@ import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; @@ -446,7 +448,7 @@ public class FileSize implements AutopsyVisitableItem { } // filter by datasource if indicated in user preferences - if (UserPreferences.groupItemsInTreeByDatasource()) { + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { query += " AND data_source_obj_id = " + filteringDSObjId; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByExtension.java b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByExtension.java index 1d24f081ab..5f1f33607d 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByExtension.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByExtension.java @@ -23,6 +23,7 @@ import java.beans.PropertyChangeListener; import java.util.Arrays; import java.util.EnumSet; import java.util.List; +import java.util.Objects; import java.util.Observable; import java.util.Observer; import java.util.Set; @@ -37,6 +38,7 @@ import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; @@ -363,7 +365,7 @@ public final class FileTypesByExtension implements AutopsyVisitableItem { + (UserPreferences.hideKnownFilesInViewsTree() ? " AND (known IS NULL OR known != " + TskData.FileKnown.KNOWN.getFileKnownValue() + ")" : " ") - + (UserPreferences.groupItemsInTreeByDatasource() + + (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? " AND data_source_obj_id = " + filteringDataSourceObjId() : " ") + " AND (extension IN (" + filter.getFilter().stream() diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java index 90cb90ae77..ad4ea9de99 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java @@ -28,6 +28,7 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Observable; import java.util.Observer; import java.util.Set; @@ -41,6 +42,7 @@ import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import static org.sleuthkit.autopsy.core.UserPreferences.hideKnownFilesInViewsTree; @@ -101,7 +103,7 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi + TskData.TSK_DB_FILES_TYPE_ENUM.LOCAL.ordinal() + (hideSlackFilesInViewsTree() ? "" : ("," + TskData.TSK_DB_FILES_TYPE_ENUM.SLACK.ordinal())) + "))" - + ( UserPreferences.groupItemsInTreeByDatasource() ? " AND data_source_obj_id = " + this.filteringDataSourceObjId() : " ") + + ( Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? " AND data_source_obj_id = " + this.filteringDataSourceObjId() : " ") + (hideKnownFilesInViewsTree() ? (" AND (known IS NULL OR known != " + TskData.FileKnown.KNOWN.getFileKnownValue() + ")") : ""); } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/HashsetHits.java b/Core/src/org/sleuthkit/autopsy/datamodel/HashsetHits.java index 24bae3d368..8ff6645562 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/HashsetHits.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/HashsetHits.java @@ -30,6 +30,7 @@ import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Observable; import java.util.Observer; import java.util.Set; @@ -41,6 +42,7 @@ import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; @@ -141,7 +143,7 @@ public class HashsetHits implements AutopsyVisitableItem { + "attribute_type_id=" + setNameId //NON-NLS + " AND blackboard_attributes.artifact_id=blackboard_artifacts.artifact_id" //NON-NLS + " AND blackboard_artifacts.artifact_type_id=" + artId; //NON-NLS - if (UserPreferences.groupItemsInTreeByDatasource()) { + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { query += " AND blackboard_artifacts.data_source_obj_id = " + datasourceObjId; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/InterestingHits.java b/Core/src/org/sleuthkit/autopsy/datamodel/InterestingHits.java index 67622d180c..6e3c138fcd 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/InterestingHits.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/InterestingHits.java @@ -30,6 +30,7 @@ import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Observable; import java.util.Observer; import java.util.Set; @@ -41,6 +42,7 @@ import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; @@ -132,7 +134,7 @@ public class InterestingHits implements AutopsyVisitableItem { + "attribute_type_id=" + setNameId //NON-NLS + " AND blackboard_attributes.artifact_id=blackboard_artifacts.artifact_id" //NON-NLS + " AND blackboard_artifacts.artifact_type_id=" + artId; //NON-NLS - if (UserPreferences.groupItemsInTreeByDatasource()) { + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { query += " AND blackboard_artifacts.data_source_obj_id = " + datasourceObjId; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/KeywordHits.java b/Core/src/org/sleuthkit/autopsy/datamodel/KeywordHits.java index 51367297b8..9e60fba7f8 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/KeywordHits.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/KeywordHits.java @@ -29,6 +29,7 @@ import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Observable; import java.util.Observer; import java.util.Set; @@ -43,6 +44,7 @@ import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; @@ -321,7 +323,7 @@ public class KeywordHits implements AutopsyVisitableItem { } String queryStr = KEYWORD_HIT_ATTRIBUTES_QUERY; - if (UserPreferences.groupItemsInTreeByDatasource()) { + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { queryStr += " AND blackboard_artifacts.data_source_obj_id = " + datasourceObjId; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Tags.java b/Core/src/org/sleuthkit/autopsy/datamodel/Tags.java index b5f8ecff39..abf77350d2 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Tags.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Tags.java @@ -23,6 +23,7 @@ import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.EnumSet; import java.util.List; +import java.util.Objects; import java.util.Observable; import java.util.Observer; import java.util.Set; @@ -34,6 +35,7 @@ import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.casemodule.services.TagsManager; import org.sleuthkit.autopsy.core.UserPreferences; @@ -244,11 +246,11 @@ public class Tags implements AutopsyVisitableItem { List tagNamesInUse; if (UserPreferences.showOnlyCurrentUserTags()) { String userName = System.getProperty(USER_NAME_PROPERTY); - tagNamesInUse = UserPreferences.groupItemsInTreeByDatasource() + tagNamesInUse = Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? Case.getCurrentCaseThrows().getServices().getTagsManager().getTagNamesInUseForUser(datasourceObjId, userName) : Case.getCurrentCaseThrows().getServices().getTagsManager().getTagNamesInUseForUser(userName); } else { - tagNamesInUse = UserPreferences.groupItemsInTreeByDatasource() + tagNamesInUse = Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? Case.getCurrentCaseThrows().getServices().getTagsManager().getTagNamesInUse(datasourceObjId) : Case.getCurrentCaseThrows().getServices().getTagsManager().getTagNamesInUse(); } @@ -301,7 +303,7 @@ public class Tags implements AutopsyVisitableItem { TagsManager tm = Case.getCurrentCaseThrows().getServices().getTagsManager(); if (UserPreferences.showOnlyCurrentUserTags()) { String userName = System.getProperty(USER_NAME_PROPERTY); - if (UserPreferences.groupItemsInTreeByDatasource()) { + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { tagsCount = tm.getContentTagsCountByTagNameForUser(tagName, datasourceObjId, userName); tagsCount += tm.getBlackboardArtifactTagsCountByTagNameForUser(tagName, datasourceObjId, userName); } else { @@ -309,7 +311,7 @@ public class Tags implements AutopsyVisitableItem { tagsCount += tm.getBlackboardArtifactTagsCountByTagNameForUser(tagName, userName); } } else { - if (UserPreferences.groupItemsInTreeByDatasource()) { + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { tagsCount = tm.getContentTagsCountByTagName(tagName, datasourceObjId); tagsCount += tm.getBlackboardArtifactTagsCountByTagName(tagName, datasourceObjId); } else { @@ -422,11 +424,11 @@ public class Tags implements AutopsyVisitableItem { if (UserPreferences.showOnlyCurrentUserTags()) { String userName = System.getProperty(USER_NAME_PROPERTY); - tagsCount = UserPreferences.groupItemsInTreeByDatasource() + tagsCount = Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? Case.getCurrentCaseThrows().getServices().getTagsManager().getContentTagsCountByTagNameForUser(tagName, datasourceObjId, userName) : Case.getCurrentCaseThrows().getServices().getTagsManager().getContentTagsCountByTagNameForUser(tagName, userName); } else { - tagsCount = UserPreferences.groupItemsInTreeByDatasource() + tagsCount = Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? Case.getCurrentCaseThrows().getServices().getTagsManager().getContentTagsCountByTagName(tagName, datasourceObjId) : Case.getCurrentCaseThrows().getServices().getTagsManager().getContentTagsCountByTagName(tagName); } @@ -484,7 +486,7 @@ public class Tags implements AutopsyVisitableItem { protected boolean createKeys(List keys) { // Use the content tags bearing the specified tag name as the keys. try { - List contentTags = UserPreferences.groupItemsInTreeByDatasource() + List contentTags = Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? Case.getCurrentCaseThrows().getServices().getTagsManager().getContentTagsByTagName(tagName, datasourceObjId) : Case.getCurrentCaseThrows().getServices().getTagsManager().getContentTagsByTagName(tagName); if (UserPreferences.showOnlyCurrentUserTags()) { @@ -542,11 +544,11 @@ public class Tags implements AutopsyVisitableItem { try { if (UserPreferences.showOnlyCurrentUserTags()) { String userName = System.getProperty(USER_NAME_PROPERTY); - tagsCount = UserPreferences.groupItemsInTreeByDatasource() + tagsCount = Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? Case.getCurrentCaseThrows().getServices().getTagsManager().getBlackboardArtifactTagsCountByTagNameForUser(tagName, datasourceObjId, userName) : Case.getCurrentCaseThrows().getServices().getTagsManager().getBlackboardArtifactTagsCountByTagNameForUser(tagName, userName); } else { - tagsCount = UserPreferences.groupItemsInTreeByDatasource() + tagsCount = Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? Case.getCurrentCaseThrows().getServices().getTagsManager().getBlackboardArtifactTagsCountByTagName(tagName, datasourceObjId) : Case.getCurrentCaseThrows().getServices().getTagsManager().getBlackboardArtifactTagsCountByTagName(tagName); } @@ -604,7 +606,7 @@ public class Tags implements AutopsyVisitableItem { protected boolean createKeys(List keys) { try { // Use the blackboard artifact tags bearing the specified tag name as the keys. - List artifactTags = UserPreferences.groupItemsInTreeByDatasource() + List artifactTags = Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) ? Case.getCurrentCaseThrows().getServices().getTagsManager().getBlackboardArtifactTagsByTagName(tagName, datasourceObjId) : Case.getCurrentCaseThrows().getServices().getTagsManager().getBlackboardArtifactTagsByTagName(tagName); if (UserPreferences.showOnlyCurrentUserTags()) { diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java index ff34985bc7..af4dd6c35e 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java @@ -153,14 +153,8 @@ final public class Accounts implements AutopsyVisitableItem { * based on the UserPreferences groupItemsInTreeByDatasource setting */ private String getFilterByDataSourceClause() { - try { - Case currentCase = Case.getCurrentCaseThrows(); - CasePreferences casePreferences = new CasePreferences(currentCase); - if (Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true)) { - return " AND blackboard_artifacts.data_source_obj_id = " + datasourceObjId + " "; - } - } catch (NoCurrentCaseException ex) { - LOGGER.log(Level.SEVERE, "No current case open.", ex); //DLG: Review this change. How should we return out of this??? + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { + return " AND blackboard_artifacts.data_source_obj_id = " + datasourceObjId + " "; } return " "; diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form index bacd1d8903..ccdd7650ea 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form @@ -1,6 +1,14 @@
+ + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index 880ebce710..db4f4d66d0 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -42,8 +42,11 @@ import java.util.prefs.PreferenceChangeEvent; import java.util.prefs.PreferenceChangeListener; import java.util.Properties; import javax.swing.Action; +import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; import javax.swing.SwingWorker; +import javax.swing.event.PopupMenuEvent; +import javax.swing.event.PopupMenuListener; import javax.swing.tree.TreeSelectionModel; import org.apache.commons.lang3.StringUtils; import org.openide.explorer.ExplorerManager; @@ -69,6 +72,7 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.CoreComponentControl; import org.sleuthkit.autopsy.corecomponentinterfaces.DataExplorer; import org.sleuthkit.autopsy.corecomponents.DataResultTopComponent; import org.sleuthkit.autopsy.corecomponents.TableFilterNode; +import org.sleuthkit.autopsy.corecomponents.ViewPreferencesPanel; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ModuleSettings; import org.sleuthkit.autopsy.datamodel.ArtifactNodeSelectionInfo; @@ -107,6 +111,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat private final transient ExplorerManager em = new ExplorerManager(); private static DirectoryTreeTopComponent instance; private final DataResultTopComponent dataResult = new DataResultTopComponent(Bundle.DirectoryTreeTopComponent_resultsView_title()); + private final ViewPreferencesPanel viewPreferencesPanel = new ViewPreferencesPanel(true); private final LinkedList backList; private final LinkedList forwardList; private static final String PREFERRED_ID = "DirectoryTreeTopComponent"; //NON-NLS @@ -114,6 +119,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat private AutopsyTreeChildFactory autopsyTreeChildFactory; private Children autopsyTreeChildren; private Accounts accounts; + private boolean showRejectedResults; private static final long DEFAULT_DATASOURCE_GROUPING_THRESHOLD = 5; // Threshold for prompting the user about grouping by data source private static final String GROUPING_THRESHOLD_NAME = "GroupDataSourceThreshold"; private static final String SETTINGS_FILE = "CasePreferences.properties"; //NON-NLS @@ -140,8 +146,27 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat backButton.setEnabled(false); forwardButton.setEnabled(false); - groupByDatasourceCheckBox.setSelected(UserPreferences.groupItemsInTreeByDatasource()); + groupByDatasourceCheckBox.setSelected(Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)); showOnlyCurrentUserTagsCheckbox.setSelected(UserPreferences.showOnlyCurrentUserTags()); + + viewPreferencesPopupMenu.add(viewPreferencesPanel); + viewPreferencesPopupMenu.setSize(viewPreferencesPanel.getPreferredSize().width + 6, viewPreferencesPanel.getPreferredSize().height + 6); + viewPreferencesPopupMenu.addPopupMenuListener(new PopupMenuListener() { + @Override + public void popupMenuWillBecomeVisible(PopupMenuEvent e) { + openViewPreferencesButton.setSelected(true); + } + + @Override + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { + openViewPreferencesButton.setSelected(false); + } + + @Override + public void popupMenuCanceled(PopupMenuEvent e) { + openViewPreferencesButton.setSelected(false); + } + }); } /** @@ -185,6 +210,17 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat public DataResultTopComponent getDirectoryListing() { return this.dataResult; } + + public boolean getShowRejectedResults() { + return showRejectedResults; + } + + public void setShowRejectedResults(boolean showRejectedResults) { + this.showRejectedResults = showRejectedResults; + if (accounts != null) { + accounts.setShowRejected(showRejectedResults); + } + } /** * This method is called from within the constructor to initialize the form. @@ -194,6 +230,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat // //GEN-BEGIN:initComponents private void initComponents() { + viewPreferencesPopupMenu = new javax.swing.JPopupMenu(); treeView = new BeanTreeView(); backButton = new javax.swing.JButton(); forwardButton = new javax.swing.JButton(); @@ -369,8 +406,18 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat }//GEN-LAST:event_showRejectedCheckBoxActionPerformed private void openViewPreferencesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openViewPreferencesButtonActionPerformed - ViewPreferencesDialog dialog = new ViewPreferencesDialog(); - dialog.display(); + //DLG: ViewPreferencesDialog dialog = new ViewPreferencesDialog(); + //DLG: dialog.display(); + + /*ViewPreferencesPanel panel = new ViewPreferencesPanel(); + panel.load(); + + JPopupMenu menu = new JPopupMenu(); + menu.add(panel); + menu.show(openViewPreferencesButton, panel.getWidth(), panel.getHeight());*/ + + viewPreferencesPanel.load(); + viewPreferencesPopupMenu.show(openViewPreferencesButton, 0, openViewPreferencesButton.getHeight() - 1); }//GEN-LAST:event_openViewPreferencesButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables @@ -381,6 +428,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat private javax.swing.JCheckBox showOnlyCurrentUserTagsCheckbox; private javax.swing.JCheckBox showRejectedCheckBox; private javax.swing.JScrollPane treeView; + private javax.swing.JPopupMenu viewPreferencesPopupMenu; // End of variables declaration//GEN-END:variables /** @@ -440,20 +488,15 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat * @param dataSourceCount */ private void promptForDataSourceGrouping(Case currentCase, int dataSourceCount) { - CasePreferences casePreferences = new CasePreferences(currentCase); - - if (casePreferences.getGroupItemsInTreeByDataSource() == null) { + if (CasePreferences.getGroupItemsInTreeByDataSource() == null) { GroupDataSourcesDialog dialog = new GroupDataSourcesDialog(dataSourceCount); dialog.display(); if (dialog.groupByDataSourceSelected()) { - casePreferences.setGroupItemsInTreeByDataSource(true); + CasePreferences.setGroupItemsInTreeByDataSource(true); refreshContentTreeSafe(); //DLG: Consider an event. } else { - casePreferences.setGroupItemsInTreeByDataSource(false); + CasePreferences.setGroupItemsInTreeByDataSource(false); } - - // Save the response - casePreferences.saveToStorage(currentCase); } } @@ -498,7 +541,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat try { int dataSourceCount = currentCase.getDataSources().size(); - if (!UserPreferences.groupItemsInTreeByDatasource() + if (!Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) && dataSourceCount > threshold) { promptForDataSourceGrouping(currentCase, dataSourceCount); } @@ -928,7 +971,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat private void refreshTagsTree() { SwingUtilities.invokeLater(() -> { // if no open case or has no data then there is no tree to rebuild - if (UserPreferences.groupItemsInTreeByDatasource()) { + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { for (Node dataSource : autopsyTreeChildren.getNodes()) { Node tagsNode = dataSource.getChildren().findChild(Tags.getTagsDisplayName()); if (tagsNode != null) { diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java index 585241c4f8..96fccea7ea 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java @@ -149,8 +149,7 @@ public class ViewContextAction extends AbstractAction { } Node parentTreeViewNode; - CasePreferences casePreferences = new CasePreferences(currentCase); - if (Objects.equals(casePreferences.getGroupItemsInTreeByDataSource(), true)) { // 'Group by Data Source' view + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { // 'Group by Data Source' view SleuthkitCase skCase; String dsname; From 3a1cc602f62c143da48dd9d0365e00aebeb47892 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Thu, 13 Sep 2018 00:18:10 -0400 Subject: [PATCH 04/11] Fixed button anchor on directory tree. --- .../DirectoryTreeTopComponent.form | 38 +++++++++---------- .../DirectoryTreeTopComponent.java | 32 ++++++++-------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form index ccdd7650ea..c36a2ca273 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form @@ -24,26 +24,26 @@ - - - + + - - - - - - - - + + + + + + + + + - + @@ -56,14 +56,14 @@ - - - - - - + + - + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index db4f4d66d0..22320f9d1f 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -310,21 +310,20 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(treeView) .addGroup(layout.createSequentialGroup() - .addGap(1, 1, 1) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(showOnlyCurrentUserTagsCheckbox) - .addGap(18, 18, 18) - .addComponent(showRejectedCheckBox) - .addGap(18, 18, 18) - .addComponent(groupByDatasourceCheckBox)) .addGroup(layout.createSequentialGroup() .addComponent(backButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(forwardButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(254, 254, 254) - .addComponent(openViewPreferencesButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(openViewPreferencesButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(showOnlyCurrentUserTagsCheckbox) + .addComponent(showRejectedCheckBox) + .addComponent(groupByDatasourceCheckBox)) + .addGap(0, 247, Short.MAX_VALUE))) + .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -334,13 +333,14 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat .addComponent(backButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(forwardButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(openViewPreferencesButton, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(9, 9, 9) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(showOnlyCurrentUserTagsCheckbox) - .addComponent(showRejectedCheckBox) - .addComponent(groupByDatasourceCheckBox)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(showOnlyCurrentUserTagsCheckbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(treeView, javax.swing.GroupLayout.DEFAULT_SIZE, 870, Short.MAX_VALUE)) + .addComponent(showRejectedCheckBox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(groupByDatasourceCheckBox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(treeView, javax.swing.GroupLayout.DEFAULT_SIZE, 828, Short.MAX_VALUE)) ); }// //GEN-END:initComponents From a3547b0e8c32ce2e133fdd8cc7e69c04ae91473e Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Thu, 13 Sep 2018 01:27:57 -0400 Subject: [PATCH 05/11] Cleanup. --- .../autopsy/casemodule/Bundle.properties | 2 - .../autopsy/core/UserPreferences.java | 6 +- .../corecomponents/AutopsyOptionsPanel.form | 242 +----------------- .../corecomponents/AutopsyOptionsPanel.java | 232 +---------------- .../autopsy/corecomponents/Bundle.properties | 17 -- .../corecomponents/Bundle_ja.properties | 11 - .../corecomponents/ViewPreferencesDialog.form | 78 ------ .../corecomponents/ViewPreferencesDialog.java | 133 ---------- .../corecomponents/ViewPreferencesPanel.java | 77 +++--- .../autopsy/datamodel/accounts/Accounts.java | 4 +- .../autopsy/directorytree/Bundle.properties | 3 - .../DirectoryTreeTopComponent.form | 60 +---- .../DirectoryTreeTopComponent.java | 86 +------ 13 files changed, 69 insertions(+), 882 deletions(-) delete mode 100755 Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.form delete mode 100755 Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.java diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties index a89ea845dd..4154a913b9 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties @@ -233,5 +233,3 @@ LocalDiskSelectionDialog.okButton.text=OK LocalDiskPanel.localDiskLabel.text=Local Disk: LocalDiskPanel.imageWriterErrorLabel.text=Error Label LocalDiskSelectionDialog.title=Select Local Disk -ViewPreferencesDialog.okButton.text=OK -ViewPreferencesDialog.cancelButton.text=Cancel diff --git a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java index 3b92e24481..48ce2c5731 100644 --- a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java +++ b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java @@ -189,11 +189,13 @@ public final class UserPreferences { preferences.putInt(NUMBER_OF_FILE_INGEST_THREADS, value); } - public static boolean groupItemsInTreeByDatasource() { //DLG: Replace use of this with the equivallent method in CasePreferences + @Deprecated + public static boolean groupItemsInTreeByDatasource() { return preferences.getBoolean(GROUP_ITEMS_IN_TREE_BY_DATASOURCE, false); } - public static void setGroupItemsInTreeByDatasource(boolean value) { //DLG: Replace use of this with the equivallent method in CasePreferences + @Deprecated + public static void setGroupItemsInTreeByDatasource(boolean value) { preferences.putBoolean(GROUP_ITEMS_IN_TREE_BY_DATASOURCE, value); } diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.form b/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.form index b63f0c6f8b..94a225dfe0 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.form +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.form @@ -35,7 +35,7 @@ - + @@ -64,15 +64,11 @@ - - - - - - - - - + + + + + @@ -81,14 +77,11 @@ - - - - - + + - + @@ -128,7 +121,7 @@ - + @@ -232,219 +225,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -471,7 +251,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.java index 2bdf9dd7ea..b2558400ed 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/AutopsyOptionsPanel.java @@ -285,16 +285,6 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { * Load the saved user preferences. */ void load() { - boolean keepPreferredViewer = UserPreferences.keepPreferredContentViewer(); - oldKeepCurrentViewerRB.setSelected(keepPreferredViewer); - oldUseBestViewerRB.setSelected(!keepPreferredViewer); - oldDataSourcesHideKnownCB.setSelected(UserPreferences.hideKnownFilesInDataSourcesTree()); - oldViewsHideKnownCB.setSelected(UserPreferences.hideKnownFilesInViewsTree()); - oldDataSourcesHideSlackCB.setSelected(UserPreferences.hideSlackFilesInDataSourcesTree()); - oldViewsHideSlackCB.setSelected(UserPreferences.hideSlackFilesInViewsTree()); - boolean useLocalTime = UserPreferences.displayTimesInLocalTime(); - oldUseLocalTimeRB.setSelected(useLocalTime); - oldUseGMTTimeRB.setSelected(!useLocalTime); String path = ModuleSettings.getConfigSetting(ReportBranding.MODULE_NAME, ReportBranding.AGENCY_LOGO_PATH_PROP); boolean useDefault = (path == null || path.isEmpty()); defaultLogoRB.setSelected(useDefault); @@ -350,12 +340,6 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { * Store the current user preferences. */ void store() { - UserPreferences.setKeepPreferredContentViewer(oldKeepCurrentViewerRB.isSelected()); - UserPreferences.setHideKnownFilesInDataSourcesTree(oldDataSourcesHideKnownCB.isSelected()); - UserPreferences.setHideKnownFilesInViewsTree(oldViewsHideKnownCB.isSelected()); - UserPreferences.setHideSlackFilesInDataSourcesTree(oldDataSourcesHideSlackCB.isSelected()); - UserPreferences.setHideSlackFilesInViewsTree(oldViewsHideSlackCB.isSelected()); - UserPreferences.setDisplayTimesInLocalTime(oldUseLocalTimeRB.isSelected()); UserPreferences.setLogFileCount(Integer.parseInt(logFileCount.getText())); if (!agencyLogoPathField.getText().isEmpty()) { File file = new File(agencyLogoPathField.getText()); @@ -535,19 +519,6 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { defaultLogoRB = new javax.swing.JRadioButton(); specifyLogoRB = new javax.swing.JRadioButton(); agencyLogoPathFieldValidationLabel = new javax.swing.JLabel(); - oldViewPanel = new javax.swing.JPanel(); - jLabelSelectFile = new javax.swing.JLabel(); - oldUseBestViewerRB = new javax.swing.JRadioButton(); - oldKeepCurrentViewerRB = new javax.swing.JRadioButton(); - jLabelHideKnownFiles = new javax.swing.JLabel(); - oldDataSourcesHideKnownCB = new javax.swing.JCheckBox(); - oldViewsHideKnownCB = new javax.swing.JCheckBox(); - jLabelHideSlackFiles = new javax.swing.JLabel(); - oldDataSourcesHideSlackCB = new javax.swing.JCheckBox(); - oldViewsHideSlackCB = new javax.swing.JCheckBox(); - jLabelTimeDisplay = new javax.swing.JLabel(); - oldUseLocalTimeRB = new javax.swing.JRadioButton(); - oldUseGMTTimeRB = new javax.swing.JRadioButton(); runtimePanel = new javax.swing.JPanel(); maxMemoryLabel = new javax.swing.JLabel(); maxMemoryUnitsLabel = new javax.swing.JLabel(); @@ -624,7 +595,7 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { .addComponent(agencyLogoPathFieldValidationLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(agencyLogoPreview, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(479, Short.MAX_VALUE)) ); logoPanelLayout.setVerticalGroup( logoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -643,139 +614,6 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { .addGap(0, 0, Short.MAX_VALUE)) ); - oldViewPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldViewPanel.border.title"))); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(jLabelSelectFile, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.jLabelSelectFile.text")); // NOI18N - - fileSelectionButtonGroup.add(oldUseBestViewerRB); - org.openide.awt.Mnemonics.setLocalizedText(oldUseBestViewerRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldUseBestViewerRB.text")); // NOI18N - oldUseBestViewerRB.setToolTipText(org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldUseBestViewerRB.toolTipText")); // NOI18N - oldUseBestViewerRB.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - oldUseBestViewerRBActionPerformed(evt); - } - }); - - fileSelectionButtonGroup.add(oldKeepCurrentViewerRB); - org.openide.awt.Mnemonics.setLocalizedText(oldKeepCurrentViewerRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldKeepCurrentViewerRB.text")); // NOI18N - oldKeepCurrentViewerRB.setToolTipText(org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldKeepCurrentViewerRB.toolTipText")); // NOI18N - oldKeepCurrentViewerRB.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - oldKeepCurrentViewerRBActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(jLabelHideKnownFiles, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.jLabelHideKnownFiles.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(oldDataSourcesHideKnownCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldDataSourcesHideKnownCB.text")); // NOI18N - oldDataSourcesHideKnownCB.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - oldDataSourcesHideKnownCBActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(oldViewsHideKnownCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldViewsHideKnownCB.text")); // NOI18N - oldViewsHideKnownCB.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - oldViewsHideKnownCBActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(jLabelHideSlackFiles, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.jLabelHideSlackFiles.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(oldDataSourcesHideSlackCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldDataSourcesHideSlackCB.text")); // NOI18N - oldDataSourcesHideSlackCB.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - oldDataSourcesHideSlackCBActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(oldViewsHideSlackCB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldViewsHideSlackCB.text")); // NOI18N - oldViewsHideSlackCB.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - oldViewsHideSlackCBActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(jLabelTimeDisplay, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.jLabelTimeDisplay.text")); // NOI18N - - displayTimesButtonGroup.add(oldUseLocalTimeRB); - org.openide.awt.Mnemonics.setLocalizedText(oldUseLocalTimeRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldUseLocalTimeRB.text")); // NOI18N - oldUseLocalTimeRB.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - oldUseLocalTimeRBActionPerformed(evt); - } - }); - - displayTimesButtonGroup.add(oldUseGMTTimeRB); - org.openide.awt.Mnemonics.setLocalizedText(oldUseGMTTimeRB, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.oldUseGMTTimeRB.text")); // NOI18N - oldUseGMTTimeRB.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - oldUseGMTTimeRBActionPerformed(evt); - } - }); - - javax.swing.GroupLayout oldViewPanelLayout = new javax.swing.GroupLayout(oldViewPanel); - oldViewPanel.setLayout(oldViewPanelLayout); - oldViewPanelLayout.setHorizontalGroup( - oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, oldViewPanelLayout.createSequentialGroup() - .addContainerGap() - .addGroup(oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(oldViewPanelLayout.createSequentialGroup() - .addGap(10, 10, 10) - .addGroup(oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(oldViewPanelLayout.createSequentialGroup() - .addGroup(oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(oldUseGMTTimeRB) - .addComponent(oldKeepCurrentViewerRB) - .addComponent(oldUseBestViewerRB) - .addComponent(oldDataSourcesHideKnownCB) - .addComponent(oldViewsHideKnownCB)) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(oldViewPanelLayout.createSequentialGroup() - .addGroup(oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(oldDataSourcesHideSlackCB) - .addComponent(oldViewsHideSlackCB) - .addComponent(oldUseLocalTimeRB)) - .addContainerGap(158, Short.MAX_VALUE)))) - .addGroup(oldViewPanelLayout.createSequentialGroup() - .addGroup(oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabelHideSlackFiles) - .addComponent(jLabelTimeDisplay) - .addComponent(jLabelHideKnownFiles) - .addComponent(jLabelSelectFile)) - .addGap(30, 30, 30)))) - ); - oldViewPanelLayout.setVerticalGroup( - oldViewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, oldViewPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(jLabelSelectFile) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(oldUseBestViewerRB) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(oldKeepCurrentViewerRB) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jLabelHideKnownFiles) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(oldDataSourcesHideKnownCB) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(oldViewsHideKnownCB) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabelHideSlackFiles) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(oldDataSourcesHideSlackCB) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(oldViewsHideSlackCB) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabelTimeDisplay) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(oldUseLocalTimeRB) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(oldUseGMTTimeRB)) - ); - runtimePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.runtimePanel.border.title"))); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(maxMemoryLabel, org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, "AutopsyOptionsPanel.maxMemoryLabel.text")); // NOI18N @@ -831,7 +669,7 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { .addGroup(runtimePanelLayout.createSequentialGroup() .addComponent(maxMemoryUnitsLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(restartNecessaryWarning, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(restartNecessaryWarning, javax.swing.GroupLayout.DEFAULT_SIZE, 783, Short.MAX_VALUE)) .addGroup(runtimePanelLayout.createSequentialGroup() .addComponent(maxMemoryUnitsLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) @@ -884,26 +722,21 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(logoPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 1010, Short.MAX_VALUE) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(oldViewPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(runtimePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(runtimePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(logoPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 1002, Short.MAX_VALUE)) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() - .addGap(0, 0, 0) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(oldViewPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(runtimePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap() + .addComponent(runtimePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(logoPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) + .addContainerGap(185, Short.MAX_VALUE)) ); jScrollPane1.setViewportView(jPanel1); @@ -917,7 +750,7 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 479, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(0, 0, Short.MAX_VALUE)) ); }// //GEN-END:initComponents @@ -940,38 +773,6 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); }//GEN-LAST:event_memFieldKeyReleased - private void oldUseGMTTimeRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldUseGMTTimeRBActionPerformed - firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_oldUseGMTTimeRBActionPerformed - - private void oldUseLocalTimeRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldUseLocalTimeRBActionPerformed - firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_oldUseLocalTimeRBActionPerformed - - private void oldViewsHideSlackCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldViewsHideSlackCBActionPerformed - firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_oldViewsHideSlackCBActionPerformed - - private void oldDataSourcesHideSlackCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldDataSourcesHideSlackCBActionPerformed - firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_oldDataSourcesHideSlackCBActionPerformed - - private void oldViewsHideKnownCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldViewsHideKnownCBActionPerformed - firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_oldViewsHideKnownCBActionPerformed - - private void oldDataSourcesHideKnownCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldDataSourcesHideKnownCBActionPerformed - firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_oldDataSourcesHideKnownCBActionPerformed - - private void oldKeepCurrentViewerRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldKeepCurrentViewerRBActionPerformed - firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_oldKeepCurrentViewerRBActionPerformed - - private void oldUseBestViewerRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_oldUseBestViewerRBActionPerformed - firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_oldUseBestViewerRBActionPerformed - private void specifyLogoRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_specifyLogoRBActionPerformed agencyLogoPathField.setEnabled(true); browseLogosButton.setEnabled(true); @@ -1031,10 +832,6 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { private javax.swing.JRadioButton defaultLogoRB; private javax.swing.ButtonGroup displayTimesButtonGroup; private javax.swing.ButtonGroup fileSelectionButtonGroup; - private javax.swing.JLabel jLabelHideKnownFiles; - private javax.swing.JLabel jLabelHideSlackFiles; - private javax.swing.JLabel jLabelSelectFile; - private javax.swing.JLabel jLabelTimeDisplay; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField logFileCount; @@ -1047,15 +844,6 @@ final class AutopsyOptionsPanel extends javax.swing.JPanel { private javax.swing.JLabel maxMemoryUnitsLabel1; private javax.swing.JTextField memField; private javax.swing.JLabel memFieldValidationLabel; - private javax.swing.JCheckBox oldDataSourcesHideKnownCB; - private javax.swing.JCheckBox oldDataSourcesHideSlackCB; - private javax.swing.JRadioButton oldKeepCurrentViewerRB; - private javax.swing.JRadioButton oldUseBestViewerRB; - private javax.swing.JRadioButton oldUseGMTTimeRB; - private javax.swing.JRadioButton oldUseLocalTimeRB; - private javax.swing.JPanel oldViewPanel; - private javax.swing.JCheckBox oldViewsHideKnownCB; - private javax.swing.JCheckBox oldViewsHideSlackCB; private javax.swing.JLabel restartNecessaryWarning; private javax.swing.JPanel runtimePanel; private javax.swing.JRadioButton specifyLogoRB; diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties index 1a83101f5e..6191af9990 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties @@ -96,9 +96,6 @@ DataResultViewerThumbnail.comboBox.mediumThumbnails=Medium Thumbnails DataResultViewerThumbnail.comboBox.largeThumbnails=Large Thumbnails DataResultViewerThumbnail.switchPage.done.errMsg=Error making thumbnails\: {0} AboutWindowPanel.actVerboseLogging.text=Activate verbose logging -AutopsyOptionsPanel.jLabelSelectFile.text=When selecting a file: -AutopsyOptionsPanel.jLabelHideKnownFiles.text=Hide known files (i.e. those in the NIST NSRL) in the: -AutopsyOptionsPanel.jLabelTimeDisplay.text=When displaying times: OptionsCategory_Name_Multi_User_Settings=Multi-User OptionsCategory_Keywords_Multi_User_Options=Multi-User Settings MultiUserSettingsPanel.lbSolrSettings.text=Solr Settings @@ -145,7 +142,6 @@ MultiUserSettingsPanel.lbTestSolrWarning.text= MultiUserSettingsPanel.lbTestDbWarning.text= MultiUserSettingsPanel.KeywordSearchNull=Cannot find keyword search service MultiUserSettingsPanel.InvalidPortNumber=Invalid port number -AutopsyOptionsPanel.jLabelHideSlackFiles.text=Hide slack files in the: AutopsyOptionsPanel.agencyLogoImageLabel.toolTipText= AutopsyOptionsPanel.agencyLogoPathField.text= SortChooserDialog.label=remove @@ -180,19 +176,6 @@ ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text=Hide other user's tags ViewPreferencesPanel.currentCaseSettingsPanel.border.title=Current Case Settings OptionsCategory_Name_View=View OptionsCategory_Keywords_View=View -ViewPreferencesDialog.okButton.text=OK -ViewPreferencesDialog.cancelButton.text=Cancel -AutopsyOptionsPanel.oldViewPanel.border.title=View -AutopsyOptionsPanel.oldUseBestViewerRB.toolTipText=For example, change from Hex to Media when a JPEG is selected. -AutopsyOptionsPanel.oldUseBestViewerRB.text=Change to the most specific file viewer -AutopsyOptionsPanel.oldKeepCurrentViewerRB.toolTipText=For example, stay in Hex view when a JPEG is selected. -AutopsyOptionsPanel.oldKeepCurrentViewerRB.text=Stay on the same file viewer -AutopsyOptionsPanel.oldDataSourcesHideKnownCB.text=Data Sources area (the directory hierarchy) -AutopsyOptionsPanel.oldViewsHideKnownCB.text=Views area -AutopsyOptionsPanel.oldDataSourcesHideSlackCB.text=Data Sources area (the directory hierarchy) -AutopsyOptionsPanel.oldViewsHideSlackCB.text=Views area -AutopsyOptionsPanel.oldUseLocalTimeRB.text=Use local time zone -AutopsyOptionsPanel.oldUseGMTTimeRB.text=Use GMT ViewPreferencesPanel.useBestViewerRadioButton.toolTipText=For example, change from Hex to Media when a JPEG is selected. ViewPreferencesPanel.useBestViewerRadioButton.text=Change to the most specific file viewer ViewPreferencesPanel.keepCurrentViewerRadioButton.toolTipText=For example, stay in Hex view when a JPEG is selected. diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties index 0eadc6458b..0085a9f773 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties @@ -79,9 +79,6 @@ DataResultViewerThumbnail.comboBox.mediumThumbnails=\u30b5\u30e0\u30cd\u30a4\u30 DataResultViewerThumbnail.comboBox.largeThumbnails=\u30b5\u30e0\u30cd\u30a4\u30eb\uff08\u5927\uff09 DataResultViewerThumbnail.switchPage.done.errMsg=\u30b5\u30e0\u30cd\u30a4\u30eb\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a {0} AboutWindowPanel.actVerboseLogging.text=Verbose\u30ed\u30b0\u3092\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30c8 -AutopsyOptionsPanel.jLabelSelectFile.text=\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3059\u308b\u5834\u5408\uff1a -AutopsyOptionsPanel.jLabelHideKnownFiles.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\uff08NIST NSRL\u5185\u306e\uff09\u3092\u6b21\u306b\u96a0\u3059\uff1a -AutopsyOptionsPanel.jLabelTimeDisplay.text=\u6642\u9593\u3092\u8868\u793a\u3059\u308b\u5834\u5408\uff1a OptionsCategory_Name_Multi_User_Settings=\u8907\u6570\u306e\u30e6\u30fc\u30b6\u30fc OptionsCategory_Keywords_Multi_User_Options=\u8907\u6570\u306e\u30e6\u30fc\u30b6\u30fc\u30aa\u30d7\u30b7\u30e7\u30f3 MultiUserSettingsPanel.lbSolrSettings.text=Solr\u8a2d\u5b9a @@ -126,14 +123,6 @@ DataResultPanel.descriptionLabel.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30d1 ViewPreferencesPanel.selectFileLabel.text=\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3059\u308b\u5834\u5408\uff1a ViewPreferencesPanel.displayTimeLabel.text=\u6642\u9593\u3092\u8868\u793a\u3059\u308b\u5834\u5408\uff1a ViewPreferencesPanel.hideKnownFilesLabel.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\uff08NIST NSRL\u5185\u306e\uff09\u3092\u6b21\u306b\u96a0\u3059\uff1a -AutopsyOptionsPanel.oldUseBestViewerRB.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u306fHEX\u304b\u3089\u30e1\u30c7\u30a3\u30a2\u306b\u5909\u66f4\u3059\u308b\u3002 -AutopsyOptionsPanel.oldUseBestViewerRB.text=\u6700\u3082\u5c02\u9580\u7684\u306a\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u306b\u5909\u66f4 -AutopsyOptionsPanel.oldKeepCurrentViewerRB.text=\u305d\u306e\u307e\u307e\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u3092\u4f7f\u7528 -AutopsyOptionsPanel.oldKeepCurrentViewerRB.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u305d\u306e\u307e\u307eHEX\u30d3\u30e5\u30fc\u3092\u4f7f\u7528\u3002 -AutopsyOptionsPanel.oldDataSourcesHideKnownCB.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30a8\u30ea\u30a2\uff08\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u968e\u5c64\uff09 -AutopsyOptionsPanel.oldViewsHideKnownCB.text=\u30d3\u30e5\u30fc\u30a8\u30ea\u30a2 -AutopsyOptionsPanel.oldUseLocalTimeRB.text=\u30ed\u30fc\u30ab\u30eb\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528 -AutopsyOptionsPanel.oldUseGMTTimeRB.text=GMT\u3092\u4f7f\u7528 ViewPreferencesPanel.useBestViewerRadioButton.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u306fHEX\u304b\u3089\u30e1\u30c7\u30a3\u30a2\u306b\u5909\u66f4\u3059\u308b\u3002 ViewPreferencesPanel.useBestViewerRadioButton.text=\u6700\u3082\u5c02\u9580\u7684\u306a\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u306b\u5909\u66f4 ViewPreferencesPanel.keepCurrentViewerRadioButton.text=\u305d\u306e\u307e\u307e\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u3092\u4f7f\u7528 diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.form b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.form deleted file mode 100755 index d57d767a1e..0000000000 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.form +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.java deleted file mode 100755 index bab69e596b..0000000000 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesDialog.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Autopsy Forensic Browser - * - * Copyright 2018 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.corecomponents; - -import java.awt.Dialog; -import org.openide.util.NbBundle; -import org.openide.windows.WindowManager; - -/** - * Popup dialog for hosting the ViewPreferencesPanel. This is intended to be - * used from the DirectoryTreeTopComponent. - */ -final public class ViewPreferencesDialog extends javax.swing.JDialog { - - /** - * Creates new form ViewPreferencesDialog - */ - @NbBundle.Messages({ - "ViewPreferencesDialog.title.text=View Preferences" - }) - public ViewPreferencesDialog() { - super(WindowManager.getDefault().getMainWindow(), - Bundle.ViewPreferencesDialog_title_text(), - Dialog.ModalityType.APPLICATION_MODAL); - initComponents(); - viewPreferencesPanel.load(); - } - - /** - * Show the dialog. - */ - public void display() { - setLocationRelativeTo(WindowManager.getDefault().getMainWindow()); - setVisible(true); - } - - /** - * Close the dialog. - */ - private void close() { - setVisible(false); - dispose(); - } - - /** - * 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. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - okButton = new javax.swing.JButton(); - cancelButton = new javax.swing.JButton(); - viewPreferencesPanel = new org.sleuthkit.autopsy.corecomponents.ViewPreferencesPanel(); - - setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - - org.openide.awt.Mnemonics.setLocalizedText(okButton, org.openide.util.NbBundle.getMessage(ViewPreferencesDialog.class, "ViewPreferencesDialog.okButton.text")); // NOI18N - okButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - okButtonActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(cancelButton, org.openide.util.NbBundle.getMessage(ViewPreferencesDialog.class, "ViewPreferencesDialog.cancelButton.text")); // NOI18N - cancelButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cancelButtonActionPerformed(evt); - } - }); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cancelButton, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(viewPreferencesPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap() - .addComponent(viewPreferencesPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(okButton) - .addComponent(cancelButton)) - .addContainerGap()) - ); - - pack(); - }// //GEN-END:initComponents - - private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed - viewPreferencesPanel.store(); - close(); - }//GEN-LAST:event_okButtonActionPerformed - - private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed - close(); - }//GEN-LAST:event_cancelButtonActionPerformed - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton cancelButton; - private javax.swing.JButton okButton; - private org.sleuthkit.autopsy.corecomponents.ViewPreferencesPanel viewPreferencesPanel; - // End of variables declaration//GEN-END:variables -} diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java index 51dc4d4f5d..4b944744ac 100755 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java @@ -18,82 +18,62 @@ */ package org.sleuthkit.autopsy.corecomponents; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.util.Objects; -import java.util.Properties; -import java.util.logging.Level; import javax.swing.JPanel; import org.netbeans.spi.options.OptionsPanelController; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.CasePreferences; -import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; -import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent; /** * Panel for configuring view preferences. */ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { - - private static final Logger logger = Logger.getLogger(ViewPreferencesPanel.class.getName()); - - private boolean immediateUpdates; - + + private final boolean immediateUpdates; + /** * Creates new form ViewPreferencesPanel - * - * //DLG: Might not need this constructor anymore. - */ - public ViewPreferencesPanel() { - initComponents(); - } - - /** - * Creates new form ViewPreferencesPanel - * - * //DLG: + * + * @param immediateUpdates If true, value changes will be persisted at the + * moment they occur. */ public ViewPreferencesPanel(boolean immediateUpdates) { initComponents(); this.immediateUpdates = immediateUpdates; } - + @Override public void load() { // Global Settings boolean keepPreferredViewer = UserPreferences.keepPreferredContentViewer(); keepCurrentViewerRadioButton.setSelected(keepPreferredViewer); useBestViewerRadioButton.setSelected(!keepPreferredViewer); - + boolean useLocalTime = UserPreferences.displayTimesInLocalTime(); useLocalTimeRadioButton.setSelected(useLocalTime); useGMTTimeRadioButton.setSelected(!useLocalTime); - + dataSourcesHideKnownCheckbox.setSelected(UserPreferences.hideKnownFilesInDataSourcesTree()); viewsHideKnownCheckbox.setSelected(UserPreferences.hideKnownFilesInViewsTree()); - + dataSourcesHideSlackCheckbox.setSelected(UserPreferences.hideSlackFilesInDataSourcesTree()); viewsHideSlackCheckbox.setSelected(UserPreferences.hideSlackFilesInViewsTree()); - + // Current Case Settings boolean caseIsOpen = Case.isCaseOpen(); currentCaseSettingsPanel.setEnabled(caseIsOpen); hideOtherUsersTagsCheckbox.setEnabled(caseIsOpen); groupByDataSourceCheckbox.setEnabled(caseIsOpen); - - hideOtherUsersTagsCheckbox.setSelected(UserPreferences.showOnlyCurrentUserTags() == false); + + hideOtherUsersTagsCheckbox.setSelected(UserPreferences.showOnlyCurrentUserTags()); groupByDataSourceCheckbox.setSelected(Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)); - + // Current Session Settings hideRejectedResultsCheckbox.setSelected(DirectoryTreeTopComponent.getDefault().getShowRejectedResults() == false); } - + @Override public void store() { UserPreferences.setKeepPreferredContentViewer(keepCurrentViewerRadioButton.isSelected()); @@ -102,23 +82,24 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { UserPreferences.setHideKnownFilesInViewsTree(viewsHideKnownCheckbox.isSelected()); UserPreferences.setHideSlackFilesInDataSourcesTree(dataSourcesHideSlackCheckbox.isSelected()); UserPreferences.setHideSlackFilesInViewsTree(viewsHideSlackCheckbox.isSelected()); - UserPreferences.setShowOnlyCurrentUserTags(hideOtherUsersTagsCheckbox.isSelected() == false); - + UserPreferences.setShowOnlyCurrentUserTags(hideOtherUsersTagsCheckbox.isSelected()); + storeGroupItemsInTreeByDataSource(); - + DirectoryTreeTopComponent.getDefault().setShowRejectedResults(hideRejectedResultsCheckbox.isSelected() == false); } - + + /** + * Store the 'groupByDataSourceCheckbox' value. + * + * Note: The value will not be stored if the value hasn't previously been + * stored and the checkbox isn't selected. This is so GroupDataSourcesDialog + * can prompt the user for this in the event the value hasn't been + * initialized. + */ private void storeGroupItemsInTreeByDataSource() { - if (Case.isCaseOpen()) { - /* - * Only write the value if it has already been previously stored, or - * if the checkbox is selected. This allows GroupDataSourcesDialog - * to work. - */ - if (CasePreferences.getGroupItemsInTreeByDataSource() != null || groupByDataSourceCheckbox.isSelected()) { - CasePreferences.setGroupItemsInTreeByDataSource(groupByDataSourceCheckbox.isSelected()); - } + if (Case.isCaseOpen() && (CasePreferences.getGroupItemsInTreeByDataSource() != null || groupByDataSourceCheckbox.isSelected())) { + CasePreferences.setGroupItemsInTreeByDataSource(groupByDataSourceCheckbox.isSelected()); } } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java index af4dd6c35e..d8fbd410ff 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java @@ -167,7 +167,7 @@ final public class Accounts implements AutopsyVisitableItem { * @return An Action that will toggle whether rejected artifacts are shown * in the tree rooted by this Accounts instance. */ - //DLG: Remove this! + @Deprecated public Action newToggleShowRejectedAction() { return new ToggleShowRejected(); } @@ -1690,7 +1690,7 @@ final public class Accounts implements AutopsyVisitableItem { } - //DLG: Remove this! + @Deprecated private final class ToggleShowRejected extends AbstractAction { @NbBundle.Messages("ToggleShowRejected.name=Show Rejected Results") diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/Bundle.properties b/Core/src/org/sleuthkit/autopsy/directorytree/Bundle.properties index 10bd0622cb..26c970b2b3 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/directorytree/Bundle.properties @@ -59,7 +59,6 @@ DirectoryTreeFilterNode.action.collapseAll.text=Collapse All DirectoryTreeFilterNode.action.openFileSrcByAttr.text=Open File Search by Attributes DirectoryTreeFilterNode.action.runIngestMods.text=Run Ingest Modules DirectoryTreeTopComponent.action.viewArtContent.text=View Artifact Content -DirectoryTreeTopComponent.showRejectedCheckBox.text=Show Rejected ExplorerNodeActionVisitor.action.imgDetails.title=Image Details ExplorerNodeActionVisitor.action.extUnallocToSingleFiles=Extract Unallocated Space to Single Files ExplorerNodeActionVisitor.action.fileSystemDetails.title=File System Details @@ -119,11 +118,9 @@ AddExternalViewerRulePanel.browseButton.text=Browse AddExternalViewerRulePanel.exePathTextField.text= AddExternalViewerRulePanel.exePathLabel.text=Path of the program to use for files with this type or extension AddExternalViewerRulePanel.extRadioButton.text=Extension -DirectoryTreeTopComponent.groupByDatasourceCheckBox.text=Group Data Source GroupDataSourcesDialog.dataSourceCountLabel.text=jLabel1 GroupDataSourcesDialog.queryLabel.text=Would you like to group by data source for faster loading? GroupDataSourcesDialog.yesButton.text=Yes GroupDataSourcesDialog.noButton.text=No GroupDataSourcesDialog.title=Group by Data Source? -DirectoryTreeTopComponent.showOnlyCurrentUserTagsCheckbox.text=Hide Other Tags DirectoryTreeTopComponent.openViewPreferencesButton.text= diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form index c36a2ca273..ac5b8e9c5a 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.form @@ -26,23 +26,11 @@ - - - - - - - - - - - - - - - - - + + + + + @@ -56,14 +44,8 @@ - - - - - - - + @@ -168,35 +150,5 @@
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index 22320f9d1f..73d7017149 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -65,7 +65,6 @@ import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; -import org.sleuthkit.autopsy.corecomponents.ViewPreferencesDialog; import org.sleuthkit.autopsy.core.RuntimeProperties; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.corecomponentinterfaces.CoreComponentControl; @@ -145,9 +144,6 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat this.forwardList = new LinkedList<>(); backButton.setEnabled(false); forwardButton.setEnabled(false); - - groupByDatasourceCheckBox.setSelected(Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)); - showOnlyCurrentUserTagsCheckbox.setSelected(UserPreferences.showOnlyCurrentUserTags()); viewPreferencesPopupMenu.add(viewPreferencesPanel); viewPreferencesPopupMenu.setSize(viewPreferencesPanel.getPreferredSize().width + 6, viewPreferencesPanel.getPreferredSize().height + 6); @@ -179,7 +175,6 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat switch (evt.getKey()) { case UserPreferences.HIDE_KNOWN_FILES_IN_DATA_SRCS_TREE: case UserPreferences.HIDE_SLACK_FILES_IN_DATA_SRCS_TREE: - //DLG: case UserPreferences.GROUP_ITEMS_IN_TREE_BY_DATASOURCE: refreshContentTreeSafe(); break; case UserPreferences.SHOW_ONLY_CURRENT_USER_TAGS: @@ -235,9 +230,6 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat backButton = new javax.swing.JButton(); forwardButton = new javax.swing.JButton(); openViewPreferencesButton = new javax.swing.JButton(); - showRejectedCheckBox = new javax.swing.JCheckBox(); - groupByDatasourceCheckBox = new javax.swing.JCheckBox(); - showOnlyCurrentUserTagsCheckbox = new javax.swing.JCheckBox(); treeView.setBorder(null); @@ -283,46 +275,17 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat } }); - org.openide.awt.Mnemonics.setLocalizedText(showRejectedCheckBox, org.openide.util.NbBundle.getMessage(DirectoryTreeTopComponent.class, "DirectoryTreeTopComponent.showRejectedCheckBox.text")); // NOI18N - showRejectedCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - showRejectedCheckBoxActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(groupByDatasourceCheckBox, org.openide.util.NbBundle.getMessage(DirectoryTreeTopComponent.class, "DirectoryTreeTopComponent.groupByDatasourceCheckBox.text")); // NOI18N - groupByDatasourceCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - groupByDatasourceCheckBoxActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(showOnlyCurrentUserTagsCheckbox, org.openide.util.NbBundle.getMessage(DirectoryTreeTopComponent.class, "DirectoryTreeTopComponent.showOnlyCurrentUserTagsCheckbox.text")); // NOI18N - showOnlyCurrentUserTagsCheckbox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - showOnlyCurrentUserTagsCheckboxActionPerformed(evt); - } - }); - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(treeView) .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(backButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(forwardButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(openViewPreferencesButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(showOnlyCurrentUserTagsCheckbox) - .addComponent(showRejectedCheckBox) - .addComponent(groupByDatasourceCheckBox)) - .addGap(0, 247, Short.MAX_VALUE))) + .addComponent(backButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(forwardButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 264, Short.MAX_VALUE) + .addComponent(openViewPreferencesButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); layout.setVerticalGroup( @@ -333,14 +296,8 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat .addComponent(backButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(forwardButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(openViewPreferencesButton, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(showOnlyCurrentUserTagsCheckbox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(showRejectedCheckBox) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(groupByDatasourceCheckBox) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(treeView, javax.swing.GroupLayout.DEFAULT_SIZE, 828, Short.MAX_VALUE)) + .addComponent(treeView, javax.swing.GroupLayout.DEFAULT_SIZE, 900, Short.MAX_VALUE)) ); }// //GEN-END:initComponents @@ -393,29 +350,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat this.setCursor(null); }//GEN-LAST:event_forwardButtonActionPerformed - private void groupByDatasourceCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_groupByDatasourceCheckBoxActionPerformed - UserPreferences.setGroupItemsInTreeByDatasource(this.groupByDatasourceCheckBox.isSelected()); //DLG: Remove this checkbox - }//GEN-LAST:event_groupByDatasourceCheckBoxActionPerformed - - private void showOnlyCurrentUserTagsCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showOnlyCurrentUserTagsCheckboxActionPerformed - UserPreferences.setShowOnlyCurrentUserTags(this.showOnlyCurrentUserTagsCheckbox.isSelected()); //DLG: Remove this checkbox - }//GEN-LAST:event_showOnlyCurrentUserTagsCheckboxActionPerformed - - private void showRejectedCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showRejectedCheckBoxActionPerformed - //DLG: Remove this checkbox - }//GEN-LAST:event_showRejectedCheckBoxActionPerformed - private void openViewPreferencesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openViewPreferencesButtonActionPerformed - //DLG: ViewPreferencesDialog dialog = new ViewPreferencesDialog(); - //DLG: dialog.display(); - - /*ViewPreferencesPanel panel = new ViewPreferencesPanel(); - panel.load(); - - JPopupMenu menu = new JPopupMenu(); - menu.add(panel); - menu.show(openViewPreferencesButton, panel.getWidth(), panel.getHeight());*/ - viewPreferencesPanel.load(); viewPreferencesPopupMenu.show(openViewPreferencesButton, 0, openViewPreferencesButton.getHeight() - 1); }//GEN-LAST:event_openViewPreferencesButtonActionPerformed @@ -423,10 +358,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton backButton; private javax.swing.JButton forwardButton; - private javax.swing.JCheckBox groupByDatasourceCheckBox; private javax.swing.JButton openViewPreferencesButton; - private javax.swing.JCheckBox showOnlyCurrentUserTagsCheckbox; - private javax.swing.JCheckBox showRejectedCheckBox; private javax.swing.JScrollPane treeView; private javax.swing.JPopupMenu viewPreferencesPopupMenu; // End of variables declaration//GEN-END:variables @@ -493,7 +425,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat dialog.display(); if (dialog.groupByDataSourceSelected()) { CasePreferences.setGroupItemsInTreeByDataSource(true); - refreshContentTreeSafe(); //DLG: Consider an event. + refreshContentTreeSafe(); } else { CasePreferences.setGroupItemsInTreeByDataSource(false); } @@ -599,10 +531,6 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat Arrays.stream(resultsChildren.getNodes()).forEach(tree::expandNode); accounts = resultsChildren.findChild(Accounts.NAME).getLookup().lookup(Accounts.class); - if (!Objects.isNull(accounts)) { - showRejectedCheckBox.setAction(accounts.newToggleShowRejectedAction()); - showRejectedCheckBox.setSelected(false); - } } Node views = rootChildren.findChild(ViewsNode.NAME); From 9c5e612ffe4493736e4523da5629de8e66ad5f69 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Thu, 13 Sep 2018 02:28:19 -0400 Subject: [PATCH 06/11] Fixed bug with button; bug with tags refresh. --- .../autopsy/corecomponents/ViewPreferencesPanel.java | 2 +- .../directorytree/DirectoryTreeTopComponent.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java index 4b944744ac..a4ab51bb1f 100755 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java @@ -441,7 +441,7 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { private void hideOtherUsersTagsCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_hideOtherUsersTagsCheckboxActionPerformed if (immediateUpdates) { - UserPreferences.setShowOnlyCurrentUserTags(hideOtherUsersTagsCheckbox.isSelected() == false); + UserPreferences.setShowOnlyCurrentUserTags(hideOtherUsersTagsCheckbox.isSelected()); } else { firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); } diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index 73d7017149..0123a8af8d 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -897,6 +897,17 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat * Refresh only the tags subtree(s) of the tree view. */ private void refreshTagsTree() { + // if no open case or has no data then there is no tree to rebuild + Case currentCase; + try { + currentCase = Case.getCurrentCaseThrows(); + } catch (NoCurrentCaseException ex) { + return; + } + if (null == currentCase || currentCase.hasData() == false) { + return; + } + SwingUtilities.invokeLater(() -> { // if no open case or has no data then there is no tree to rebuild if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { From 7e71970049c79b77ce0d151afdf8a5f220df9dcf Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Thu, 13 Sep 2018 03:07:56 -0400 Subject: [PATCH 07/11] Added documentation; removed unnecessary code. --- .../autopsy/casemodule/CasePreferences.java | 18 +++++++++++++++++- .../sleuthkit/autopsy/datamodel/FileSize.java | 2 +- .../autopsy/datamodel/accounts/Accounts.java | 2 +- .../DirectoryTreeTopComponent.java | 11 +++++++++++ .../directorytree/ViewContextAction.java | 13 ++----------- 5 files changed, 32 insertions(+), 14 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java index 8be8a44882..4b53331e8f 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java @@ -37,12 +37,14 @@ import org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent; public final class CasePreferences { private static final String SETTINGS_FILE = "CasePreferences.properties"; //NON-NLS - public static final String GROUP_ITEMS_IN_TREE_BY_DATASOURCE = "GroupItemsInTreeByDataSource"; //NON-NLS private static final Logger logger = Logger.getLogger(CasePreferences.class.getName()); private static Boolean groupItemsInTreeByDataSource = null; + /** + * Prevent instantiation. + */ private CasePreferences() { } @@ -62,10 +64,21 @@ public final class CasePreferences { } } + /** + * Get the 'groupItemsInTreeByDataSource' value. This can be true, false, or + * null. + * + * @return The value. + */ public static Boolean getGroupItemsInTreeByDataSource() { return groupItemsInTreeByDataSource; } + /** + * Set the 'groupItemsInTreeByDataSource' value to true or false. + * + * @param value The value to use for the value change. + */ public static void setGroupItemsInTreeByDataSource(boolean value) { groupItemsInTreeByDataSource = value; DirectoryTreeTopComponent.getDefault().refreshContentTreeSafe(); @@ -92,6 +105,9 @@ public final class CasePreferences { } } + /** + * Reset all values to their default states. + */ private static void clear() { groupItemsInTreeByDataSource = null; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/FileSize.java b/Core/src/org/sleuthkit/autopsy/datamodel/FileSize.java index 8ce1aa75c8..53628326a2 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/FileSize.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/FileSize.java @@ -447,7 +447,7 @@ public class FileSize implements AutopsyVisitableItem { query += " AND (type != " + TskData.TSK_DB_FILES_TYPE_ENUM.SLACK.getFileType() + ")"; //NON-NLS } - // filter by datasource if indicated in user preferences + // filter by datasource if indicated in case preferences if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { query += " AND data_source_obj_id = " + filteringDSObjId; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java index d8fbd410ff..d8e40d8a3e 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Accounts.java @@ -150,7 +150,7 @@ final public class Accounts implements AutopsyVisitableItem { * Returns the clause to filter artifacts by data source. * * @return A clause that will or will not filter artifacts by datasource - * based on the UserPreferences groupItemsInTreeByDatasource setting + * based on the CasePreferences groupItemsInTreeByDataSource setting */ private String getFilterByDataSourceClause() { if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index 0123a8af8d..90d8f7540c 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -206,10 +206,21 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat return this.dataResult; } + /** + * Show rejected results? + * + * @return True if showing rejected results; otherwise false. + */ public boolean getShowRejectedResults() { return showRejectedResults; } + /** + * Setter to determine if rejected results should be shown or not. + * + * @param showRejectedResults True if showing rejected results; otherwise + * false. + */ public void setShowRejectedResults(boolean showRejectedResults) { this.showRejectedResults = showRejectedResults; if (accounts != null) { diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java index 96fccea7ea..cfdd2039ce 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java @@ -139,15 +139,6 @@ public class ViewContextAction extends AbstractAction { */ DirectoryTreeTopComponent treeViewTopComponent = DirectoryTreeTopComponent.findInstance(); ExplorerManager treeViewExplorerMgr = treeViewTopComponent.getExplorerManager(); - Case currentCase; - try { - currentCase = Case.getCurrentCaseThrows(); - } catch (NoCurrentCaseException ex) { - MessageNotifyUtil.Message.error(Bundle.ViewContextAction_errorMessage_cannotFindNode()); - logger.log(Level.SEVERE, "Failed to locate data source node in tree.", ex); //NON-NLS - return; - } - Node parentTreeViewNode; if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { // 'Group by Data Source' view @@ -155,7 +146,7 @@ public class ViewContextAction extends AbstractAction { String dsname; try { // get the objid/name of the datasource of the selected content. - skCase = currentCase.getSleuthkitCase(); + skCase = Case.getCurrentCaseThrows().getSleuthkitCase(); long contentDSObjid = content.getDataSource().getId(); DataSource datasource = skCase.getDataSource(contentDSObjid); dsname = datasource.getName(); @@ -171,7 +162,7 @@ public class ViewContextAction extends AbstractAction { logger.log(Level.SEVERE, "Failed to locate data source node in tree."); //NON-NLS return; } - } catch (TskDataException | TskCoreException ex) { + } catch (NoCurrentCaseException | TskDataException | TskCoreException ex) { MessageNotifyUtil.Message.error(Bundle.ViewContextAction_errorMessage_cannotFindNode()); logger.log(Level.SEVERE, "Failed to locate data source node in tree.", ex); //NON-NLS return; From d9b45b0f01632ee8b39aa4f8c06bdf8fd5a65714 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Thu, 13 Sep 2018 03:45:05 -0400 Subject: [PATCH 08/11] Improved tag data check. --- .../DirectoryTreeTopComponent.java | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index 90d8f7540c..c11844fc2e 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -908,19 +908,12 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat * Refresh only the tags subtree(s) of the tree view. */ private void refreshTagsTree() { - // if no open case or has no data then there is no tree to rebuild - Case currentCase; - try { - currentCase = Case.getCurrentCaseThrows(); - } catch (NoCurrentCaseException ex) { - return; - } - if (null == currentCase || currentCase.hasData() == false) { - return; - } - SwingUtilities.invokeLater(() -> { - // if no open case or has no data then there is no tree to rebuild + // Ensure the component children have been created first. + if (autopsyTreeChildren == null) { + return; + } + if (Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true)) { for (Node dataSource : autopsyTreeChildren.getNodes()) { Node tagsNode = dataSource.getChildren().findChild(Tags.getTagsDisplayName()); From 773203f5c032ed29de1ed067b480e15e26ca08d6 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Thu, 13 Sep 2018 10:19:36 -0400 Subject: [PATCH 09/11] Fixed a minor bug with the properties file. --- .../autopsy/casemodule/CasePreferences.java | 20 ++++++++++++++----- .../DirectoryTreeTopComponent.java | 7 +++---- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java index 4b53331e8f..1c853c7951 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePreferences.java @@ -37,6 +37,9 @@ import org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent; public final class CasePreferences { private static final String SETTINGS_FILE = "CasePreferences.properties"; //NON-NLS + private static final String KEY_GROUP_BY_DATA_SOURCE = "groupByDataSource"; //NON-NLS + private static final String VALUE_TRUE = "true"; //NON-NLS + private static final String VALUE_FALSE = "false"; //NON-NLS private static final Logger logger = Logger.getLogger(CasePreferences.class.getName()); @@ -94,10 +97,17 @@ public final class CasePreferences { try (InputStream inputStream = Files.newInputStream(settingsFile)) { Properties props = new Properties(); props.load(inputStream); - if (props.getProperty("groupByDataSource", "false").equals("true")) { - groupItemsInTreeByDataSource = true; - } else { - groupItemsInTreeByDataSource = false; + String groupByDataSourceValue = props.getProperty(KEY_GROUP_BY_DATA_SOURCE); + switch (groupByDataSourceValue) { + case VALUE_TRUE: + groupItemsInTreeByDataSource = true; + break; + case VALUE_FALSE: + groupItemsInTreeByDataSource = false; + break; + default: + groupItemsInTreeByDataSource = null; + break; } } catch (IOException ex) { logger.log(Level.SEVERE, "Error reading settings file", ex); @@ -119,7 +129,7 @@ public final class CasePreferences { Path settingsFile = Paths.get(currentCase.getConfigDirectory(), SETTINGS_FILE); //NON-NLS Properties props = new Properties(); if (groupItemsInTreeByDataSource != null) { - props.setProperty("groupByDataSource", (groupItemsInTreeByDataSource ? "true" : "false")); + props.setProperty(KEY_GROUP_BY_DATA_SOURCE, (groupItemsInTreeByDataSource ? VALUE_TRUE : VALUE_FALSE)); } try (OutputStream fos = Files.newOutputStream(settingsFile)) { diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index c11844fc2e..9c577cba59 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -427,10 +427,9 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat * Ask the user if they want to group by data source when opening a large * case. * - * @param currentCase - * @param dataSourceCount + * @param dataSourceCount The number of data sources in the case. */ - private void promptForDataSourceGrouping(Case currentCase, int dataSourceCount) { + private void promptForDataSourceGrouping(int dataSourceCount) { if (CasePreferences.getGroupItemsInTreeByDataSource() == null) { GroupDataSourcesDialog dialog = new GroupDataSourcesDialog(dataSourceCount); dialog.display(); @@ -486,7 +485,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat int dataSourceCount = currentCase.getDataSources().size(); if (!Objects.equals(CasePreferences.getGroupItemsInTreeByDataSource(), true) && dataSourceCount > threshold) { - promptForDataSourceGrouping(currentCase, dataSourceCount); + promptForDataSourceGrouping(dataSourceCount); } } catch (TskCoreException ex) { LOGGER.log(Level.SEVERE, "Error loading data sources", ex); From 3d71afde77d70f84fa15e5b19715adec84867dc4 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Thu, 13 Sep 2018 22:17:29 -0400 Subject: [PATCH 10/11] Fixed positioning of controls on panel. --- .../corecomponents/ViewPreferencesPanel.form | 48 +++++++++---------- .../corecomponents/ViewPreferencesPanel.java | 46 +++++++++--------- 2 files changed, 45 insertions(+), 49 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form index e2313f0ce5..0665023009 100755 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form @@ -16,7 +16,7 @@ - + @@ -54,9 +54,9 @@ - - - + + + @@ -80,7 +80,7 @@ - + @@ -96,6 +96,7 @@ + @@ -117,14 +118,14 @@ - + - - + + @@ -153,6 +154,9 @@ + + + @@ -272,6 +276,16 @@ + + + + + + + + + + @@ -290,10 +304,7 @@ - - - - + @@ -302,25 +313,12 @@ - - - - - - - - - - - - - diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java index a4ab51bb1f..2864d62474 100755 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java @@ -64,7 +64,6 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { // Current Case Settings boolean caseIsOpen = Case.isCaseOpen(); currentCaseSettingsPanel.setEnabled(caseIsOpen); - hideOtherUsersTagsCheckbox.setEnabled(caseIsOpen); groupByDataSourceCheckbox.setEnabled(caseIsOpen); hideOtherUsersTagsCheckbox.setSelected(UserPreferences.showOnlyCurrentUserTags()); @@ -127,8 +126,8 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { displayTimeLabel = new javax.swing.JLabel(); useLocalTimeRadioButton = new javax.swing.JRadioButton(); useGMTTimeRadioButton = new javax.swing.JRadioButton(); - currentCaseSettingsPanel = new javax.swing.JPanel(); hideOtherUsersTagsCheckbox = new javax.swing.JCheckBox(); + currentCaseSettingsPanel = new javax.swing.JPanel(); groupByDataSourceCheckbox = new javax.swing.JCheckBox(); currentSessionSettingsPanel = new javax.swing.JPanel(); hideRejectedResultsCheckbox = new javax.swing.JCheckBox(); @@ -203,6 +202,13 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { } }); + org.openide.awt.Mnemonics.setLocalizedText(hideOtherUsersTagsCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text")); // NOI18N + hideOtherUsersTagsCheckbox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + hideOtherUsersTagsCheckboxActionPerformed(evt); + } + }); + javax.swing.GroupLayout globalSettingsPanelLayout = new javax.swing.GroupLayout(globalSettingsPanel); globalSettingsPanel.setLayout(globalSettingsPanelLayout); globalSettingsPanelLayout.setHorizontalGroup( @@ -221,6 +227,7 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { .addComponent(selectFileLabel)) .addGap(18, 18, 18) .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(hideOtherUsersTagsCheckbox) .addComponent(hideKnownFilesLabel) .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -235,12 +242,12 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(dataSourcesHideKnownCheckbox) .addComponent(viewsHideKnownCheckbox))))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(29, Short.MAX_VALUE)) ); globalSettingsPanelLayout.setVerticalGroup( globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, globalSettingsPanelLayout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(globalSettingsPanelLayout.createSequentialGroup() + .addContainerGap() .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(globalSettingsPanelLayout.createSequentialGroup() .addComponent(hideKnownFilesLabel) @@ -265,18 +272,14 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(useLocalTimeRadioButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(useGMTTimeRadioButton)))) + .addComponent(useGMTTimeRadioButton))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(hideOtherUsersTagsCheckbox) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); currentCaseSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.currentCaseSettingsPanel.border.title"))); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(hideOtherUsersTagsCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text")); // NOI18N - hideOtherUsersTagsCheckbox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - hideOtherUsersTagsCheckboxActionPerformed(evt); - } - }); - org.openide.awt.Mnemonics.setLocalizedText(groupByDataSourceCheckbox, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.groupByDataSourceCheckbox.text")); // NOI18N groupByDataSourceCheckbox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -290,19 +293,14 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { currentCaseSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(currentCaseSettingsPanelLayout.createSequentialGroup() .addContainerGap() - .addGroup(currentCaseSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(hideOtherUsersTagsCheckbox) - .addComponent(groupByDataSourceCheckbox)) + .addComponent(groupByDataSourceCheckbox) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); currentCaseSettingsPanelLayout.setVerticalGroup( currentCaseSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(currentCaseSettingsPanelLayout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(hideOtherUsersTagsCheckbox) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(groupByDataSourceCheckbox) - .addGap(20, 20, 20)) + .addComponent(groupByDataSourceCheckbox)) ); currentSessionSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.currentSessionSettingsPanel.border.title"))); // NOI18N @@ -345,9 +343,9 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { viewPreferencesPanelLayout.setVerticalGroup( viewPreferencesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(viewPreferencesPanelLayout.createSequentialGroup() - .addComponent(globalSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(11, 11, 11) - .addComponent(currentCaseSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(globalSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 197, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(currentCaseSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(currentSessionSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) @@ -359,7 +357,7 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(viewPreferencesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 562, Short.MAX_VALUE) + .addComponent(viewPreferencesScrollPane) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) From e3395af37979c216ec9f9c184f386ecb80ef5a39 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Mon, 17 Sep 2018 17:07:08 -0400 Subject: [PATCH 11/11] Revised UI. --- .../autopsy/corecomponents/Bundle.properties | 3 +- .../corecomponents/ViewPreferencesPanel.form | 76 +++++++++++-------- .../corecomponents/ViewPreferencesPanel.java | 58 ++++++++------ .../ImageGalleryOptionsPanelController.java | 2 +- 4 files changed, 83 insertions(+), 56 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties index 6191af9990..7b82cf0ed1 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties @@ -172,7 +172,7 @@ ViewPreferencesPanel.displayTimeLabel.text=When displaying times: ViewPreferencesPanel.hideSlackFilesLabel.text=Hide slack files in the: ViewPreferencesPanel.groupByDataSourceCheckbox.text=Group by data source ViewPreferencesPanel.hideKnownFilesLabel.text=Hide known files (i.e. those in the NIST NSRL) in the: -ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text=Hide other user's tags +ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text=Tags area in the tree ViewPreferencesPanel.currentCaseSettingsPanel.border.title=Current Case Settings OptionsCategory_Name_View=View OptionsCategory_Keywords_View=View @@ -188,3 +188,4 @@ ViewPreferencesPanel.dataSourcesHideSlackCheckbox.text=Data Sources area (the di ViewPreferencesPanel.viewsHideSlackCheckbox.text=Views area ViewPreferencesPanel.currentSessionSettingsPanel.border.title=Current Session Settings ViewPreferencesPanel.hideRejectedResultsCheckbox.text=Hide rejected results +ViewPreferencesPanel.hideOtherUsersTagsLabel.text=Hide other user's tags in the: diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form index 0665023009..e0706af676 100755 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.form @@ -54,7 +54,7 @@ - + @@ -82,50 +82,58 @@ - - - - - - - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + - + - + @@ -155,8 +163,9 @@ + + - @@ -286,6 +295,13 @@ + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java index 2864d62474..d50ca7a6c1 100755 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ViewPreferencesPanel.java @@ -127,6 +127,7 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { useLocalTimeRadioButton = new javax.swing.JRadioButton(); useGMTTimeRadioButton = new javax.swing.JRadioButton(); hideOtherUsersTagsCheckbox = new javax.swing.JCheckBox(); + hideOtherUsersTagsLabel = new javax.swing.JLabel(); currentCaseSettingsPanel = new javax.swing.JPanel(); groupByDataSourceCheckbox = new javax.swing.JCheckBox(); currentSessionSettingsPanel = new javax.swing.JPanel(); @@ -209,6 +210,8 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { } }); + org.openide.awt.Mnemonics.setLocalizedText(hideOtherUsersTagsLabel, org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.hideOtherUsersTagsLabel.text")); // NOI18N + javax.swing.GroupLayout globalSettingsPanelLayout = new javax.swing.GroupLayout(globalSettingsPanel); globalSettingsPanel.setLayout(globalSettingsPanelLayout); globalSettingsPanelLayout.setHorizontalGroup( @@ -216,38 +219,43 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { .addGroup(globalSettingsPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(displayTimeLabel) .addGroup(globalSettingsPanelLayout.createSequentialGroup() .addGap(10, 10, 10) + .addComponent(hideOtherUsersTagsCheckbox)) + .addGroup(globalSettingsPanelLayout.createSequentialGroup() .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(keepCurrentViewerRadioButton) - .addComponent(useBestViewerRadioButton) - .addComponent(useGMTTimeRadioButton) - .addComponent(useLocalTimeRadioButton))) - .addComponent(selectFileLabel)) - .addGap(18, 18, 18) - .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(hideOtherUsersTagsCheckbox) - .addComponent(hideKnownFilesLabel) - .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(hideKnownFilesLabel) + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(globalSettingsPanelLayout.createSequentialGroup() + .addGap(10, 10, 10) + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(dataSourcesHideSlackCheckbox) + .addComponent(viewsHideSlackCheckbox))) + .addComponent(hideSlackFilesLabel)) + .addGroup(globalSettingsPanelLayout.createSequentialGroup() + .addGap(10, 10, 10) + .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(dataSourcesHideKnownCheckbox) + .addComponent(viewsHideKnownCheckbox))))) + .addGap(18, 18, 18) .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(displayTimeLabel) .addGroup(globalSettingsPanelLayout.createSequentialGroup() .addGap(10, 10, 10) .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(dataSourcesHideSlackCheckbox) - .addComponent(viewsHideSlackCheckbox))) - .addComponent(hideSlackFilesLabel)) - .addGroup(globalSettingsPanelLayout.createSequentialGroup() - .addGap(10, 10, 10) - .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(dataSourcesHideKnownCheckbox) - .addComponent(viewsHideKnownCheckbox))))) - .addContainerGap(29, Short.MAX_VALUE)) + .addComponent(keepCurrentViewerRadioButton) + .addComponent(useBestViewerRadioButton) + .addComponent(useGMTTimeRadioButton) + .addComponent(useLocalTimeRadioButton))) + .addComponent(selectFileLabel))) + .addComponent(hideOtherUsersTagsLabel)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); globalSettingsPanelLayout.setVerticalGroup( globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(globalSettingsPanelLayout.createSequentialGroup() - .addContainerGap() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(globalSettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(globalSettingsPanelLayout.createSequentialGroup() .addComponent(hideKnownFilesLabel) @@ -274,8 +282,9 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(useGMTTimeRadioButton))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(hideOtherUsersTagsCheckbox) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(hideOtherUsersTagsLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(hideOtherUsersTagsCheckbox)) ); currentCaseSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ViewPreferencesPanel.class, "ViewPreferencesPanel.currentCaseSettingsPanel.border.title"))); // NOI18N @@ -343,7 +352,7 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { viewPreferencesPanelLayout.setVerticalGroup( viewPreferencesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(viewPreferencesPanelLayout.createSequentialGroup() - .addComponent(globalSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 197, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(globalSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(currentCaseSettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) @@ -472,6 +481,7 @@ public class ViewPreferencesPanel extends JPanel implements OptionsPanel { private javax.swing.JCheckBox groupByDataSourceCheckbox; private javax.swing.JLabel hideKnownFilesLabel; private javax.swing.JCheckBox hideOtherUsersTagsCheckbox; + private javax.swing.JLabel hideOtherUsersTagsLabel; private javax.swing.JCheckBox hideRejectedResultsCheckbox; private javax.swing.JLabel hideSlackFilesLabel; private javax.swing.JRadioButton keepCurrentViewerRadioButton; diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java index af91181287..11a557a7d4 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryOptionsPanelController.java @@ -34,7 +34,7 @@ import org.openide.util.Lookup; iconBase = "org/sleuthkit/autopsy/imagegallery/images/btn_icon_image_gallery_32.png", keywords = "#OptionsCategory_Keywords_Options", keywordsCategory = "Options", - position = 15 + position = 16 ) @org.openide.util.NbBundle.Messages({"OptionsCategory_Name_Options=Image / Video Gallery", "OptionsCategory_Keywords_Options=image video gallery category "}) public final class ImageGalleryOptionsPanelController extends OptionsPanelController {