19 package org.sleuthkit.autopsy.discovery.ui;
21 import java.util.ArrayList;
22 import java.util.List;
23 import javax.swing.JCheckBox;
24 import javax.swing.JLabel;
25 import javax.swing.event.ListSelectionListener;
26 import org.openide.util.NbBundle;
37 final class PastOccurrencesFilterPanel
extends AbstractDiscoveryFilterPanel {
39 private static final long serialVersionUID = 1L;
40 private final Type type;
45 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
46 PastOccurrencesFilterPanel(Type type) {
49 setUpFrequencyFilter();
59 private void initComponents() {
61 pastOccurrencesCheckbox =
new javax.swing.JCheckBox();
64 org.openide.awt.Mnemonics.setLocalizedText(pastOccurrencesCheckbox,
org.openide.util.NbBundle.getMessage(PastOccurrencesFilterPanel.class,
"PastOccurrencesFilterPanel.pastOccurrencesCheckbox.text"));
65 pastOccurrencesCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
66 pastOccurrencesCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
67 pastOccurrencesCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
68 pastOccurrencesCheckbox.addActionListener(
new java.awt.event.ActionListener() {
69 public void actionPerformed(java.awt.event.ActionEvent evt) {
70 pastOccurrencesCheckboxActionPerformed(evt);
74 setMinimumSize(
new java.awt.Dimension(250, 30));
75 setPreferredSize(
new java.awt.Dimension(250, 30));
76 setLayout(
new java.awt.BorderLayout());
77 add(crFrequencyList, java.awt.BorderLayout.CENTER);
80 private void pastOccurrencesCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
81 crFrequencyList.setEnabled(pastOccurrencesCheckbox.isSelected());
87 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
88 private
void setUpFrequencyFilter() {
89 crFrequencyList.clearList();
90 if (!CentralRepository.isEnabled()) {
91 if (type != Type.DOMAIN) {
92 for (SearchData.Frequency freq : SearchData.Frequency.getOptionsForFilteringWithoutCr()) {
93 crFrequencyList.addElement(freq.toString(), null, freq);
97 for (SearchData.Frequency freq : SearchData.Frequency.getOptionsForFilteringWithCr()) {
98 if (type != Type.DOMAIN || freq != SearchData.Frequency.KNOWN) {
99 crFrequencyList.addElement(freq.toString(), null, freq);
107 private javax.swing.JCheckBox pastOccurrencesCheckbox;
110 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
112 void configurePanel(
boolean selected, List<?> selectedItems) {
113 boolean canBeFilteredOn = type != Type.DOMAIN || CentralRepository.isEnabled();
114 pastOccurrencesCheckbox.
setEnabled(canBeFilteredOn);
115 pastOccurrencesCheckbox.setSelected(selected && canBeFilteredOn);
117 if (pastOccurrencesCheckbox.isEnabled() && pastOccurrencesCheckbox.isSelected()) {
118 crFrequencyList.setEnabled(
true);
119 if (selectedItems != null) {
120 List<SearchData.Frequency> frequencyList =
new ArrayList<>();
121 for (Object item : selectedItems) {
122 if (item instanceof SearchData.Frequency) {
123 frequencyList.add((SearchData.Frequency) item);
126 if (!frequencyList.isEmpty()) {
127 crFrequencyList.setSelectedElements(frequencyList);
131 crFrequencyList.setEnabled(
false);
135 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
137 JCheckBox getCheckbox() {
138 return pastOccurrencesCheckbox;
142 JLabel getAdditionalLabel() {
146 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
147 @NbBundle.Messages({
"PastOccurrencesFilterPanel.error.text=At least one value in the past occurrence filter must be selected."})
149 String checkForError() {
150 if (pastOccurrencesCheckbox.isSelected() && crFrequencyList.getSelectedElements().isEmpty()) {
151 return Bundle.PastOccurrencesFilterPanel_error_text();
156 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
158 AbstractFilter getFilter() {
159 if (pastOccurrencesCheckbox.isSelected()) {
160 List<SearchData.Frequency> frequencies = crFrequencyList.getSelectedElements();
161 return new SearchFiltering.FrequencyFilter(frequencies);
167 void addListSelectionListener(ListSelectionListener listener) {
168 crFrequencyList.addListSelectionListener(listener);
172 boolean isFilterSupported() {
173 return !crFrequencyList.isEmpty();
void setEnabled(boolean enabled)