From 0b010732327bfef7c2056a17d51e7460888777af Mon Sep 17 00:00:00 2001 From: Oliver Spohngellert Date: Wed, 25 May 2016 15:05:03 -0400 Subject: [PATCH 1/6] Made search button disable based upon whether a filter is enabled. --- .../filesearch/AbstractFileSearchFilter.java | 6 ++++ .../autopsy/filesearch/DateSearchFilter.java | 5 ++++ .../autopsy/filesearch/DateSearchPanel.java | 14 ++++++++++ .../autopsy/filesearch/FileSearchFilter.java | 5 +++- .../autopsy/filesearch/FileSearchPanel.java | 28 +++++++++++++------ .../filesearch/KnownStatusSearchFilter.java | 1 - .../filesearch/KnownStatusSearchPanel.java | 19 +++++++++++-- .../autopsy/filesearch/MimeTypeFilter.java | 2 ++ .../autopsy/filesearch/MimeTypePanel.form | 2 +- .../autopsy/filesearch/MimeTypePanel.java | 23 +++++++++++++++ .../autopsy/filesearch/NameSearchPanel.java | 19 +++++++++++-- .../autopsy/filesearch/SizeSearchPanel.java | 17 ++++++++++- 12 files changed, 125 insertions(+), 16 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/AbstractFileSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/AbstractFileSearchFilter.java index 0d59301eea..67f65be80b 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/AbstractFileSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/AbstractFileSearchFilter.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.filesearch; +import java.beans.PropertyChangeListener; import javax.swing.JComponent; /** @@ -39,4 +40,9 @@ abstract class AbstractFileSearchFilter implements FileSea public T getComponent() { return this.component; } + + @Override + public void addPropertyChangeListener(PropertyChangeListener listener) { + this.getComponent().addPropertyChangeListener(listener); + } } diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java index be8a799556..be42035087 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java @@ -205,6 +205,11 @@ class DateSearchFilter extends AbstractFileSearchFilter { getComponent().addActionListener(l); } + @Override + public void addPropertyChangeListener(PropertyChangeListener listener) { + getComponent().addPropertyChangeListener(listener); + } + /** * Inner class to put the separator inside the combo box. */ diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java index ea3642a65d..a852fddfa3 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java @@ -20,6 +20,8 @@ package org.sleuthkit.autopsy.filesearch; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; import java.text.DateFormat; import java.text.ParseException; import java.util.Date; @@ -37,6 +39,7 @@ class DateSearchPanel extends javax.swing.JPanel { DateFormat dateFormat; List timeZones; + private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); DateSearchPanel(DateFormat dateFormat, List timeZones) { this.dateFormat = dateFormat; @@ -133,6 +136,16 @@ class DateSearchPanel extends javax.swing.JPanel { this.changedCheckBox.setEnabled(enable); this.createdCheckBox.setEnabled(enable); } + + @Override + public void addPropertyChangeListener(PropertyChangeListener pcl) { + pcs.addPropertyChangeListener(pcl); + } + + @Override + public void removePropertyChangeListener(PropertyChangeListener pcl) { + pcs.removePropertyChangeListener(pcl); + } /** * This method is called from within the constructor to initialize the form. @@ -349,6 +362,7 @@ class DateSearchPanel extends javax.swing.JPanel { private void dateCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dateCheckBoxActionPerformed this.setComponentsEnabled(); + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); }//GEN-LAST:event_dateCheckBoxActionPerformed /** diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java index 878c500c0b..d4b39716d7 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java @@ -19,12 +19,13 @@ package org.sleuthkit.autopsy.filesearch; import java.awt.event.ActionListener; +import java.beans.PropertyChangeListener; import javax.swing.JComponent; /** * Provides a filter and the panel to display it to the FileSearchTopComponent */ -interface FileSearchFilter { + interface FileSearchFilter { /** * Gets the panel to put in the File Search pane. @@ -55,6 +56,8 @@ interface FileSearchFilter { * Add an action listener to the fields of this panel */ void addActionListener(ActionListener l); + + void addPropertyChangeListener(PropertyChangeListener listener); /** * Thrown if a filter's inputs are invalid diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java index e796589d22..de01ecd901 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java @@ -17,38 +17,35 @@ * limitations under the License. */ -/* + /* * FileSearchPanel.java * * Created on Mar 5, 2012, 1:51:50 PM */ package org.sleuthkit.autopsy.filesearch; -import java.awt.BorderLayout; import java.awt.Component; import java.awt.Cursor; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.logging.Level; - -import org.openide.util.NbBundle; -import org.sleuthkit.autopsy.coreutils.Logger; -import javax.swing.BoxLayout; -import javax.swing.JButton; import javax.swing.JLabel; -import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import org.openide.DialogDisplayer; import org.openide.NotifyDescriptor; +import org.openide.util.NbBundle; import org.openide.windows.TopComponent; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.corecomponents.DataResultTopComponent; import org.sleuthkit.autopsy.corecomponents.TableFilterNode; +import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; import org.sleuthkit.autopsy.filesearch.FileSearchFilter.FilterValidationException; import org.sleuthkit.datamodel.AbstractFile; @@ -64,6 +61,10 @@ class FileSearchPanel extends javax.swing.JPanel { private static int resultWindowCount = 0; //keep track of result windows so they get unique names private static final String EMPTY_WHERE_CLAUSE = NbBundle.getMessage(DateSearchFilter.class, "FileSearchPanel.emptyWhereClause.text"); + enum EVENT { + CHECKED + } + /** * Creates new form FileSearchPanel */ @@ -100,12 +101,22 @@ class FileSearchPanel extends javax.swing.JPanel { filterPanel.add(fa); } + for (FileSearchFilter filter : this.getFilters()) { + filter.addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + searchButton.setEnabled(anyFiltersEnabled()); + } + }); + } + addListenerToAll(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { search(); } }); + searchButton.setEnabled(anyFiltersEnabled()); } /** @@ -290,6 +301,7 @@ class FileSearchPanel extends javax.swing.JPanel { .addContainerGap()) ); }// //GEN-END:initComponents + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel filterPanel; private javax.swing.JButton searchButton; diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java index bd9776f61d..8bd74d02fa 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java @@ -19,7 +19,6 @@ package org.sleuthkit.autopsy.filesearch; import java.awt.event.ActionListener; - import org.openide.util.NbBundle; import org.sleuthkit.datamodel.TskData.FileKnown; diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchPanel.java index 291ced32e7..89e12481b1 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchPanel.java @@ -17,13 +17,15 @@ * limitations under the License. */ -/* + /* * KnownStatusSearchPanel.java * * Created on Oct 19, 2011, 11:45:44 AM */ package org.sleuthkit.autopsy.filesearch; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; import javax.swing.JCheckBox; /** @@ -32,6 +34,8 @@ import javax.swing.JCheckBox; */ class KnownStatusSearchPanel extends javax.swing.JPanel { + private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); + /** * Creates new form KnownStatusSearchPanel */ @@ -55,7 +59,7 @@ class KnownStatusSearchPanel extends javax.swing.JPanel { JCheckBox getUnknownOptionCheckBox() { return unknownOptionCheckBox; } - + private void setComponentsEnabled() { boolean enabled = this.knownCheckBox.isSelected(); this.unknownOptionCheckBox.setEnabled(enabled); @@ -63,6 +67,16 @@ class KnownStatusSearchPanel extends javax.swing.JPanel { this.knownBadOptionCheckBox.setEnabled(enabled); } + @Override + public void addPropertyChangeListener(PropertyChangeListener pcl) { + pcs.addPropertyChangeListener(pcl); + } + + @Override + public void removePropertyChangeListener(PropertyChangeListener pcl) { + pcs.removePropertyChangeListener(pcl); + } + /** * 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 @@ -132,6 +146,7 @@ class KnownStatusSearchPanel extends javax.swing.JPanel { private void knownCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_knownCheckBoxActionPerformed setComponentsEnabled(); + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); }//GEN-LAST:event_knownCheckBoxActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypeFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypeFilter.java index b119566299..72cb4e7012 100755 --- a/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypeFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypeFilter.java @@ -40,5 +40,7 @@ class MimeTypeFilter extends AbstractFileSearchFilter { @Override public void addActionListener(ActionListener l) { } + + } diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypePanel.form b/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypePanel.form index a8c7fa65f9..7eb2d436df 100755 --- a/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypePanel.form +++ b/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypePanel.form @@ -31,7 +31,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypePanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypePanel.java index b4172354a4..e14e5e0dc4 100755 --- a/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypePanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/MimeTypePanel.java @@ -5,12 +5,16 @@ */ package org.sleuthkit.autopsy.filesearch; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.SortedSet; import java.util.logging.Level; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import org.apache.tika.mime.MediaType; import org.apache.tika.mime.MimeTypes; import org.sleuthkit.autopsy.coreutils.Logger; @@ -25,6 +29,7 @@ public class MimeTypePanel extends javax.swing.JPanel { private static final SortedSet mediaTypes = MimeTypes.getDefaultMimeTypes().getMediaTypeRegistry().getTypes(); private static final Logger logger = Logger.getLogger(MimeTypePanel.class.getName()); private static final long serialVersionUID = 1L; + private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); /** * Creates new form MimeTypePanel @@ -32,6 +37,12 @@ public class MimeTypePanel extends javax.swing.JPanel { public MimeTypePanel() { initComponents(); setComponentsEnabled(); + this.mimeTypeList.addListSelectionListener(new ListSelectionListener() { + @Override + public void valueChanged(ListSelectionEvent e) { + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + } + }); } private String[] getMimeTypeArray() { @@ -75,6 +86,16 @@ public class MimeTypePanel extends javax.swing.JPanel { this.mimeTypeList.setEnabled(enabled); this.jLabel1.setEnabled(enabled); } + + @Override + public void addPropertyChangeListener(PropertyChangeListener pcl) { + pcs.addPropertyChangeListener(pcl); + } + + @Override + public void removePropertyChangeListener(PropertyChangeListener pcl) { + pcs.removePropertyChangeListener(pcl); + } /** * This method is called from within the constructor to initialize the form. @@ -141,6 +162,8 @@ public class MimeTypePanel extends javax.swing.JPanel { private void mimeTypeCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mimeTypeCheckBoxActionPerformed setComponentsEnabled(); + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + this.mimeTypeList.setSelectedIndices(new int[0]); }//GEN-LAST:event_mimeTypeCheckBoxActionPerformed diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchPanel.java index 1ae2842947..dd7a3d008f 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchPanel.java @@ -17,7 +17,7 @@ * limitations under the License. */ -/* + /* * NameSearchPanel.java * * Created on Oct 19, 2011, 11:58:53 AM @@ -26,6 +26,8 @@ package org.sleuthkit.autopsy.filesearch; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; import javax.swing.JCheckBox; import javax.swing.JMenuItem; import javax.swing.JTextField; @@ -36,6 +38,8 @@ import javax.swing.JTextField; */ class NameSearchPanel extends javax.swing.JPanel { + private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); + /** * Creates new form NameSearchPanel */ @@ -77,12 +81,22 @@ class NameSearchPanel extends javax.swing.JPanel { JTextField getSearchTextField() { return searchTextField; } - + void setComponentsEnabled() { boolean enabled = nameCheckBox.isSelected(); this.searchTextField.setEnabled(enabled); this.noteNameLabel.setEnabled(enabled); } + + @Override + public void addPropertyChangeListener(PropertyChangeListener pcl) { + pcs.addPropertyChangeListener(pcl); + } + + @Override + public void removePropertyChangeListener(PropertyChangeListener pcl) { + pcs.removePropertyChangeListener(pcl); + } /** * This method is called from within the constructor to initialize the form. @@ -168,6 +182,7 @@ class NameSearchPanel extends javax.swing.JPanel { private void nameCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nameCheckBoxActionPerformed setComponentsEnabled(); + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); }//GEN-LAST:event_nameCheckBoxActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/SizeSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/SizeSearchPanel.java index 4a0bc91d5e..4bde4eb5e7 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/SizeSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/SizeSearchPanel.java @@ -20,6 +20,8 @@ package org.sleuthkit.autopsy.filesearch; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; import java.text.NumberFormat; import javax.swing.JCheckBox; import javax.swing.JComboBox; @@ -32,6 +34,8 @@ import javax.swing.JMenuItem; */ class SizeSearchPanel extends javax.swing.JPanel { + private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); + /** * Creates new form SizeSearchPanel */ @@ -81,13 +85,23 @@ class SizeSearchPanel extends javax.swing.JPanel { JComboBox getSizeUnitComboBox() { return sizeUnitComboBox; } - + void setComponentsEnabled() { boolean enabled = this.sizeCheckBox.isSelected(); this.sizeCompareComboBox.setEnabled(enabled); this.sizeUnitComboBox.setEnabled(enabled); this.sizeTextField.setEnabled(enabled); } + + @Override + public void addPropertyChangeListener(PropertyChangeListener pcl) { + pcs.addPropertyChangeListener(pcl); + } + + @Override + public void removePropertyChangeListener(PropertyChangeListener pcl) { + pcs.removePropertyChangeListener(pcl); + } /** * This method is called from within the constructor to initialize the form. @@ -168,6 +182,7 @@ class SizeSearchPanel extends javax.swing.JPanel { private void sizeCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sizeCheckBoxActionPerformed setComponentsEnabled(); + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); }//GEN-LAST:event_sizeCheckBoxActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables From 50caa5aa8b68901c6caeefde925202cb65e794bb Mon Sep 17 00:00:00 2001 From: Oliver Spohngellert Date: Thu, 26 May 2016 08:50:19 -0400 Subject: [PATCH 2/6] Finished search button enabling. --- .../autopsy/filesearch/DateSearchFilter.java | 3 +- .../autopsy/filesearch/DateSearchPanel.form | 12 ++++++ .../autopsy/filesearch/DateSearchPanel.java | 43 +++++++++++++++++++ .../filesearch/KnownStatusSearchFilter.java | 3 +- .../filesearch/KnownStatusSearchPanel.form | 6 +++ .../filesearch/KnownStatusSearchPanel.java | 24 ++++++++++- .../autopsy/filesearch/NameSearchFilter.java | 4 +- .../autopsy/filesearch/NameSearchPanel.java | 18 ++++++++ 8 files changed, 108 insertions(+), 5 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java index be42035087..507edfe973 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java @@ -67,7 +67,8 @@ class DateSearchFilter extends AbstractFileSearchFilter { @Override public boolean isEnabled() { - return this.getComponent().getDateCheckBox().isSelected(); + return this.getComponent().getDateCheckBox().isSelected() && + this.getComponent().isSearchable(); } @Override diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.form b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.form index 2d09e16507..e92d57fdd9 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.form +++ b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.form @@ -236,6 +236,9 @@ + + + @@ -244,6 +247,9 @@ + + + @@ -252,6 +258,9 @@ + + + @@ -260,6 +269,9 @@ + + + diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java index a852fddfa3..718eaa8b8f 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java @@ -222,15 +222,35 @@ class DateSearchPanel extends javax.swing.JPanel { modifiedCheckBox.setSelected(true); modifiedCheckBox.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.modifiedCheckBox.text")); // NOI18N + modifiedCheckBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + modifiedCheckBoxActionPerformed(evt); + } + }); changedCheckBox.setSelected(true); changedCheckBox.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.changedCheckBox.text")); // NOI18N + changedCheckBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + changedCheckBoxActionPerformed(evt); + } + }); accessedCheckBox.setSelected(true); accessedCheckBox.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.accessedCheckBox.text")); // NOI18N + accessedCheckBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + accessedCheckBoxActionPerformed(evt); + } + }); createdCheckBox.setSelected(true); createdCheckBox.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.createdCheckBox.text")); // NOI18N + createdCheckBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + createdCheckBoxActionPerformed(evt); + } + }); dateFromButtonCalendar.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.dateFromButtonCalendar.text")); // NOI18N dateFromButtonCalendar.addPropertyChangeListener(new java.beans.PropertyChangeListener() { @@ -365,6 +385,22 @@ class DateSearchPanel extends javax.swing.JPanel { pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); }//GEN-LAST:event_dateCheckBoxActionPerformed + private void modifiedCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_modifiedCheckBoxActionPerformed + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + }//GEN-LAST:event_modifiedCheckBoxActionPerformed + + private void accessedCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_accessedCheckBoxActionPerformed + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + }//GEN-LAST:event_accessedCheckBoxActionPerformed + + private void createdCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createdCheckBoxActionPerformed + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + }//GEN-LAST:event_createdCheckBoxActionPerformed + + private void changedCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_changedCheckBoxActionPerformed + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + }//GEN-LAST:event_changedCheckBoxActionPerformed + /** * Validate and set the datetime field on the screen given a datetime * string. @@ -393,6 +429,13 @@ class DateSearchPanel extends javax.swing.JPanel { dateToTextField.setText(dateStringResult); dateToButtonCalendar.setTargetDate(date); } + + boolean isSearchable() { + return this.accessedCheckBox.isSelected() || + this.changedCheckBox.isSelected() || + this.createdCheckBox.isSelected() || + this.modifiedCheckBox.isSelected(); + } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox accessedCheckBox; private javax.swing.JCheckBox changedCheckBox; diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java index 8bd74d02fa..b40eedf845 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java @@ -40,7 +40,8 @@ class KnownStatusSearchFilter extends AbstractFileSearchFilter + + + @@ -83,6 +86,9 @@ + + + diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchPanel.java index 89e12481b1..4791d8c4fb 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchPanel.java @@ -77,6 +77,10 @@ class KnownStatusSearchPanel extends javax.swing.JPanel { pcs.removePropertyChangeListener(pcl); } + boolean isSearchable() { + return this.unknownOptionCheckBox.isSelected() || this.knownBadOptionCheckBox.isSelected() || this.knownOptionCheckBox.isSelected(); + } + /** * 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 @@ -100,6 +104,11 @@ class KnownStatusSearchPanel extends javax.swing.JPanel { unknownOptionCheckBox.setSelected(true); unknownOptionCheckBox.setText(org.openide.util.NbBundle.getMessage(KnownStatusSearchPanel.class, "KnownStatusSearchPanel.unknownOptionCheckBox.text")); // NOI18N + unknownOptionCheckBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + unknownOptionCheckBoxActionPerformed(evt); + } + }); knownOptionCheckBox.setSelected(true); knownOptionCheckBox.setText(org.openide.util.NbBundle.getMessage(KnownStatusSearchPanel.class, "KnownStatusSearchPanel.knownOptionCheckBox.text")); // NOI18N @@ -111,6 +120,11 @@ class KnownStatusSearchPanel extends javax.swing.JPanel { knownBadOptionCheckBox.setSelected(true); knownBadOptionCheckBox.setText(org.openide.util.NbBundle.getMessage(KnownStatusSearchPanel.class, "KnownStatusSearchPanel.knownBadOptionCheckBox.text")); // NOI18N + knownBadOptionCheckBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + knownBadOptionCheckBoxActionPerformed(evt); + } + }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); @@ -141,7 +155,7 @@ class KnownStatusSearchPanel extends javax.swing.JPanel { }// //GEN-END:initComponents private void knownOptionCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_knownOptionCheckBoxActionPerformed - // TODO add your handling code here: + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); }//GEN-LAST:event_knownOptionCheckBoxActionPerformed private void knownCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_knownCheckBoxActionPerformed @@ -149,6 +163,14 @@ class KnownStatusSearchPanel extends javax.swing.JPanel { pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); }//GEN-LAST:event_knownCheckBoxActionPerformed + private void unknownOptionCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_unknownOptionCheckBoxActionPerformed + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + }//GEN-LAST:event_unknownOptionCheckBoxActionPerformed + + private void knownBadOptionCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_knownBadOptionCheckBoxActionPerformed + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + }//GEN-LAST:event_knownBadOptionCheckBoxActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox knownBadOptionCheckBox; private javax.swing.JCheckBox knownCheckBox; diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java index 2433a71ba3..40e10701cc 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java @@ -19,7 +19,6 @@ package org.sleuthkit.autopsy.filesearch; import java.awt.event.ActionListener; - import org.openide.util.NbBundle; import org.sleuthkit.autopsy.filesearch.FileSearchFilter.FilterValidationException; @@ -42,7 +41,8 @@ class NameSearchFilter extends AbstractFileSearchFilter { @Override public boolean isEnabled() { - return this.getComponent().getNameCheckBox().isSelected(); + return this.getComponent().getNameCheckBox().isSelected() && + !this.getComponent().getSearchTextField().getText().isEmpty(); } @Override diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchPanel.java index dd7a3d008f..4ffc2c86f7 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchPanel.java @@ -31,6 +31,8 @@ import java.beans.PropertyChangeSupport; import javax.swing.JCheckBox; import javax.swing.JMenuItem; import javax.swing.JTextField; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; /** * @@ -71,6 +73,22 @@ class NameSearchPanel extends javax.swing.JPanel { copyMenuItem.addActionListener(actList); pasteMenuItem.addActionListener(actList); selectAllMenuItem.addActionListener(actList); + this.searchTextField.getDocument().addDocumentListener(new DocumentListener() { + @Override + public void insertUpdate(DocumentEvent e) { + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + } + + @Override + public void removeUpdate(DocumentEvent e) { + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + } + + @Override + public void changedUpdate(DocumentEvent e) { + pcs.firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + } + }); } From fd09fb81eb41948778c9bab2ae6b4f4b67616434 Mon Sep 17 00:00:00 2001 From: Oliver Spohngellert Date: Thu, 26 May 2016 13:10:39 -0400 Subject: [PATCH 3/6] Made search not happen when an exception would be thrown. --- .../autopsy/filesearch/DateSearchFilter.java | 13 ++++++++++-- .../autopsy/filesearch/FileSearchFilter.java | 2 ++ .../autopsy/filesearch/FileSearchPanel.java | 16 +++++++++------ .../filesearch/KnownStatusSearchFilter.java | 13 ++++++++++-- .../autopsy/filesearch/MimeTypeFilter.java | 20 ++++++++++++------- .../autopsy/filesearch/NameSearchFilter.java | 12 +++++++++-- .../autopsy/filesearch/SizeSearchFilter.java | 6 +++++- 7 files changed, 62 insertions(+), 20 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java index 507edfe973..d92d62e7e4 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java @@ -67,8 +67,7 @@ class DateSearchFilter extends AbstractFileSearchFilter { @Override public boolean isEnabled() { - return this.getComponent().getDateCheckBox().isSelected() && - this.getComponent().isSearchable(); + return this.getComponent().getDateCheckBox().isSelected(); } @Override @@ -211,6 +210,16 @@ class DateSearchFilter extends AbstractFileSearchFilter { getComponent().addPropertyChangeListener(listener); } + @Override + public boolean isValid() { + if (!isEnabled()) { + return true; + } + else { + return this.getComponent().isSearchable(); + } + } + /** * Inner class to put the separator inside the combo box. */ diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java index d4b39716d7..bf1cb6fdcf 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java @@ -40,6 +40,8 @@ import javax.swing.JComponent; * @return true if it should be included in the search */ boolean isEnabled(); + + boolean isValid(); /** * Gets predicate expression to include in the SQL filter expression diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java index de01ecd901..569bb4ba32 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java @@ -105,7 +105,7 @@ class FileSearchPanel extends javax.swing.JPanel { filter.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - searchButton.setEnabled(anyFiltersEnabled()); + searchButton.setEnabled(isSearchable()); } }); } @@ -116,20 +116,24 @@ class FileSearchPanel extends javax.swing.JPanel { search(); } }); - searchButton.setEnabled(anyFiltersEnabled()); + searchButton.setEnabled(isSearchable()); } /** * @return true if any of the filters in the panel are enabled (checked) */ - private boolean anyFiltersEnabled() { + private boolean isSearchable() { + boolean enabled = false; for (FileSearchFilter filter : this.getFilters()) { if (filter.isEnabled()) { - return true; + enabled = true; + if (!filter.isValid()) { + return false; + } } } - return false; + return enabled; } /** @@ -140,7 +144,7 @@ class FileSearchPanel extends javax.swing.JPanel { // change the cursor to "waiting cursor" for this operation this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); try { - if (this.anyFiltersEnabled()) { + if (this.isSearchable()) { String title = NbBundle.getMessage(this.getClass(), "FileSearchPanel.search.results.title", ++resultWindowCount); String pathText = NbBundle.getMessage(this.getClass(), "FileSearchPanel.search.results.pathText"); diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java index b40eedf845..e11de57180 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java @@ -40,8 +40,8 @@ class KnownStatusSearchFilter extends AbstractFileSearchFilter { +class MimeTypeFilter extends AbstractFileSearchFilter { public MimeTypeFilter(MimeTypePanel component) { super(component); } + public MimeTypeFilter() { this(new MimeTypePanel()); } @Override public boolean isEnabled() { - return this.getComponent().isSelected() && - !this.getComponent().getMimeTypesSelected().isEmpty(); + return this.getComponent().isSelected(); } @Override public String getPredicate() throws FilterValidationException { String predicate = ""; - for(String mimeType : this.getComponent().getMimeTypesSelected()) { + for (String mimeType : this.getComponent().getMimeTypesSelected()) { predicate += "mime_type = '" + mimeType + "' OR "; } - if(predicate.length() > 3) { + if (predicate.length() > 3) { predicate = predicate.substring(0, predicate.length() - 3); } return predicate; @@ -41,6 +41,12 @@ class MimeTypeFilter extends AbstractFileSearchFilter { public void addActionListener(ActionListener l) { } - - + @Override + public boolean isValid() { + if (!isEnabled()) { + return true; + } else { + return !this.getComponent().getMimeTypesSelected().isEmpty(); + } + } } diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java index 40e10701cc..787d66784a 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java @@ -41,8 +41,7 @@ class NameSearchFilter extends AbstractFileSearchFilter { @Override public boolean isEnabled() { - return this.getComponent().getNameCheckBox().isSelected() && - !this.getComponent().getSearchTextField().getText().isEmpty(); + return this.getComponent().getNameCheckBox().isSelected(); } @Override @@ -63,4 +62,13 @@ class NameSearchFilter extends AbstractFileSearchFilter { public void addActionListener(ActionListener l) { getComponent().addActionListener(l); } + + @Override + public boolean isValid() { + if (!isEnabled()) { + return true; + } else { + return !this.getComponent().getSearchTextField().getText().isEmpty(); + } + } } diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/SizeSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/SizeSearchFilter.java index 03fc59b8d4..ca43dac7e0 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/SizeSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/SizeSearchFilter.java @@ -20,7 +20,6 @@ package org.sleuthkit.autopsy.filesearch; import java.awt.event.ActionListener; import javax.swing.JComboBox; - import org.openide.util.NbBundle; import org.sleuthkit.autopsy.filesearch.FileSearchFilter.FilterValidationException; @@ -73,4 +72,9 @@ class SizeSearchFilter extends AbstractFileSearchFilter { public void addActionListener(ActionListener l) { getComponent().addActionListener(l); } + + @Override + public boolean isValid() { + return true; + } } From 562fd7b8d0fa74b143f2f3c377e478d3e7147897 Mon Sep 17 00:00:00 2001 From: Oliver Spohngellert Date: Thu, 26 May 2016 14:22:36 -0400 Subject: [PATCH 4/6] Worked towards adding timeline to the toolbar. --- Core/src/org/sleuthkit/autopsy/core/layer.xml | 5 +++++ .../autopsy/timeline/OpenTimelineAction.java | 21 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/core/layer.xml b/Core/src/org/sleuthkit/autopsy/core/layer.xml index 8e71419b45..92e64dfa55 100644 --- a/Core/src/org/sleuthkit/autopsy/core/layer.xml +++ b/Core/src/org/sleuthkit/autopsy/core/layer.xml @@ -387,6 +387,11 @@ + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/timeline/OpenTimelineAction.java b/Core/src/org/sleuthkit/autopsy/timeline/OpenTimelineAction.java index b766394926..cd4392e32b 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/OpenTimelineAction.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/OpenTimelineAction.java @@ -18,8 +18,11 @@ */ package org.sleuthkit.autopsy.timeline; +import java.awt.Component; import java.io.IOException; import java.util.logging.Level; +import javax.swing.ImageIcon; +import javax.swing.JButton; import org.openide.awt.ActionID; import org.openide.awt.ActionReference; import org.openide.awt.ActionReferences; @@ -27,6 +30,7 @@ import org.openide.awt.ActionRegistration; import org.openide.util.HelpCtx; import org.openide.util.NbBundle; import org.openide.util.actions.CallableSystemAction; +import org.openide.util.actions.Presenter; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.core.Installer; import org.sleuthkit.autopsy.coreutils.Logger; @@ -37,13 +41,15 @@ import org.sleuthkit.autopsy.coreutils.ThreadConfined; @ActionRegistration(displayName = "#CTL_MakeTimeline", lazy = false) @ActionReferences(value = { @ActionReference(path = "Menu/Tools", position = 100)}) -public class OpenTimelineAction extends CallableSystemAction { +public class OpenTimelineAction extends CallableSystemAction implements Presenter.Toolbar { private static final Logger LOGGER = Logger.getLogger(OpenTimelineAction.class.getName()); private static final boolean fxInited = Installer.isJavaFxInited(); private static TimeLineController timeLineController = null; + + private JButton toolbarButton = new JButton(); synchronized static void invalidateController() { timeLineController = null; @@ -102,4 +108,17 @@ public class OpenTimelineAction extends CallableSystemAction { public boolean asynchronous() { return false; // run on edt } + + /** + * Returns the toolbar component of this action + * + * @return component the toolbar button + */ + @Override + public Component getToolbarPresenter() { + ImageIcon icon = new ImageIcon("images//20140521121247760_easyicon_net_32_colorized.png"); //NON-NLS + toolbarButton.setIcon(icon); + toolbarButton.setText(this.getName()); + return toolbarButton; + } } From 305c7a332be5db92014e93a9478f8f91df349560 Mon Sep 17 00:00:00 2001 From: Oliver Spohngellert Date: Thu, 26 May 2016 15:17:54 -0400 Subject: [PATCH 5/6] Got rid of toolbar updates. --- Core/src/org/sleuthkit/autopsy/core/layer.xml | 5 ----- .../autopsy/timeline/OpenTimelineAction.java | 21 +------------------ 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/core/layer.xml b/Core/src/org/sleuthkit/autopsy/core/layer.xml index 92e64dfa55..8e71419b45 100644 --- a/Core/src/org/sleuthkit/autopsy/core/layer.xml +++ b/Core/src/org/sleuthkit/autopsy/core/layer.xml @@ -387,11 +387,6 @@ - - - - - diff --git a/Core/src/org/sleuthkit/autopsy/timeline/OpenTimelineAction.java b/Core/src/org/sleuthkit/autopsy/timeline/OpenTimelineAction.java index cd4392e32b..b766394926 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/OpenTimelineAction.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/OpenTimelineAction.java @@ -18,11 +18,8 @@ */ package org.sleuthkit.autopsy.timeline; -import java.awt.Component; import java.io.IOException; import java.util.logging.Level; -import javax.swing.ImageIcon; -import javax.swing.JButton; import org.openide.awt.ActionID; import org.openide.awt.ActionReference; import org.openide.awt.ActionReferences; @@ -30,7 +27,6 @@ import org.openide.awt.ActionRegistration; import org.openide.util.HelpCtx; import org.openide.util.NbBundle; import org.openide.util.actions.CallableSystemAction; -import org.openide.util.actions.Presenter; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.core.Installer; import org.sleuthkit.autopsy.coreutils.Logger; @@ -41,15 +37,13 @@ import org.sleuthkit.autopsy.coreutils.ThreadConfined; @ActionRegistration(displayName = "#CTL_MakeTimeline", lazy = false) @ActionReferences(value = { @ActionReference(path = "Menu/Tools", position = 100)}) -public class OpenTimelineAction extends CallableSystemAction implements Presenter.Toolbar { +public class OpenTimelineAction extends CallableSystemAction { private static final Logger LOGGER = Logger.getLogger(OpenTimelineAction.class.getName()); private static final boolean fxInited = Installer.isJavaFxInited(); private static TimeLineController timeLineController = null; - - private JButton toolbarButton = new JButton(); synchronized static void invalidateController() { timeLineController = null; @@ -108,17 +102,4 @@ public class OpenTimelineAction extends CallableSystemAction implements Presente public boolean asynchronous() { return false; // run on edt } - - /** - * Returns the toolbar component of this action - * - * @return component the toolbar button - */ - @Override - public Component getToolbarPresenter() { - ImageIcon icon = new ImageIcon("images//20140521121247760_easyicon_net_32_colorized.png"); //NON-NLS - toolbarButton.setIcon(icon); - toolbarButton.setText(this.getName()); - return toolbarButton; - } } From 126c12d2d172feaced698ef87a75e688bfe3b7ed Mon Sep 17 00:00:00 2001 From: Oliver Spohngellert Date: Thu, 26 May 2016 16:06:20 -0400 Subject: [PATCH 6/6] Fixed semantics. --- .../autopsy/filesearch/DateSearchFilter.java | 12 +----------- .../autopsy/filesearch/DateSearchPanel.java | 2 +- .../autopsy/filesearch/FileSearchFilter.java | 16 +++++++++++++--- .../autopsy/filesearch/FileSearchPanel.java | 8 ++++---- .../filesearch/KnownStatusSearchFilter.java | 6 +----- .../filesearch/KnownStatusSearchPanel.java | 2 +- .../autopsy/filesearch/MimeTypeFilter.java | 6 +----- .../autopsy/filesearch/NameSearchFilter.java | 6 +----- 8 files changed, 23 insertions(+), 35 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java index d92d62e7e4..33e1ba6635 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java @@ -205,19 +205,9 @@ class DateSearchFilter extends AbstractFileSearchFilter { getComponent().addActionListener(l); } - @Override - public void addPropertyChangeListener(PropertyChangeListener listener) { - getComponent().addPropertyChangeListener(listener); - } - @Override public boolean isValid() { - if (!isEnabled()) { - return true; - } - else { - return this.getComponent().isSearchable(); - } + return this.getComponent().isValidSearch(); } /** diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java index 718eaa8b8f..9794e25700 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java @@ -430,7 +430,7 @@ class DateSearchPanel extends javax.swing.JPanel { dateToButtonCalendar.setTargetDate(date); } - boolean isSearchable() { + boolean isValidSearch() { return this.accessedCheckBox.isSelected() || this.changedCheckBox.isSelected() || this.createdCheckBox.isSelected() || diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java index bf1cb6fdcf..457db56570 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchFilter.java @@ -25,7 +25,7 @@ import javax.swing.JComponent; /** * Provides a filter and the panel to display it to the FileSearchTopComponent */ - interface FileSearchFilter { +interface FileSearchFilter { /** * Gets the panel to put in the File Search pane. @@ -40,7 +40,12 @@ import javax.swing.JComponent; * @return true if it should be included in the search */ boolean isEnabled(); - + + /** + * Checks if the panel has valid input for search. + * + * @return Whether the panel has valid input for search. + */ boolean isValid(); /** @@ -58,7 +63,12 @@ import javax.swing.JComponent; * Add an action listener to the fields of this panel */ void addActionListener(ActionListener l); - + + /** + * Adds the property change listener to the panel + * + * @param listener the listener to add. + */ void addPropertyChangeListener(PropertyChangeListener listener); /** diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java index 569bb4ba32..656e22ef9e 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/FileSearchPanel.java @@ -105,7 +105,7 @@ class FileSearchPanel extends javax.swing.JPanel { filter.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - searchButton.setEnabled(isSearchable()); + searchButton.setEnabled(isValidSearch()); } }); } @@ -116,13 +116,13 @@ class FileSearchPanel extends javax.swing.JPanel { search(); } }); - searchButton.setEnabled(isSearchable()); + searchButton.setEnabled(isValidSearch()); } /** * @return true if any of the filters in the panel are enabled (checked) */ - private boolean isSearchable() { + private boolean isValidSearch() { boolean enabled = false; for (FileSearchFilter filter : this.getFilters()) { if (filter.isEnabled()) { @@ -144,7 +144,7 @@ class FileSearchPanel extends javax.swing.JPanel { // change the cursor to "waiting cursor" for this operation this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); try { - if (this.isSearchable()) { + if (this.isValidSearch()) { String title = NbBundle.getMessage(this.getClass(), "FileSearchPanel.search.results.title", ++resultWindowCount); String pathText = NbBundle.getMessage(this.getClass(), "FileSearchPanel.search.results.pathText"); diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java index e11de57180..5f52afa035 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/KnownStatusSearchFilter.java @@ -86,10 +86,6 @@ class KnownStatusSearchFilter extends AbstractFileSearchFilter { @Override public boolean isValid() { - if (!isEnabled()) { - return true; - } else { - return !this.getComponent().getMimeTypesSelected().isEmpty(); - } + return !this.getComponent().getMimeTypesSelected().isEmpty(); } } diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java index 787d66784a..ee70ebd5e1 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/NameSearchFilter.java @@ -65,10 +65,6 @@ class NameSearchFilter extends AbstractFileSearchFilter { @Override public boolean isValid() { - if (!isEnabled()) { - return true; - } else { - return !this.getComponent().getSearchTextField().getText().isEmpty(); - } + return !this.getComponent().getSearchTextField().getText().isEmpty(); } }