From 47453a5b899bf20be577dcd8517c729a843d1dbb Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 3 Sep 2020 09:55:02 -0400 Subject: [PATCH] 6714 fix listener, validation, and enabling of filters --- .../discovery/ui/ArtifactTypeFilterPanel.form | 5 +- .../discovery/ui/ArtifactTypeFilterPanel.java | 29 +++++++-- .../autopsy/discovery/ui/Bundle.properties | 2 +- .../discovery/ui/Bundle.properties-MERGED | 2 +- .../autopsy/discovery/ui/DateFilterPanel.form | 16 +++-- .../autopsy/discovery/ui/DateFilterPanel.java | 59 ++++++++++++++----- .../autopsy/discovery/ui/DiscoveryDialog.java | 10 ++-- 7 files changed, 89 insertions(+), 34 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactTypeFilterPanel.form b/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactTypeFilterPanel.form index d269dc7d15..e0d00591cc 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactTypeFilterPanel.form +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactTypeFilterPanel.form @@ -8,6 +8,9 @@ + + + @@ -49,7 +52,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactTypeFilterPanel.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactTypeFilterPanel.java index eba7fbe1f1..aca79c056c 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactTypeFilterPanel.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/ArtifactTypeFilterPanel.java @@ -47,7 +47,7 @@ class ArtifactTypeFilterPanel extends AbstractDiscoveryFilterPanel { */ private void setUpArtifactTypeFilter() { int count = 0; - DefaultListModel artifactTypeModel = (DefaultListModel) jList1.getModel(); + DefaultListModel artifactTypeModel = (DefaultListModel) artifactList.getModel(); artifactTypeModel.removeAllElements(); for (BlackboardArtifact.ARTIFACT_TYPE artifactType : SearchData.Type.DOMAIN.getArtifactTypes()) { artifactTypeModel.add(count, new ArtifactTypeItem(artifactType)); @@ -66,17 +66,22 @@ class ArtifactTypeFilterPanel extends AbstractDiscoveryFilterPanel { artifactTypeCheckbox = new javax.swing.JCheckBox(); artifactTypeScrollPane = new javax.swing.JScrollPane(); - jList1 = new javax.swing.JList<>(); + artifactList = new javax.swing.JList<>(); org.openide.awt.Mnemonics.setLocalizedText(artifactTypeCheckbox, org.openide.util.NbBundle.getMessage(ArtifactTypeFilterPanel.class, "ArtifactTypeFilterPanel.artifactTypeCheckbox.text")); // NOI18N + artifactTypeCheckbox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + artifactTypeCheckboxActionPerformed(evt); + } + }); setPreferredSize(new java.awt.Dimension(27, 27)); artifactTypeScrollPane.setPreferredSize(new java.awt.Dimension(27, 27)); - jList1.setModel(new DefaultListModel()); - jList1.setEnabled(false); - artifactTypeScrollPane.setViewportView(jList1); + artifactList.setModel(new DefaultListModel()); + artifactList.setEnabled(false); + artifactTypeScrollPane.setViewportView(artifactList); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); @@ -90,9 +95,21 @@ class ArtifactTypeFilterPanel extends AbstractDiscoveryFilterPanel { ); }// //GEN-END:initComponents + private void artifactTypeCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_artifactTypeCheckboxActionPerformed + artifactTypeScrollPane.setEnabled(artifactTypeCheckbox.isSelected()); + artifactList.setEnabled(artifactTypeCheckbox.isSelected()); + }//GEN-LAST:event_artifactTypeCheckboxActionPerformed + @Override void configurePanel(boolean selected, int[] indicesSelected) { artifactTypeCheckbox.setSelected(selected); + if (artifactTypeCheckbox.isEnabled() && artifactTypeCheckbox.isSelected()) { + artifactTypeScrollPane.setEnabled(true); + artifactList.setEnabled(true); + } else { + artifactTypeScrollPane.setEnabled(false); + artifactList.setEnabled(false); + } } @Override @@ -153,8 +170,8 @@ class ArtifactTypeFilterPanel extends AbstractDiscoveryFilterPanel { } // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JList artifactList; private javax.swing.JCheckBox artifactTypeCheckbox; private javax.swing.JScrollPane artifactTypeScrollPane; - private javax.swing.JList jList1; // End of variables declaration//GEN-END:variables } diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties index faa0025da5..6e0553c5ea 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties @@ -39,7 +39,6 @@ SizeFilterPanel.sizeCheckbox.text=File Size: DateFilterPanel.dateFilterCheckbox.text=Date Filter: DateFilterPanel.endCheckBox.text=End: DateFilterPanel.startCheckBox.text=Start: -DateFilterPanel.mostRecentButton.text=Only last: DateFilterPanel.daysLabel.text=days of activity ImageThumbnailPanel.isDeletedLabel.toolTipText= ResultsPanel.pageControlsLabel.text=Pages: @@ -54,3 +53,4 @@ PastOccurrencesFilterPanel.pastOccurrencesCheckbox.text=Past Occurrences: DocumentFilterPanel.documentsFiltersSplitPane.border.title=Step 2: Filter which documents to show ObjectDetectedFilterPanel.text=Object Detected: DetailsPanel.instancesList.border.title=Instances +DateFilterPanel.mostRecentRadioButton.text=Only last: diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED index 1e9224cf9b..1c202fbc4a 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED @@ -93,7 +93,6 @@ SizeFilterPanel.sizeCheckbox.text=File Size: DateFilterPanel.dateFilterCheckbox.text=Date Filter: DateFilterPanel.endCheckBox.text=End: DateFilterPanel.startCheckBox.text=Start: -DateFilterPanel.mostRecentButton.text=Only last: DateFilterPanel.daysLabel.text=days of activity ImageThumbnailPanel.isDeletedLabel.toolTipText= ResultsPanel.pageControlsLabel.text=Pages: @@ -108,6 +107,7 @@ PastOccurrencesFilterPanel.pastOccurrencesCheckbox.text=Past Occurrences: DocumentFilterPanel.documentsFiltersSplitPane.border.title=Step 2: Filter which documents to show ObjectDetectedFilterPanel.text=Object Detected: DetailsPanel.instancesList.border.title=Instances +DateFilterPanel.mostRecentRadioButton.text=Only last: VideoThumbnailPanel.bytes.text=bytes VideoThumbnailPanel.deleted.text=All instances of file are deleted. VideoThumbnailPanel.gigaBytes.text=GB diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.form b/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.form index 6801b3f579..2728d1a822 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.form +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.form @@ -10,6 +10,9 @@ + + + @@ -51,7 +54,7 @@ - + @@ -76,7 +79,7 @@ - + @@ -104,6 +107,9 @@ + + + @@ -117,18 +123,18 @@ - + - + - + diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.java index cf78c5fe7d..ca8b9ca96d 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.java @@ -60,7 +60,7 @@ class DateFilterPanel extends AbstractDiscoveryFilterPanel { jPanel1 = new javax.swing.JPanel(); daysSpinner = new javax.swing.JSpinner(numberModel); daysLabel = new javax.swing.JLabel(); - mostRecentButton = new javax.swing.JRadioButton(); + mostRecentRadioButton = new javax.swing.JRadioButton(); startCheckBox = new javax.swing.JCheckBox(); startDatePicker = new com.github.lgooddatepicker.components.DatePicker(); endDatePicker = new com.github.lgooddatepicker.components.DatePicker(); @@ -68,19 +68,25 @@ class DateFilterPanel extends AbstractDiscoveryFilterPanel { rangeRadioButton = new javax.swing.JRadioButton(); org.openide.awt.Mnemonics.setLocalizedText(dateFilterCheckbox, org.openide.util.NbBundle.getMessage(DateFilterPanel.class, "DateFilterPanel.dateFilterCheckbox.text")); // NOI18N + dateFilterCheckbox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + dateFilterCheckboxActionPerformed(evt); + } + }); daysSpinner.setEnabled(false); daysSpinner.setPreferredSize(new java.awt.Dimension(75, 26)); + daysSpinner.setValue(7); org.openide.awt.Mnemonics.setLocalizedText(daysLabel, org.openide.util.NbBundle.getMessage(DateFilterPanel.class, "DateFilterPanel.daysLabel.text")); // NOI18N daysLabel.setEnabled(false); - buttonGroup1.add(mostRecentButton); - org.openide.awt.Mnemonics.setLocalizedText(mostRecentButton, org.openide.util.NbBundle.getMessage(DateFilterPanel.class, "DateFilterPanel.mostRecentButton.text")); // NOI18N - mostRecentButton.setEnabled(false); - mostRecentButton.addActionListener(new java.awt.event.ActionListener() { + buttonGroup1.add(mostRecentRadioButton); + org.openide.awt.Mnemonics.setLocalizedText(mostRecentRadioButton, org.openide.util.NbBundle.getMessage(DateFilterPanel.class, "DateFilterPanel.mostRecentRadioButton.text")); // NOI18N + mostRecentRadioButton.setEnabled(false); + mostRecentRadioButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - mostRecentButtonActionPerformed(evt); + mostRecentRadioButtonActionPerformed(evt); } }); @@ -121,7 +127,7 @@ class DateFilterPanel extends AbstractDiscoveryFilterPanel { jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(mostRecentButton, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(mostRecentRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(daysSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -141,7 +147,7 @@ class DateFilterPanel extends AbstractDiscoveryFilterPanel { jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(mostRecentButton) + .addComponent(mostRecentRadioButton) .addComponent(daysSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(daysLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) @@ -177,25 +183,48 @@ class DateFilterPanel extends AbstractDiscoveryFilterPanel { private void startCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_startCheckBoxStateChanged startDatePicker.setEnabled(startCheckBox.isSelected()); -// validateFilters(); //TODO JIRA-6714 when search will begin doing something }//GEN-LAST:event_startCheckBoxStateChanged private void endCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_endCheckBoxStateChanged endDatePicker.setEnabled(endCheckBox.isSelected()); -// validateFilters(); //TODO JIRA-6714 when search will begin doing something }//GEN-LAST:event_endCheckBoxStateChanged - private void mostRecentButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mostRecentButtonActionPerformed - - }//GEN-LAST:event_mostRecentButtonActionPerformed + private void mostRecentRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mostRecentRadioButtonActionPerformed + startCheckBox.setEnabled(false); + endCheckBox.setEnabled(false); + daysSpinner.setEnabled(true); + daysLabel.setEnabled(true); + }//GEN-LAST:event_mostRecentRadioButtonActionPerformed private void rangeRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rangeRadioButtonActionPerformed - // TODO add your handling code here: + startCheckBox.setEnabled(true); + endCheckBox.setEnabled(true); + daysSpinner.setEnabled(false); + daysLabel.setEnabled(false); }//GEN-LAST:event_rangeRadioButtonActionPerformed + private void dateFilterCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dateFilterCheckboxActionPerformed + mostRecentRadioButton.setEnabled(dateFilterCheckbox.isSelected()); + rangeRadioButton.setEnabled(dateFilterCheckbox.isSelected()); + }//GEN-LAST:event_dateFilterCheckboxActionPerformed + @Override void configurePanel(boolean selected, int[] indicesSelected) { dateFilterCheckbox.setSelected(selected); + if (dateFilterCheckbox.isEnabled() && dateFilterCheckbox.isSelected()) { + mostRecentRadioButton.setEnabled(true); + rangeRadioButton.setEnabled(true); + mostRecentRadioButton.setSelected(true); + } else { + mostRecentRadioButton.setEnabled(false); + rangeRadioButton.setEnabled(false); + daysLabel.setEnabled(false); + daysSpinner.setEnabled(false); + startCheckBox.setEnabled(false); + endCheckBox.setEnabled(false); + startDatePicker.setEnabled(false); + endDatePicker.setEnabled(false); + } } @Override @@ -232,7 +261,7 @@ class DateFilterPanel extends AbstractDiscoveryFilterPanel { private javax.swing.JCheckBox endCheckBox; private com.github.lgooddatepicker.components.DatePicker endDatePicker; private javax.swing.JPanel jPanel1; - private javax.swing.JRadioButton mostRecentButton; + private javax.swing.JRadioButton mostRecentRadioButton; private javax.swing.JRadioButton rangeRadioButton; private javax.swing.JCheckBox startCheckBox; private com.github.lgooddatepicker.components.DatePicker startDatePicker; diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/DiscoveryDialog.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/DiscoveryDialog.java index e76e202eb3..94e41c8cf2 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/DiscoveryDialog.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/DiscoveryDialog.java @@ -512,6 +512,10 @@ final class DiscoveryDialog extends javax.swing.JDialog { remove(imageFilterPanel); imageFilterPanel.removePropertyChangeListener(listener); } + if (domainFilterPanel != null) { + remove(domainFilterPanel); + domainFilterPanel.removePropertyChangeListener(listener); + } if (documentFilterPanel != null) { remove(documentFilterPanel); documentFilterPanel.removePropertyChangeListener(listener); @@ -520,10 +524,6 @@ final class DiscoveryDialog extends javax.swing.JDialog { remove(videoFilterPanel); videoFilterPanel.removePropertyChangeListener(listener); } - if (domainFilterPanel != null) { - remove(domainFilterPanel); - domainFilterPanel.removePropertyChangeListener(listener); - } } private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchButtonActionPerformed @@ -584,7 +584,7 @@ final class DiscoveryDialog extends javax.swing.JDialog { domainsButton.setBackground(SELECTED_COLOR); domainsButton.setForeground(Color.BLACK); type = SearchData.Type.DOMAIN; - documentFilterPanel.addPropertyChangeListener(listener); + domainFilterPanel.addPropertyChangeListener(listener); validateDialog(); pack(); repaint();