diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Reports.java b/Core/src/org/sleuthkit/autopsy/datamodel/Reports.java index e3715787cf..12e41d9e13 100755 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Reports.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Reports.java @@ -42,7 +42,6 @@ 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.corecomponents.DataContentTopComponent; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Report; import org.sleuthkit.datamodel.TskCoreException; @@ -111,7 +110,7 @@ public final class Reports implements AutopsyVisitableItem { @Override public void propertyChange(PropertyChangeEvent evt) { String eventType = evt.getPropertyName(); - if (eventType.equals(Case.Events.REPORT_ADDED.toString())) { + if (eventType.equals(Case.Events.REPORT_ADDED.toString()) || eventType.equals(Case.Events.REPORT_DELETED.toString())) { /** * Checking for a current case is a stop gap measure * until a different way of handling the closing of @@ -272,7 +271,6 @@ public final class Reports implements AutopsyVisitableItem { JOptionPane.YES_NO_OPTION) == 0) { try { Case.getCurrentCase().deleteReports(selectedReportsCollection, checkbox.isSelected()); - DataContentTopComponent.findInstance().repaint(); } catch (TskCoreException | IllegalStateException ex) { Logger.getLogger(DeleteReportAction.class.getName()).log(Level.INFO, "Error deleting the reports. ", ex); // NON-NLS - Provide solution to the user? } diff --git a/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchSettingsPanel.java index ef4f782e8c..1416195d93 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/FileExtMismatchSettingsPanel.java @@ -392,6 +392,7 @@ final class FileExtMismatchSettingsPanel extends IngestModuleGlobalSettingsPanel updateExtList(); extTableModel.resync(); this.userExtTextField.setText(""); + pcs.firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); }//GEN-LAST:event_addExtButtonActionPerformed private void addTypeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addTypeButtonActionPerformed diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypeDialog.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypeDialog.java index b8fdbb92cf..a002cc12ed 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypeDialog.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypeDialog.java @@ -25,6 +25,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JDialog; @@ -36,7 +38,7 @@ import org.openide.util.NbBundle.Messages; /** * Dialog used for editing or adding file types. */ -public class AddFileTypeDialog extends JDialog { +class AddFileTypeDialog extends JDialog { /** * Enum used for letting creator of this dialog know whether or not OK was @@ -51,6 +53,8 @@ public class AddFileTypeDialog extends JDialog { private FileType fileType; private AddFileTypePanel addMimeTypePanel; private BUTTON_PRESSED result; + private JButton okButton; + private JButton closeButton; /** * Creates a dialog for creating a file type @@ -100,13 +104,12 @@ public class AddFileTypeDialog extends JDialog { add(this.addMimeTypePanel, BorderLayout.PAGE_START); // Add the add/done button. - JButton addButton; if (add) { - addButton = new JButton(Bundle.AddMimeTypeDialog_addButton_title()); + okButton = new JButton(Bundle.AddMimeTypeDialog_addButton_title()); } else { - addButton = new JButton(Bundle.AddMimeTypeDialog_addButton_title2()); + okButton = new JButton(Bundle.AddMimeTypeDialog_addButton_title2()); } - addButton.addActionListener(new ActionListener() { + okButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { doButtonAction(true); @@ -114,7 +117,7 @@ public class AddFileTypeDialog extends JDialog { }); // Add a close button. - JButton closeButton = new JButton(Bundle.AddMimeTypeDialog_cancelButton_title()); + closeButton = new JButton(Bundle.AddMimeTypeDialog_cancelButton_title()); closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -126,7 +129,7 @@ public class AddFileTypeDialog extends JDialog { JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.LINE_AXIS)); buttonPanel.add(new javax.swing.Box.Filler(new Dimension(10, 10), new Dimension(10, 10), new Dimension(10, 10))); - buttonPanel.add(addButton); + buttonPanel.add(okButton); buttonPanel.add(new javax.swing.Box.Filler(new Dimension(10, 10), new Dimension(10, 10), new Dimension(10, 10))); buttonPanel.add(closeButton); add(buttonPanel, BorderLayout.LINE_START); @@ -141,13 +144,22 @@ public class AddFileTypeDialog extends JDialog { doButtonAction(false); } }); - + this.addMimeTypePanel.addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals(AddFileTypePanel.EVENT.SIG_LIST_CHANGED.toString())) { + enableOkButton(); + } + } + }); + enableOkButton(); /** * Show the dialog. */ pack(); setResizable(false); setVisible(true); + } /** @@ -189,4 +201,8 @@ public class AddFileTypeDialog extends JDialog { return result; } + private void enableOkButton() { + this.okButton.setEnabled(addMimeTypePanel.hasSignature()); + } + } diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypePanel.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypePanel.java index 72a92824f1..bc44e8884f 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypePanel.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypePanel.java @@ -18,6 +18,8 @@ */ package org.sleuthkit.autopsy.modules.filetypeid; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; import java.util.ArrayList; import java.util.List; import javax.swing.DefaultListModel; @@ -26,18 +28,20 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; +import static org.sleuthkit.autopsy.modules.filetypeid.AddFileTypePanel.EVENT.SIG_LIST_CHANGED; import org.sleuthkit.autopsy.modules.filetypeid.AddFileTypeSignatureDialog.BUTTON_PRESSED; import org.sleuthkit.autopsy.modules.filetypeid.FileType.Signature; /** * Panel for adding or editing file types. */ -public class AddFileTypePanel extends javax.swing.JPanel { +class AddFileTypePanel extends javax.swing.JPanel { private static final long serialVersionUID = 1L; private AddFileTypeSignatureDialog addSigDialog; private DefaultListModel signaturesListModel; + private PropertyChangeSupport pcs = new PropertyChangeSupport(this); /** * Creates a panel for a new file type. @@ -49,6 +53,10 @@ public class AddFileTypePanel extends javax.swing.JPanel { this.addTypeListSelectionListener(); this.enableButtons(); } + + enum EVENT { + SIG_LIST_CHANGED + } /** * Creates a panel for editing a file type. @@ -136,6 +144,20 @@ public class AddFileTypePanel extends javax.swing.JPanel { deleteSigButton.setEnabled(true); } } + + boolean hasSignature() { + return !this.signaturesListModel.isEmpty(); + } + + @Override + public void addPropertyChangeListener(PropertyChangeListener l) { + pcs.addPropertyChangeListener(l); + } + + @Override + public void removePropertyChangeListener(PropertyChangeListener l) { + pcs.removePropertyChangeListener(l); + } /** * This method is called from within the constructor to initialize the form. @@ -257,6 +279,7 @@ public class AddFileTypePanel extends javax.swing.JPanel { if (!this.signaturesListModel.isEmpty()) { signatureList.setSelectedIndex(0); } + pcs.firePropertyChange(SIG_LIST_CHANGED.toString(), null, null); } }//GEN-LAST:event_deleteSigButtonActionPerformed @@ -266,6 +289,7 @@ public class AddFileTypePanel extends javax.swing.JPanel { if (addSigDialog.getResult() == AddFileTypeSignatureDialog.BUTTON_PRESSED.OK) { signaturesListModel.addElement(this.addSigDialog.getSignature()); } + pcs.firePropertyChange(SIG_LIST_CHANGED.toString(), null, null); } }//GEN-LAST:event_addSigButtonActionPerformed diff --git a/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel2.form b/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel2.form index 119000eebe..3df3f78f59 100644 --- a/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel2.form +++ b/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel2.form @@ -87,9 +87,6 @@ - - - diff --git a/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel2.java b/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel2.java index f57da241f9..a140357a50 100644 --- a/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel2.java +++ b/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel2.java @@ -22,7 +22,6 @@ import java.awt.Component; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; -import java.util.EnumMap; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -36,12 +35,13 @@ import javax.swing.JList; import javax.swing.JPanel; import javax.swing.ListCellRenderer; import javax.swing.ListModel; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import javax.swing.event.ListDataListener; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.BlackboardArtifact; -import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE; import org.sleuthkit.datamodel.TagName; import org.sleuthkit.datamodel.TskCoreException; @@ -68,6 +68,26 @@ final class ReportVisualPanel2 extends JPanel { deselectAllButton.setEnabled(false); allResultsRadioButton.setSelected(true); this.wizPanel = wizPanel; + this.allResultsRadioButton.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + tagsList.setEnabled(taggedResultsRadioButton.isSelected()); + selectAllButton.setEnabled(taggedResultsRadioButton.isSelected()); + deselectAllButton.setEnabled(taggedResultsRadioButton.isSelected()); + advancedButton.setEnabled(!taggedResultsRadioButton.isSelected()); + updateFinishButton(); + } + }); + this.taggedResultsRadioButton.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + tagsList.setEnabled(taggedResultsRadioButton.isSelected()); + selectAllButton.setEnabled(taggedResultsRadioButton.isSelected()); + deselectAllButton.setEnabled(taggedResultsRadioButton.isSelected()); + advancedButton.setEnabled(!taggedResultsRadioButton.isSelected()); + updateFinishButton(); + } + }); } // Initialize the list of Tags @@ -164,21 +184,11 @@ final class ReportVisualPanel2 extends JPanel { return result; } - private boolean areArtifactsSelected() { - boolean result = false; - for (Entry entry : artifactStates.entrySet()) { - if (entry.getValue()) { - result = true; - } - } - return result; - } - private void updateFinishButton() { if (taggedResultsRadioButton.isSelected()) { wizPanel.setFinish(areTagsSelected()); } else { - wizPanel.setFinish(areArtifactsSelected()); + wizPanel.setFinish(true); } } @@ -211,11 +221,6 @@ final class ReportVisualPanel2 extends JPanel { optionsButtonGroup.add(taggedResultsRadioButton); org.openide.awt.Mnemonics.setLocalizedText(taggedResultsRadioButton, org.openide.util.NbBundle.getMessage(ReportVisualPanel2.class, "ReportVisualPanel2.taggedResultsRadioButton.text")); // NOI18N - taggedResultsRadioButton.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - taggedResultsRadioButtonStateChanged(evt); - } - }); optionsButtonGroup.add(allResultsRadioButton); org.openide.awt.Mnemonics.setLocalizedText(allResultsRadioButton, org.openide.util.NbBundle.getMessage(ReportVisualPanel2.class, "ReportVisualPanel2.allResultsRadioButton.text")); // NOI18N @@ -293,14 +298,6 @@ final class ReportVisualPanel2 extends JPanel { ); }// //GEN-END:initComponents - private void taggedResultsRadioButtonStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_taggedResultsRadioButtonStateChanged - tagsList.setEnabled(taggedResultsRadioButton.isSelected()); - selectAllButton.setEnabled(taggedResultsRadioButton.isSelected()); - deselectAllButton.setEnabled(taggedResultsRadioButton.isSelected()); - advancedButton.setEnabled(!taggedResultsRadioButton.isSelected()); - updateFinishButton(); - }//GEN-LAST:event_taggedResultsRadioButtonStateChanged - private void selectAllButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectAllButtonActionPerformed for (String tag : tags) { tagStates.put(tag, Boolean.TRUE); @@ -319,8 +316,8 @@ final class ReportVisualPanel2 extends JPanel { private void advancedButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_advancedButtonActionPerformed artifactStates = dialog.display(); - wizPanel.setFinish(areArtifactsSelected()); }//GEN-LAST:event_advancedButtonActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton advancedButton; private javax.swing.JRadioButton allResultsRadioButton;