6714 fix listener, validation, and enabling of filters

This commit is contained in:
William Schaefer
2020-09-03 09:55:02 -04:00
parent 530d8f2975
commit 47453a5b89
7 changed files with 89 additions and 34 deletions
@@ -8,6 +8,9 @@
<ResourceString bundle="org/sleuthkit/autopsy/discovery/ui/Bundle.properties" key="ArtifactTypeFilterPanel.artifactTypeCheckbox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="artifactTypeCheckboxActionPerformed"/>
</Events>
</Component>
</NonVisualComponents>
<Properties>
@@ -49,7 +52,7 @@
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JList" name="jList1">
<Component class="javax.swing.JList" name="artifactList">
<Properties>
<Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
<Connection code="new DefaultListModel&lt;ArtifactTypeItem&gt;()" type="code"/>
@@ -47,7 +47,7 @@ class ArtifactTypeFilterPanel extends AbstractDiscoveryFilterPanel {
*/
private void setUpArtifactTypeFilter() {
int count = 0;
DefaultListModel<ArtifactTypeItem> artifactTypeModel = (DefaultListModel<ArtifactTypeItem>) jList1.getModel();
DefaultListModel<ArtifactTypeItem> artifactTypeModel = (DefaultListModel<ArtifactTypeItem>) 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<ArtifactTypeItem>());
jList1.setEnabled(false);
artifactTypeScrollPane.setViewportView(jList1);
artifactList.setModel(new DefaultListModel<ArtifactTypeItem>());
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 {
);
}// </editor-fold>//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<ArtifactTypeItem> artifactList;
private javax.swing.JCheckBox artifactTypeCheckbox;
private javax.swing.JScrollPane artifactTypeScrollPane;
private javax.swing.JList<ArtifactTypeItem> jList1;
// End of variables declaration//GEN-END:variables
}
@@ -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:
@@ -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
@@ -10,6 +10,9 @@
<ResourceString bundle="org/sleuthkit/autopsy/discovery/ui/Bundle.properties" key="DateFilterPanel.dateFilterCheckbox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="dateFilterCheckboxActionPerformed"/>
</Events>
</Component>
</NonVisualComponents>
<AuxValues>
@@ -51,7 +54,7 @@
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="mostRecentButton" min="-2" pref="90" max="-2" attributes="0"/>
<Component id="mostRecentRadioButton" min="-2" pref="90" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="daysSpinner" min="-2" pref="80" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
@@ -76,7 +79,7 @@
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<Group type="103" groupAlignment="3" attributes="0">
<Component id="mostRecentButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="mostRecentRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="daysSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="daysLabel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
@@ -104,6 +107,9 @@
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[75, 26]"/>
</Property>
<Property name="value" type="java.lang.Object" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
<Connection code="7" type="code"/>
</Property>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new javax.swing.JSpinner(numberModel)"/>
@@ -117,18 +123,18 @@
<Property name="enabled" type="boolean" value="false"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="mostRecentButton">
<Component class="javax.swing.JRadioButton" name="mostRecentRadioButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="buttonGroup1"/>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="org/sleuthkit/autopsy/discovery/ui/Bundle.properties" key="DateFilterPanel.mostRecentButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
<ResourceString bundle="org/sleuthkit/autopsy/discovery/ui/Bundle.properties" key="DateFilterPanel.mostRecentRadioButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
<Property name="enabled" type="boolean" value="false"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mostRecentButtonActionPerformed"/>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mostRecentRadioButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JCheckBox" name="startCheckBox">
@@ -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;
@@ -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();