diff --git a/Core/ivy.xml b/Core/ivy.xml index eea67feb19..c2b6142ebc 100755 --- a/Core/ivy.xml +++ b/Core/ivy.xml @@ -22,5 +22,6 @@ + diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index 7c36c61db7..9d3e275ca5 100755 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -6,6 +6,7 @@ file.reference.commons-pool2-2.4.2.jar=release\\modules\\ext\\commons-pool2-2.4. file.reference.jdom-2.0.5-contrib.jar=release/modules/ext/jdom-2.0.5-contrib.jar file.reference.jdom-2.0.5.jar=release/modules/ext/jdom-2.0.5.jar file.reference.jython-standalone-2.7.0.jar=release/modules/ext/jython-standalone-2.7.0.jar +file.reference.LGoodDatePicker-10.3.1.jar=release/modules/ext/LGoodDatePicker-10.3.1.jar file.reference.mchange-commons-java-0.2.9.jar=release/modules/ext/mchange-commons-java-0.2.9.jar file.reference.metadata-extractor-2.9.1.jar=release/modules/ext/metadata-extractor-2.9.1.jar file.reference.postgresql-9.4.1211.jre7.jar=release/modules/ext/postgresql-9.4.1211.jre7.jar @@ -25,10 +26,12 @@ file.reference.curator-recipes-2.8.0.jar=release/modules/ext/curator-recipes-2.8 file.reference.zookeeper-3.4.6.jar=release/modules/ext/zookeeper-3.4.6.jar javac.source=1.8 javac.compilerargs=-Xlint -Xlint:-serial +javadoc.reference.LGoodDatePicker-10.3.1.jar=release/modules/ext/LGoodDatePicker-10.3.1-javadoc.jar license.file=../LICENSE-2.0.txt nbm.homepage=http://www.sleuthkit.org/ nbm.module.author=Brian Carrier nbm.needs.restart=true source.reference.curator-recipes-2.8.0.jar=release/modules/ext/curator-recipes-2.8.0-sources.jar +source.reference.LGoodDatePicker-10.3.1.jar=release/modules/ext/LGoodDatePicker-10.3.1-sources.jar spec.version.base=10.9 diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index 525e6da6a7..0b1523da09 100755 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -332,6 +332,10 @@ ext/tika-core-1.14.jar release/modules/ext/tika-core-1.14.jar + + ext/LGoodDatePicker-10.3.1.jar + release/modules/ext/LGoodDatePicker-10.3.1.jar + ext/Tsk_DataModel_PostgreSQL.jar release/modules/ext/Tsk_DataModel_PostgreSQL.jar diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/Bundle.properties b/Core/src/org/sleuthkit/autopsy/filesearch/Bundle.properties index bb91c8e05c..6d83acae14 100755 --- a/Core/src/org/sleuthkit/autopsy/filesearch/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/filesearch/Bundle.properties @@ -12,11 +12,7 @@ DateSearchPanel.createdCheckBox.text=Created DateSearchPanel.accessedCheckBox.text=Accessed DateSearchPanel.changedCheckBox.text=Changed DateSearchPanel.modifiedCheckBox.text=Modified -DateSearchPanel.dateToButtonCalendar.text= -DateSearchPanel.dateToTextField.text= DateSearchPanel.jLabel1.text=to -DateSearchPanel.dateFromTextField.text= -DateSearchPanel.dateFromButtonCalendar.text= NameSearchPanel.nameCheckBox.text=Name: NameSearchPanel.noteNameLabel.text=*Note: Name match is case insensitive and matches any part of the file name. Regular expressions are not currently supported. NameSearchPanel.searchTextField.text= diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java index 3291c5ae42..64666e66d9 100755 --- a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchFilter.java @@ -82,7 +82,7 @@ class DateSearchFilter extends AbstractFileSearchFilter { // convert the date from the selected timezone to get the GMT long fromDate = 0; - String startDateValue = panel.getDateFromTextField().getText(); + String startDateValue = panel.getFromDate(); Calendar startDate = getCalendarDate(startDateValue); if (!startDateValue.isEmpty()) { if (startDate != null) { @@ -91,7 +91,7 @@ class DateSearchFilter extends AbstractFileSearchFilter { } long toDate = 0; - String endDateValue = panel.getDateToTextField().getText(); + String endDateValue = panel.getToDate(); Calendar endDate = getCalendarDate(endDateValue); if (!endDateValue.isEmpty()) { if (endDate != null) { @@ -199,7 +199,7 @@ class DateSearchFilter extends AbstractFileSearchFilter { @Override public void addActionListener(ActionListener l) { - getComponent().addActionListener(l); + getComponent().addDateChangeListener(); } @Override @@ -210,8 +210,8 @@ class DateSearchFilter extends AbstractFileSearchFilter { public boolean isValid() { DateSearchPanel panel = this.getComponent(); - Calendar startDate = getCalendarDate(panel.getDateFromTextField().getText()); - Calendar endDate = getCalendarDate(panel.getDateToTextField().getText()); + Calendar startDate = getCalendarDate(panel.getFromDate()); + Calendar endDate = getCalendarDate(panel.getToDate()); if ((startDate != null && startDate.after(endDate)) || (endDate != null && endDate.before(startDate))) { setLastError(Bundle.DateSearchFilter_errorMessage_endDateBeforeStartDate()); diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.form b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.form index 59082745da..1912ad3742 100755 --- a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.form +++ b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.form @@ -55,28 +55,11 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -98,27 +81,31 @@ + + + + + + + + + + - - - - - + + - - - - - - - - + + + + + @@ -147,20 +134,6 @@ - - - - - - - - - - - - - - @@ -207,20 +180,6 @@ - - - - - - - - - - - - - - @@ -275,25 +234,21 @@ - + - - - + - - - + + + - + - - - + - - - + + + diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java index b9f490041b..c1ef741233 100755 --- a/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filesearch/DateSearchPanel.java @@ -21,22 +21,25 @@ package org.sleuthkit.autopsy.filesearch; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.DateFormat; -import java.text.ParseException; -import java.util.Date; import java.util.List; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JFormattedTextField; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; +import com.github.lgooddatepicker.components.DatePicker; +import com.github.lgooddatepicker.optionalusertools.PickerUtilities; +import com.github.lgooddatepicker.components.DatePickerSettings; +import com.github.lgooddatepicker.optionalusertools.DateChangeListener; +import com.github.lgooddatepicker.zinternaltools.DateChangeEvent; /** * Subpanel with controls for file data filtering. */ class DateSearchPanel extends javax.swing.JPanel { + private final DatePickerSettings fromDateSettings = new DatePickerSettings(); + private final DatePickerSettings toDateSettings = new DatePickerSettings(); DateFormat dateFormat; List timeZones; @@ -49,10 +52,11 @@ class DateSearchPanel extends javax.swing.JPanel { } private void customizeComponents() { - - dateFromTextField.setComponentPopupMenu(rightClickMenu); - dateToTextField.setComponentPopupMenu(rightClickMenu); - + fromDateSettings.setFormatForDatesCommonEra(PickerUtilities.createFormatterFromPatternString("MM/dd/yyyy", fromDateSettings.getLocale())); + toDateSettings.setFormatForDatesCommonEra(PickerUtilities.createFormatterFromPatternString("MM/dd/yyyy", toDateSettings.getLocale())); + fromDateSettings.setAllowKeyboardEditing(false); + toDateSettings.setAllowKeyboardEditing(false); + ActionListener actList = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -77,41 +81,7 @@ class DateSearchPanel extends javax.swing.JPanel { copyMenuItem.addActionListener(actList); pasteMenuItem.addActionListener(actList); selectAllMenuItem.addActionListener(actList); - this.dateFromTextField.getDocument().addDocumentListener(new DocumentListener() { - @Override - public void insertUpdate(DocumentEvent e) { - firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); - } - - @Override - public void removeUpdate(DocumentEvent e) { - firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); - } - - @Override - public void changedUpdate(DocumentEvent e) { - firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); - } - }); - - this.dateToTextField.getDocument().addDocumentListener(new DocumentListener() { - @Override - public void insertUpdate(DocumentEvent e) { - firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); - } - - @Override - public void removeUpdate(DocumentEvent e) { - firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); - } - - @Override - public void changedUpdate(DocumentEvent e) { - firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); - } - }); - - + this.setComponentsEnabled(); } @@ -131,12 +101,12 @@ class DateSearchPanel extends javax.swing.JPanel { return dateCheckBox; } - JFormattedTextField getDateFromTextField() { - return dateFromTextField; + String getFromDate() { + return fromDatePicker.getText(); } - JFormattedTextField getDateToTextField() { - return dateToTextField; + String getToDate() { + return toDatePicker.getText(); } JCheckBox getModifiedCheckBox() { @@ -157,11 +127,9 @@ class DateSearchPanel extends javax.swing.JPanel { private void setComponentsEnabled() { boolean enable = this.dateCheckBox.isSelected(); - this.dateFromTextField.setEnabled(enable); - this.dateFromButtonCalendar.setEnabled(enable); + this.fromDatePicker.setEnabled(enable); this.jLabel1.setEnabled(enable); - this.dateToTextField.setEnabled(enable); - this.dateToButtonCalendar.setEnabled(enable); + this.toDatePicker.setEnabled(enable); this.jLabel2.setEnabled(enable); this.jLabel3.setEnabled(enable); this.jLabel4.setEnabled(enable); @@ -186,21 +154,19 @@ class DateSearchPanel extends javax.swing.JPanel { copyMenuItem = new javax.swing.JMenuItem(); pasteMenuItem = new javax.swing.JMenuItem(); selectAllMenuItem = new javax.swing.JMenuItem(); - dateToTextField = new JFormattedTextField(this.dateFormat); jLabel1 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); dateCheckBox = new javax.swing.JCheckBox(); timeZoneComboBox = new JComboBox<>(this.timeZones.toArray(new String[this.timeZones.size()])); timeZoneComboBox.setRenderer(new DateSearchFilter.ComboBoxRenderer()); jLabel3 = new javax.swing.JLabel(); - dateFromTextField = new JFormattedTextField(this.dateFormat); jLabel2 = new javax.swing.JLabel(); modifiedCheckBox = new javax.swing.JCheckBox(); changedCheckBox = new javax.swing.JCheckBox(); accessedCheckBox = new javax.swing.JCheckBox(); createdCheckBox = new javax.swing.JCheckBox(); - dateFromButtonCalendar = new org.jbundle.thin.base.screen.jcalendarbutton.JCalendarButton(); - dateToButtonCalendar = new org.jbundle.thin.base.screen.jcalendarbutton.JCalendarButton(); + fromDatePicker = new DatePicker(fromDateSettings); + toDatePicker = new DatePicker(toDateSettings); cutMenuItem.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.cutMenuItem.text")); // NOI18N rightClickMenu.add(cutMenuItem); @@ -214,14 +180,6 @@ class DateSearchPanel extends javax.swing.JPanel { selectAllMenuItem.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.selectAllMenuItem.text")); // NOI18N rightClickMenu.add(selectAllMenuItem); - dateToTextField.setEditable(false); - dateToTextField.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.dateToTextField.text")); // NOI18N - dateToTextField.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - dateToTextFieldFocusLost(evt); - } - }); - jLabel1.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.jLabel1.text")); // NOI18N jLabel4.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.jLabel4.text")); // NOI18N @@ -236,14 +194,6 @@ class DateSearchPanel extends javax.swing.JPanel { jLabel3.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N jLabel3.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.jLabel3.text")); // NOI18N - dateFromTextField.setEditable(false); - dateFromTextField.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.dateFromTextField.text")); // NOI18N - dateFromTextField.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - dateFromTextFieldFocusLost(evt); - } - }); - jLabel2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N jLabel2.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.jLabel2.text")); // NOI18N @@ -279,44 +229,20 @@ class DateSearchPanel extends javax.swing.JPanel { } }); - dateFromButtonCalendar.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.dateFromButtonCalendar.text")); // NOI18N - dateFromButtonCalendar.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - dateFromPopupChanged(evt); - } - }); + fromDatePicker.setAutoscrolls(true); - dateToButtonCalendar.setText(org.openide.util.NbBundle.getMessage(DateSearchPanel.class, "DateSearchPanel.dateToButtonCalendar.text")); // NOI18N - dateToButtonCalendar.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - dateToPopupChanged(evt); - } - }); + toDatePicker.setAutoscrolls(true); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(layout.createSequentialGroup() - .addComponent(dateCheckBox) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(dateFromTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, 0) - .addComponent(dateFromButtonCalendar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jLabel1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(dateToTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, 0) - .addComponent(dateToButtonCalendar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap() - .addComponent(jLabel2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel3))) - .addContainerGap(26, Short.MAX_VALUE)) + .addContainerGap() + .addComponent(jLabel2) + .addGap(18, 18, 18) + .addComponent(jLabel3) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -333,23 +259,28 @@ class DateSearchPanel extends javax.swing.JPanel { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(changedCheckBox))) .addGap(33, 33, 33)) + .addGroup(layout.createSequentialGroup() + .addComponent(dateCheckBox) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(fromDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(10, 10, 10) + .addComponent(toDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(dateCheckBox) - .addComponent(dateFromTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(dateCheckBox) .addGap(18, 18, 18)) .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(dateToButtonCalendar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel1) - .addComponent(dateToTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(dateFromButtonCalendar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel1) + .addComponent(fromDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(toDatePicker, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) @@ -369,45 +300,6 @@ class DateSearchPanel extends javax.swing.JPanel { ); }// //GEN-END:initComponents - private void dateFromTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_dateFromTextFieldFocusLost - // set the "from" calendar button to listen to change in the text field - String fromDateString = this.dateFromTextField.getText(); - if (!fromDateString.equals("")) { - try { - Date fromDate = dateFormat.parse(fromDateString); - dateFromButtonCalendar.setTargetDate(fromDate); - } catch (ParseException ex) { - // for now, no need to show the error message to the user her - } - } - }//GEN-LAST:event_dateFromTextFieldFocusLost - - private void dateToTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_dateToTextFieldFocusLost - // set the "to" calendar button to listen to change in the text field - String toDateString = this.dateToTextField.getText(); - if (!toDateString.equals("")) { - try { - Date toDate = dateFormat.parse(toDateString); - dateToButtonCalendar.setTargetDate(toDate); - } catch (ParseException ex) { - // for now, no need to show the error message to the user here - } - } - }//GEN-LAST:event_dateToTextFieldFocusLost - - private void dateFromPopupChanged(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_dateFromPopupChanged - if (evt.getNewValue() instanceof Date) { - setFromDate((Date) evt.getNewValue()); - } - }//GEN-LAST:event_dateFromPopupChanged - - private void dateToPopupChanged(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_dateToPopupChanged - if (evt.getNewValue() instanceof Date) { - setToDate((Date) evt.getNewValue()); - } - - }//GEN-LAST:event_dateToPopupChanged - private void dateCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dateCheckBoxActionPerformed this.setComponentsEnabled(); firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); @@ -428,36 +320,6 @@ class DateSearchPanel extends javax.swing.JPanel { private void changedCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_changedCheckBoxActionPerformed firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); }//GEN-LAST:event_changedCheckBoxActionPerformed - - /** - * Validate and set the datetime field on the screen given a datetime - * string. - * - * @param date The date object - */ - private void setFromDate(Date date) { - String dateStringResult = ""; - if (date != null) { - dateStringResult = dateFormat.format(date); - } - - dateFromTextField.setText(dateStringResult); - dateFromButtonCalendar.setTargetDate(date); - } - - /** - * Validate and set the datetime field on the screen given a date. - * - * @param date The date object - */ - private void setToDate(Date date) { - String dateStringResult = ""; - if (date != null) { - dateStringResult = dateFormat.format(date); - } - dateToTextField.setText(dateStringResult); - dateToButtonCalendar.setTargetDate(date); - } boolean isValidSearch() { return this.accessedCheckBox.isSelected() || @@ -472,10 +334,7 @@ class DateSearchPanel extends javax.swing.JPanel { private javax.swing.JCheckBox createdCheckBox; private javax.swing.JMenuItem cutMenuItem; private javax.swing.JCheckBox dateCheckBox; - private org.jbundle.thin.base.screen.jcalendarbutton.JCalendarButton dateFromButtonCalendar; - private javax.swing.JFormattedTextField dateFromTextField; - private org.jbundle.thin.base.screen.jcalendarbutton.JCalendarButton dateToButtonCalendar; - private javax.swing.JFormattedTextField dateToTextField; + private com.github.lgooddatepicker.components.DatePicker fromDatePicker; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; @@ -485,10 +344,17 @@ class DateSearchPanel extends javax.swing.JPanel { private javax.swing.JPopupMenu rightClickMenu; private javax.swing.JMenuItem selectAllMenuItem; private javax.swing.JComboBox timeZoneComboBox; + private com.github.lgooddatepicker.components.DatePicker toDatePicker; // End of variables declaration//GEN-END:variables - void addActionListener(ActionListener l) { - dateFromTextField.addActionListener(l); - dateToTextField.addActionListener(l); + void addDateChangeListener() { + DateChangeListener dcl = (DateChangeEvent event) -> { + firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null); + }; + + fromDatePicker.addDateChangeListener(dcl); + toDatePicker.addDateChangeListener(dcl); } + } +