From bd544932b5d3dce18f6ee4d6afc394a61d62783b Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Fri, 18 Sep 2020 10:28:10 -0400 Subject: [PATCH] 6861 check start before end, max spinner value 100k --- .../discovery/ui/Bundle.properties-MERGED | 1 + .../autopsy/discovery/ui/DateFilterPanel.form | 2 +- .../autopsy/discovery/ui/DateFilterPanel.java | 30 +++++++++++++++++-- 3 files changed, 29 insertions(+), 4 deletions(-) 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 8ecf93bed6..08e22e9826 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED @@ -9,6 +9,7 @@ DataSourceModuleWrapper.hashModule.text=Hash Lookup module was not run on data s # {0} - timeZone DateFilterPanel.dateRange.text=Date Range ({0}): DateFilterPanel.invalidRange.text=Range or Only Last must be selected +DateFilterPanel.startAfterEnd.text=Start date should be before the end date when both are enabled. DateFilterPanel.startOrEndNeeded.text=A start or end date must be specified to use the range filter DiscoveryDialog.name.text=Discovery DiscoveryTopComponent.cancelButton.text=Cancel Search diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.form b/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.form index b52fce7d28..276a4f9ef5 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.form +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.form @@ -104,7 +104,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.java index 930eda4f6f..81777b5a40 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/DateFilterPanel.java @@ -18,7 +18,9 @@ */ package org.sleuthkit.autopsy.discovery.ui; - +import com.github.lgooddatepicker.optionalusertools.DateChangeListener; +import com.github.lgooddatepicker.zinternaltools.DateChangeEvent; +import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.time.LocalDate; import java.time.Period; @@ -85,7 +87,7 @@ class DateFilterPanel extends AbstractDiscoveryFilterPanel { } }); - daysSpinner.setModel(new javax.swing.SpinnerNumberModel(7, 1, 60, 1)); + daysSpinner.setModel(new javax.swing.SpinnerNumberModel(7, 1, 100000, 1)); daysSpinner.setEditor(new javax.swing.JSpinner.NumberEditor(daysSpinner, "")); daysSpinner.setEnabled(false); daysSpinner.setPreferredSize(new java.awt.Dimension(75, 26)); @@ -259,6 +261,18 @@ class DateFilterPanel extends AbstractDiscoveryFilterPanel { endCheckBox.addActionListener(actionListener); rangeRadioButton.addActionListener(actionListener); mostRecentRadioButton.addActionListener(actionListener); + startDatePicker.addDateChangeListener(new DateChangeListener() { + @Override + public void dateChanged(DateChangeEvent event) { + actionListener.actionPerformed(new ActionEvent(startDatePicker, ActionEvent.ACTION_PERFORMED, "StartDateChanged")); + } + }); + endDatePicker.addDateChangeListener(new DateChangeListener() { + @Override + public void dateChanged(DateChangeEvent event) { + actionListener.actionPerformed(new ActionEvent(endDatePicker, ActionEvent.ACTION_PERFORMED, "EndDateChanged")); + } + }); } @Override @@ -281,10 +295,17 @@ class DateFilterPanel extends AbstractDiscoveryFilterPanel { for (ActionListener listener : endCheckBox.getActionListeners()) { endCheckBox.removeActionListener(listener); } + for (DateChangeListener listener : endDatePicker.getDateChangeListeners()) { + endDatePicker.removeDateChangeListener(listener); + } + for (DateChangeListener listener : startDatePicker.getDateChangeListeners()) { + startDatePicker.removeDateChangeListener(listener); + } } @NbBundle.Messages({"DateFilterPanel.invalidRange.text=Range or Only Last must be selected", - "DateFilterPanel.startOrEndNeeded.text=A start or end date must be specified to use the range filter"}) + "DateFilterPanel.startOrEndNeeded.text=A start or end date must be specified to use the range filter", + "DateFilterPanel.startAfterEnd.text=Start date should be before the end date when both are enabled."}) @Override String checkForError() { if (dateFilterCheckBox.isSelected()) { @@ -292,6 +313,9 @@ class DateFilterPanel extends AbstractDiscoveryFilterPanel { return Bundle.DateFilterPanel_invalidRange_text(); } else if (rangeRadioButton.isSelected() && !(startCheckBox.isSelected() || endCheckBox.isSelected())) { return Bundle.DateFilterPanel_startOrEndNeeded_text(); + } else if (startCheckBox.isSelected() && endCheckBox.isSelected() && startDatePicker.getDate().isAfter(endDatePicker.getDate())) { + //if the dates are equal it will effectively search just that day due to the rounding up of the end date in the getFilter code + return Bundle.DateFilterPanel_startAfterEnd_text(); } } return "";