From 348e5b783a0fd7ed7a433aad61cb092fddfae4c6 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Tue, 19 Jan 2021 10:30:54 -0500 Subject: [PATCH 1/4] Modified multi user options panel to work only when there is no open case --- .../corecomponents/Bundle.properties-MERGED | 2 +- .../corecomponents/MultiUserSettingsPanel.java | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties-MERGED index 70d6e46af9..6a7e8b004f 100755 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties-MERGED @@ -52,6 +52,7 @@ DataResultViewerThumbnail.sortLabel.textTemplate=Sorted by: {0} DataResultViewerThumbnail.thumbnailSizeComboBox.large=Large Thumbnails DataResultViewerThumbnail.thumbnailSizeComboBox.medium=Medium Thumbnails DataResultViewerThumbnail.thumbnailSizeComboBox.small=Small Thumbnails +MultiUserSettingsPanel_Close_Case_To_Modify=Close case to modfy settings OptionsCategory_Name_General=Application OptionsCategory_Keywords_General=Autopsy Options HINT_DataContentTopComponent=This is a DataContent window @@ -303,4 +304,3 @@ AutopsyOptionsPanel.agencyLogoPreview.text=
Date: Tue, 19 Jan 2021 13:51:04 -0500 Subject: [PATCH 2/4] Handled case where option panel is open and case state changes --- .../autopsy/corecomponents/MultiUserSettingsPanel.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java index 38852b9849..c7bb3621a3 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java @@ -32,7 +32,9 @@ import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.events.MessageServiceConnectionInfo; import org.sleuthkit.autopsy.coreutils.Logger; import java.awt.Cursor; +import java.beans.PropertyChangeEvent; import java.io.IOException; +import java.util.EnumSet; import java.util.logging.Level; import javax.swing.ImageIcon; import javax.swing.JOptionPane; @@ -161,6 +163,13 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel { goodIcon = new ImageIcon(ImageUtilities.loadImage("org/sleuthkit/autopsy/images/good.png", false)); badIcon = new ImageIcon(ImageUtilities.loadImage("org/sleuthkit/autopsy/images/bad.png", false)); enableMultiUserComponents(textBoxes, cbEnableMultiUser.isSelected()); + + Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> { + //disable when case is open, enable when case is closed + load(); + + cbEnableMultiUser.setEnabled(evt.getNewValue() == null); + }); } /** From b1408081b6b47fd23bd34287a3f8d4a2f7b09d6a Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Tue, 19 Jan 2021 15:53:39 -0500 Subject: [PATCH 3/4] Bug fix to multiusersettingspanel --- .../autopsy/corecomponents/MultiUserSettingsPanel.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java index c7bb3621a3..53e3302204 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java @@ -864,6 +864,7 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel { // When a case is open, prevent the user from changing // multi-user settings. cbEnableMultiUser.setEnabled(!Case.isCaseOpen()); + enableMultiUserComponents(textBoxes, cbEnableMultiUser.isSelected() && !Case.isCaseOpen()); this.valid(); // trigger validation to enable buttons based on current settings } @@ -1149,12 +1150,12 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel { boolean messageServicePopulated = messageServiceFieldsArePopulated(); // PostgreSQL Database - bnTestDatabase.setEnabled(dbPopulated); + bnTestDatabase.setEnabled(dbPopulated && !Case.isCaseOpen()); // Solr Indexing - bnTestSolr8.setEnabled(solr8Populated); - bnTestSolr4.setEnabled(solr4Populated); - bnTestZK.setEnabled(zkPopulated); + bnTestSolr8.setEnabled(solr8Populated && !Case.isCaseOpen()); + bnTestSolr4.setEnabled(solr4Populated && !Case.isCaseOpen()); + bnTestZK.setEnabled(zkPopulated && !Case.isCaseOpen()); // ActiveMQ Messaging bnTestMessageService.setEnabled(messageServicePopulated); From cdad1249c2f5f64c7f06b2fc8a705cd6f229cbc5 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Wed, 20 Jan 2021 08:44:09 -0500 Subject: [PATCH 4/4] Fixed timing issue with multiuser pane --- .../MultiUserSettingsPanel.java | 34 +++++++++---------- .../MultiUserSettingsPanelController.java | 5 +-- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java index 53e3302204..2556674e01 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java @@ -166,9 +166,7 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel { Case.addEventTypeSubscriber(EnumSet.of(Case.Events.CURRENT_CASE), (PropertyChangeEvent evt) -> { //disable when case is open, enable when case is closed - load(); - - cbEnableMultiUser.setEnabled(evt.getNewValue() == null); + load(evt.getNewValue() != null); }); } @@ -821,7 +819,7 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel { "MultiUserSettingsPanel_Close_Case_To_Modify=Close case to modfy settings" }) - void load() { + void load(boolean caseOpen) { lbTestDatabase.setIcon(null); lbTestSolr8.setIcon(null); lbTestSolr4.setIcon(null); @@ -863,10 +861,10 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel { // When a case is open, prevent the user from changing // multi-user settings. - cbEnableMultiUser.setEnabled(!Case.isCaseOpen()); - enableMultiUserComponents(textBoxes, cbEnableMultiUser.isSelected() && !Case.isCaseOpen()); - - this.valid(); // trigger validation to enable buttons based on current settings + cbEnableMultiUser.setEnabled(!caseOpen); + enableMultiUserComponents(textBoxes, cbEnableMultiUser.isSelected() && !caseOpen); + + this.valid(caseOpen); // trigger validation to enable buttons based on current settings } private void populateSolrAndZkSettings() { @@ -1117,15 +1115,15 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel { * * @return true if it's okay, false otherwise. */ - boolean valid() { - if(Case.isCaseOpen()) { + boolean valid(boolean caseOpen) { + if(caseOpen) { tbOops.setText(Bundle.MultiUserSettingsPanel_Close_Case_To_Modify()); } else { tbOops.setText(""); } - + if (cbEnableMultiUser.isSelected()) { - return checkFieldsAndEnableButtons() + return checkFieldsAndEnableButtons(caseOpen) && databaseSettingsAreValid() && indexingServerSettingsAreValid() && messageServiceSettingsAreValid(); @@ -1140,7 +1138,7 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel { * * @return True or false. */ - boolean checkFieldsAndEnableButtons() { + boolean checkFieldsAndEnableButtons(boolean caseOpen) { boolean result = true; boolean dbPopulated = databaseFieldsArePopulated(); @@ -1150,15 +1148,15 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel { boolean messageServicePopulated = messageServiceFieldsArePopulated(); // PostgreSQL Database - bnTestDatabase.setEnabled(dbPopulated && !Case.isCaseOpen()); + bnTestDatabase.setEnabled(dbPopulated && !caseOpen); // Solr Indexing - bnTestSolr8.setEnabled(solr8Populated && !Case.isCaseOpen()); - bnTestSolr4.setEnabled(solr4Populated && !Case.isCaseOpen()); - bnTestZK.setEnabled(zkPopulated && !Case.isCaseOpen()); + bnTestSolr8.setEnabled(solr8Populated && !caseOpen); + bnTestSolr4.setEnabled(solr4Populated && !caseOpen); + bnTestZK.setEnabled(zkPopulated && !caseOpen); // ActiveMQ Messaging - bnTestMessageService.setEnabled(messageServicePopulated); + bnTestMessageService.setEnabled(messageServicePopulated && !caseOpen); if (dbPopulated && messageServicePopulated && zkPopulated && (solr8Populated || solr4Populated)) { result = true; diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java index 212bfa7dcd..536018955e 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java @@ -27,6 +27,7 @@ import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; import java.util.logging.Level; +import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.coreutils.Logger; @OptionsPanelController.TopLevelRegistration(categoryName = "#OptionsCategory_Name_Multi_User_Settings", @@ -43,7 +44,7 @@ public final class MultiUserSettingsPanelController extends OptionsPanelControll @Override public void update() { - getPanel().load(); + getPanel().load(Case.isCaseOpen()); changed = false; } @@ -59,7 +60,7 @@ public final class MultiUserSettingsPanelController extends OptionsPanelControll @Override public boolean isValid() { - return getPanel().valid(); + return getPanel().valid(Case.isCaseOpen()); } @Override