19 package org.sleuthkit.autopsy.discovery;
21 import javax.swing.DefaultListModel;
22 import javax.swing.JCheckBox;
23 import javax.swing.JLabel;
24 import javax.swing.JList;
31 final class PastOccurrencesFilterPanel
extends AbstractDiscoveryFilterPanel {
33 private static final long serialVersionUID = 1L;
38 PastOccurrencesFilterPanel() {
40 setUpFrequencyFilter();
48 @SuppressWarnings(
"unchecked")
50 private
void initComponents() {
52 pastOccurrencesCheckbox =
new javax.swing.JCheckBox();
53 crFrequencyScrollPane =
new javax.swing.JScrollPane();
54 crFrequencyList =
new javax.swing.JList<>();
56 org.openide.awt.Mnemonics.setLocalizedText(pastOccurrencesCheckbox,
org.openide.util.NbBundle.getMessage(PastOccurrencesFilterPanel.class,
"PastOccurrencesFilterPanel.pastOccurrencesCheckbox.text"));
57 pastOccurrencesCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
58 pastOccurrencesCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
59 pastOccurrencesCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
60 pastOccurrencesCheckbox.addActionListener(
new java.awt.event.ActionListener() {
61 public void actionPerformed(java.awt.event.ActionEvent evt) {
62 pastOccurrencesCheckboxActionPerformed(evt);
66 setMinimumSize(
new java.awt.Dimension(250, 30));
67 setPreferredSize(
new java.awt.Dimension(250, 30));
69 crFrequencyScrollPane.setPreferredSize(
new java.awt.Dimension(27, 27));
71 crFrequencyList.setModel(
new DefaultListModel<Frequency>());
72 crFrequencyList.setEnabled(
false);
73 crFrequencyList.setVisibleRowCount(5);
74 crFrequencyScrollPane.setViewportView(crFrequencyList);
76 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
77 this.setLayout(layout);
78 layout.setHorizontalGroup(
79 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
80 .addComponent(crFrequencyScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
82 layout.setVerticalGroup(
83 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
84 .addGroup(layout.createSequentialGroup()
85 .addComponent(crFrequencyScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
90 private void pastOccurrencesCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
91 crFrequencyList.setEnabled(pastOccurrencesCheckbox.isSelected());
97 private void setUpFrequencyFilter() {
99 DefaultListModel<FileSearchData.Frequency> frequencyListModel = (DefaultListModel<FileSearchData.Frequency>) crFrequencyList.getModel();
100 frequencyListModel.removeAllElements();
101 if (!CentralRepository.isEnabled()) {
102 for (FileSearchData.Frequency freq : FileSearchData.Frequency.getOptionsForFilteringWithoutCr()) {
103 frequencyListModel.add(count, freq);
106 for (FileSearchData.Frequency freq : FileSearchData.Frequency.getOptionsForFilteringWithCr()) {
107 frequencyListModel.add(count, freq);
113 private javax.swing.JList<Frequency> crFrequencyList;
114 private javax.swing.JScrollPane crFrequencyScrollPane;
115 private javax.swing.JCheckBox pastOccurrencesCheckbox;
119 void configurePanel(
boolean selected,
int[] indicesSelected) {
120 pastOccurrencesCheckbox.setSelected(selected);
121 if (pastOccurrencesCheckbox.isEnabled() && pastOccurrencesCheckbox.isSelected()) {
122 crFrequencyScrollPane.setEnabled(
true);
123 crFrequencyList.setEnabled(
true);
124 if (indicesSelected != null) {
125 crFrequencyList.setSelectedIndices(indicesSelected);
128 crFrequencyScrollPane.setEnabled(
false);
129 crFrequencyList.setEnabled(
false);
134 JCheckBox getCheckbox() {
135 return pastOccurrencesCheckbox;
139 JLabel getAdditionalLabel() {
144 String checkForError() {
145 if (pastOccurrencesCheckbox.isSelected() && crFrequencyList.getSelectedValuesList().isEmpty()) {
146 return "At least one value in the past occurrence filter must be selected";
153 return crFrequencyList;
157 FileSearchFiltering.FileFilter getFilter() {
158 if (pastOccurrencesCheckbox.isSelected()) {
159 return new FileSearchFiltering.FrequencyFilter(crFrequencyList.getSelectedValuesList());