diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml
index 993af4bf6e..987b2ffe78 100755
--- a/Core/nbproject/project.xml
+++ b/Core/nbproject/project.xml
@@ -244,6 +244,46 @@
org.netbeans.libs.junit4
+
+ org.netbeans.modules.jellytools.java
+
+
+
+ org.netbeans.modules.jellytools.platform
+
+
+
+ org.netbeans.modules.jemmy
+
+
+
+ org.netbeans.modules.nbjunit
+
+
+
+
+ qa-functional
+
+ org.netbeans.libs.junit4
+
+
+
+ org.netbeans.modules.jellytools.java
+
+
+
+ org.netbeans.modules.jellytools.platform
+
+
+
+ org.netbeans.modules.jemmy
+
+
+
+ org.netbeans.modules.nbjunit
+
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/MultiUserCasesPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/MultiUserCasesPanel.form
index 179bc23bb8..18d99fa0dc 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/MultiUserCasesPanel.form
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/MultiUserCasesPanel.form
@@ -99,11 +99,9 @@
-
-
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/MultiUserCasesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/MultiUserCasesPanel.java
index 7e87ce8947..d0676e1966 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/MultiUserCasesPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/MultiUserCasesPanel.java
@@ -23,14 +23,18 @@ import java.awt.Desktop;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
+import javax.swing.RowSorter;
+import javax.swing.SortOrder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
+import javax.swing.table.TableRowSorter;
import org.sleuthkit.autopsy.casemodule.MultiUserCaseManager.MultiUserCase;
import org.sleuthkit.autopsy.coordinationservice.CoordinationService;
import org.sleuthkit.autopsy.coreutils.Logger;
@@ -146,6 +150,7 @@ final class MultiUserCasesPanel extends javax.swing.JPanel {
casesTable.removeColumn(casesTable.getColumn(OUTPUT_FOLDER_HEADER));
casesTable.removeColumn(casesTable.getColumn(METADATA_FILE_HEADER));
+ casesTable.setRowSorter(new RowSorter<>(caseTableModel));
/*
* Listen for row selection changes and set button state for the current
@@ -313,6 +318,36 @@ final class MultiUserCasesPanel extends javax.swing.JPanel {
return ((currentTime - inputTime) / (1000 * 60 * 60 * 24)) < (numberOfUnits * multiplier);
}
+ /**
+ * RowSorter which makes columns whose type is Date to be sorted first in
+ * Descending order then in Ascending order
+ */
+ private static class RowSorter extends TableRowSorter {
+
+ RowSorter(M tModel) {
+ super(tModel);
+ }
+
+ @Override
+ public void toggleSortOrder(int column) {
+ if (!this.getModel().getColumnClass(column).equals(Date.class)) {
+ super.toggleSortOrder(column); //if it isn't a date column perform the regular sorting
+ } else {
+ ArrayList sortKeys = new ArrayList<>(getSortKeys());
+ if (sortKeys.isEmpty() || sortKeys.get(0).getColumn() != column) { //sort descending
+ sortKeys.add(0, new RowSorter.SortKey(column, SortOrder.DESCENDING));
+ } else if (sortKeys.get(0).getSortOrder() == SortOrder.ASCENDING) {
+ sortKeys.removeIf(key -> key.getColumn() == column);
+ sortKeys.add(0, new RowSorter.SortKey(column, SortOrder.DESCENDING));
+ } else {
+ sortKeys.removeIf(key -> key.getColumn() == column);
+ sortKeys.add(0, new RowSorter.SortKey(column, SortOrder.ASCENDING));
+ }
+ setSortKeys(sortKeys);
+ }
+ }
+ }
+
/**
* 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
@@ -345,9 +380,7 @@ final class MultiUserCasesPanel extends javax.swing.JPanel {
}
});
- casesTable.setAutoCreateRowSorter(true);
casesTable.setModel(caseTableModel);
- casesTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);
casesTable.setRowHeight(20);
casesTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
casesTable.addMouseListener(new java.awt.event.MouseAdapter() {
diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerGlobalSettingsPanel.form b/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerGlobalSettingsPanel.form
index e00c4a966f..50706d661f 100755
--- a/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerGlobalSettingsPanel.form
+++ b/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerGlobalSettingsPanel.form
@@ -3,7 +3,7 @@
@@ -237,6 +254,15 @@
+
+
+
+
+
+
+
+
+
@@ -250,6 +276,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerGlobalSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerGlobalSettingsPanel.java
index b2497baed8..f87c6b4e33 100755
--- a/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerGlobalSettingsPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/directorytree/ExternalViewerGlobalSettingsPanel.java
@@ -93,13 +93,17 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
editRuleButton = new javax.swing.JButton();
deleteRuleButton = new javax.swing.JButton();
- setPreferredSize(new java.awt.Dimension(750, 500));
+ setPreferredSize(new java.awt.Dimension(701, 453));
+
+ jPanel1.setPreferredSize(new java.awt.Dimension(701, 453));
org.openide.awt.Mnemonics.setLocalizedText(externalViewerTitleLabel, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text")); // NOI18N
- jSplitPane1.setDividerLocation(350);
+ jSplitPane1.setDividerLocation(365);
jSplitPane1.setDividerSize(1);
+ exePanel.setPreferredSize(new java.awt.Dimension(311, 224));
+
org.openide.awt.Mnemonics.setLocalizedText(exePathLabel, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.exePathLabel.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(exePathNameLabel, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.exePathNameLabel.text")); // NOI18N
@@ -113,7 +117,7 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
.addGroup(exePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(exePathLabel)
.addComponent(exePathNameLabel))
- .addContainerGap(159, Short.MAX_VALUE))
+ .addContainerGap(47, Short.MAX_VALUE))
);
exePanelLayout.setVerticalGroup(
exePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -122,17 +126,22 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
.addComponent(exePathLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(exePathNameLabel)
- .addContainerGap(408, Short.MAX_VALUE))
+ .addContainerGap(361, Short.MAX_VALUE))
);
jSplitPane1.setRightComponent(exePanel);
+ rulesPanel.setPreferredSize(new java.awt.Dimension(365, 406));
+
org.openide.awt.Mnemonics.setLocalizedText(ruleListLabel, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.ruleListLabel.text")); // NOI18N
rulesScrollPane.setViewportView(rulesList);
newRuleButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/add16.png"))); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(newRuleButton, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.newRuleButton.text")); // NOI18N
+ newRuleButton.setMaximumSize(new java.awt.Dimension(111, 25));
+ newRuleButton.setMinimumSize(new java.awt.Dimension(111, 25));
+ newRuleButton.setPreferredSize(new java.awt.Dimension(111, 25));
newRuleButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
newRuleButtonActionPerformed(evt);
@@ -141,6 +150,9 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
editRuleButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/edit16.png"))); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(editRuleButton, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.editRuleButton.text")); // NOI18N
+ editRuleButton.setMaximumSize(new java.awt.Dimension(111, 25));
+ editRuleButton.setMinimumSize(new java.awt.Dimension(111, 25));
+ editRuleButton.setPreferredSize(new java.awt.Dimension(111, 25));
editRuleButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editRuleButtonActionPerformed(evt);
@@ -149,6 +161,9 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
deleteRuleButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/delete16.png"))); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(deleteRuleButton, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.deleteRuleButton.text")); // NOI18N
+ deleteRuleButton.setMaximumSize(new java.awt.Dimension(111, 25));
+ deleteRuleButton.setMinimumSize(new java.awt.Dimension(111, 25));
+ deleteRuleButton.setPreferredSize(new java.awt.Dimension(111, 25));
deleteRuleButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deleteRuleButtonActionPerformed(evt);
@@ -162,20 +177,16 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
.addGroup(rulesPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(rulesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(rulesPanelLayout.createSequentialGroup()
- .addGroup(rulesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(ruleListLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGroup(rulesPanelLayout.createSequentialGroup()
- .addComponent(rulesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 311, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 0, Short.MAX_VALUE)))
- .addContainerGap())
- .addGroup(rulesPanelLayout.createSequentialGroup()
- .addComponent(newRuleButton)
+ .addComponent(ruleListLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(rulesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 345, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, rulesPanelLayout.createSequentialGroup()
+ .addGap(0, 0, Short.MAX_VALUE)
+ .addComponent(newRuleButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(editRuleButton)
+ .addComponent(editRuleButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(deleteRuleButton)
- .addGap(0, 0, Short.MAX_VALUE))))
+ .addComponent(deleteRuleButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addContainerGap())
);
rulesPanelLayout.setVerticalGroup(
rulesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -183,12 +194,12 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
.addContainerGap()
.addComponent(ruleListLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(rulesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(rulesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(rulesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(newRuleButton)
- .addComponent(editRuleButton)
- .addComponent(deleteRuleButton))
+ .addComponent(newRuleButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(editRuleButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(deleteRuleButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
@@ -202,12 +213,12 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
- .addComponent(externalViewerTitleLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 777, Short.MAX_VALUE)
+ .addComponent(externalViewerTitleLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 681, Short.MAX_VALUE)
.addContainerGap())
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
- .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 777, Short.MAX_VALUE)
+ .addComponent(jScrollPane1)
.addContainerGap()))
);
jPanel1Layout.setVerticalGroup(
@@ -215,7 +226,7 @@ final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel impleme
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(externalViewerTitleLabel)
- .addContainerGap(475, Short.MAX_VALUE))
+ .addContainerGap(428, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(32, 32, 32)
diff --git a/Core/src/org/sleuthkit/autopsy/guiutils/DurationCellRenderer.java b/Core/src/org/sleuthkit/autopsy/guiutils/DurationCellRenderer.java
index 970dafacfc..6aab063952 100755
--- a/Core/src/org/sleuthkit/autopsy/guiutils/DurationCellRenderer.java
+++ b/Core/src/org/sleuthkit/autopsy/guiutils/DurationCellRenderer.java
@@ -73,25 +73,4 @@ public class DurationCellRenderer extends GrayableCellRenderer {
return this;
}
- void grayCellIfTableNotEnabled(JTable table, boolean isSelected) {
- if (table.isEnabled()) {
- /*
- * The table is enabled, make the foreground and background the
- * normal selected or unselected color.
- */
- if (isSelected) {
- setBackground(table.getSelectionBackground());
- setForeground(table.getSelectionForeground());
- } else {
- setBackground(table.getBackground());
- setForeground(table.getForeground());
- }
- } else {
- /*
- * The table is disabled, make the foreground and background gray.
- */
- setBackground(Color.lightGray);
- setForeground(Color.darkGray);
- }
- }
}
diff --git a/Core/src/org/sleuthkit/autopsy/guiutils/GrayableCellRenderer.java b/Core/src/org/sleuthkit/autopsy/guiutils/GrayableCellRenderer.java
index 53031faae3..6fbf9d5133 100755
--- a/Core/src/org/sleuthkit/autopsy/guiutils/GrayableCellRenderer.java
+++ b/Core/src/org/sleuthkit/autopsy/guiutils/GrayableCellRenderer.java
@@ -45,7 +45,7 @@ public class GrayableCellRenderer extends DefaultTableCellRenderer {
return this;
}
- void grayCellIfTableNotEnabled(JTable table, boolean isSelected) {
+ public void grayCellIfTableNotEnabled(JTable table, boolean isSelected) {
if (table.isEnabled()) {
/*
* The table is enabled, make the foreground and background the
diff --git a/Core/src/org/sleuthkit/autopsy/guiutils/ShortDateCellRenderer.java b/Core/src/org/sleuthkit/autopsy/guiutils/ShortDateCellRenderer.java
index 299880f1c0..d9fabe7854 100755
--- a/Core/src/org/sleuthkit/autopsy/guiutils/ShortDateCellRenderer.java
+++ b/Core/src/org/sleuthkit/autopsy/guiutils/ShortDateCellRenderer.java
@@ -47,26 +47,5 @@ class ShortDateCellRenderer extends GrayableCellRenderer {
grayCellIfTableNotEnabled(table, isSelected);
return this;
}
-
- void grayCellIfTableNotEnabled(JTable table, boolean isSelected) {
- if (table.isEnabled()) {
- /*
- * The table is enabled, make the foreground and background the
- * normal selected or unselected color.
- */
- if (isSelected) {
- setBackground(table.getSelectionBackground());
- setForeground(table.getSelectionForeground());
- } else {
- setBackground(table.getBackground());
- setForeground(table.getForeground());
- }
- } else {
- /*
- * The table is disabled, make the foreground and background gray.
- */
- setBackground(Color.lightGray);
- setForeground(Color.darkGray);
- }
- }
+
}
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanel.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanel.java
index 1c761e8578..40f3d1c298 100755
--- a/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestOptionsPanel.java
@@ -140,9 +140,35 @@ public class IngestOptionsPanel extends IngestModuleGlobalSettingsPanel implemen
@Override
public void addPropertyChangeListener(PropertyChangeListener l) {
- filterPanel.addPropertyChangeListener(l);
- settingsPanel.addPropertyChangeListener(l);
- profilePanel.addPropertyChangeListener(l);
+ super.addPropertyChangeListener(l);
+ /*
+ * There is at least one look and feel library that follows the bad
+ * practice of calling overrideable methods in a constructor, e.g.:
+ *
+ * at
+ * javax.swing.plaf.synth.SynthPanelUI.installListeners(SynthPanelUI.java:83)
+ * at
+ * javax.swing.plaf.synth.SynthPanelUI.installUI(SynthPanelUI.java:63)
+ * at javax.swing.JComponent.setUI(JComponent.java:666) at
+ * javax.swing.JPanel.setUI(JPanel.java:153) at
+ * javax.swing.JPanel.updateUI(JPanel.java:126) at
+ * javax.swing.JPanel.(JPanel.java:86) at
+ * javax.swing.JPanel.(JPanel.java:109) at
+ * javax.swing.JPanel.(JPanel.java:117)
+ *
+ * When this happens, the following child components of this JPanel
+ * subclass have not been constructed yet, since this panel's
+ * constructor has not been called yet.
+ */
+ if (null != filterPanel) {
+ filterPanel.addPropertyChangeListener(l);
+ }
+ if (null != settingsPanel) {
+ settingsPanel.addPropertyChangeListener(l);
+ }
+ if (null != profilePanel) {
+ profilePanel.addPropertyChangeListener(l);
+ }
}
@Override
diff --git a/Core/src/org/sleuthkit/autopsy/ingest/ProfilePanel.java b/Core/src/org/sleuthkit/autopsy/ingest/ProfilePanel.java
index 249ded2020..8040893fcf 100755
--- a/Core/src/org/sleuthkit/autopsy/ingest/ProfilePanel.java
+++ b/Core/src/org/sleuthkit/autopsy/ingest/ProfilePanel.java
@@ -177,7 +177,29 @@ class ProfilePanel extends IngestModuleGlobalSettingsPanel {
@Override
public void addPropertyChangeListener(PropertyChangeListener l) {
- ingestSettingsPanel.addPropertyChangeListener(l);
+ super.addPropertyChangeListener(l);
+ /*
+ * There is at least one look and feel library that follows the bad
+ * practice of calling overrideable methods in a constructor, e.g.:
+ *
+ * at
+ * javax.swing.plaf.synth.SynthPanelUI.installListeners(SynthPanelUI.java:83)
+ * at
+ * javax.swing.plaf.synth.SynthPanelUI.installUI(SynthPanelUI.java:63)
+ * at javax.swing.JComponent.setUI(JComponent.java:666) at
+ * javax.swing.JPanel.setUI(JPanel.java:153) at
+ * javax.swing.JPanel.updateUI(JPanel.java:126) at
+ * javax.swing.JPanel.(JPanel.java:86) at
+ * javax.swing.JPanel.(JPanel.java:109) at
+ * javax.swing.JPanel.(JPanel.java:117)
+ *
+ * When this happens, the following child components of this JPanel
+ * subclass have not been constructed yet, since this panel's
+ * constructor has not been called yet.
+ */
+ if (null != ingestSettingsPanel) {
+ ingestSettingsPanel.addPropertyChangeListener(l);
+ }
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel jPanel1;
diff --git a/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchSettingsPanel.form b/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchSettingsPanel.form
index 162aef8994..f8ffc03428 100755
--- a/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchSettingsPanel.form
+++ b/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchSettingsPanel.form
@@ -1,6 +1,11 @@