19 package org.sleuthkit.autopsy.discovery.ui;
21 import javax.swing.DefaultListModel;
22 import javax.swing.JCheckBox;
23 import javax.swing.JLabel;
24 import javax.swing.JList;
25 import org.openide.util.NbBundle;
36 final class PastOccurrencesFilterPanel
extends AbstractDiscoveryFilterPanel {
38 private static final long serialVersionUID = 1L;
39 private final Type type;
44 PastOccurrencesFilterPanel(Type type) {
47 setUpFrequencyFilter();
55 @SuppressWarnings(
"unchecked")
57 private
void initComponents() {
59 pastOccurrencesCheckbox =
new javax.swing.JCheckBox();
60 crFrequencyScrollPane =
new javax.swing.JScrollPane();
61 crFrequencyList =
new javax.swing.JList<>();
63 org.openide.awt.Mnemonics.setLocalizedText(pastOccurrencesCheckbox,
org.openide.util.NbBundle.getMessage(PastOccurrencesFilterPanel.class,
"PastOccurrencesFilterPanel.pastOccurrencesCheckbox.text"));
64 pastOccurrencesCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
65 pastOccurrencesCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
66 pastOccurrencesCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
67 pastOccurrencesCheckbox.addActionListener(
new java.awt.event.ActionListener() {
68 public void actionPerformed(java.awt.event.ActionEvent evt) {
69 pastOccurrencesCheckboxActionPerformed(evt);
73 setMinimumSize(
new java.awt.Dimension(250, 30));
74 setPreferredSize(
new java.awt.Dimension(250, 30));
76 crFrequencyScrollPane.setPreferredSize(
new java.awt.Dimension(27, 27));
78 crFrequencyList.setModel(
new DefaultListModel<Frequency>());
79 crFrequencyList.setEnabled(
false);
80 crFrequencyList.setVisibleRowCount(5);
81 crFrequencyScrollPane.setViewportView(crFrequencyList);
83 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
84 this.setLayout(layout);
85 layout.setHorizontalGroup(
86 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
87 .addComponent(crFrequencyScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
89 layout.setVerticalGroup(
90 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
91 .addGroup(layout.createSequentialGroup()
92 .addComponent(crFrequencyScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
97 private void pastOccurrencesCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
98 crFrequencyList.setEnabled(pastOccurrencesCheckbox.isSelected());
104 private void setUpFrequencyFilter() {
106 DefaultListModel<SearchData.Frequency> frequencyListModel = (DefaultListModel<SearchData.Frequency>) crFrequencyList.getModel();
107 frequencyListModel.removeAllElements();
108 if (!CentralRepository.isEnabled()) {
109 if (type != Type.DOMAIN) {
110 for (SearchData.Frequency freq : SearchData.Frequency.getOptionsForFilteringWithoutCr()) {
111 frequencyListModel.add(count, freq);
115 for (SearchData.Frequency freq : SearchData.Frequency.getOptionsForFilteringWithCr()) {
116 if (type != Type.DOMAIN || freq != SearchData.Frequency.KNOWN) {
117 frequencyListModel.add(count, freq);
124 private javax.swing.JList<Frequency> crFrequencyList;
125 private javax.swing.JScrollPane crFrequencyScrollPane;
126 private javax.swing.JCheckBox pastOccurrencesCheckbox;
130 void configurePanel(
boolean selected,
int[] indicesSelected) {
131 boolean canBeFilteredOn = type != Type.DOMAIN || CentralRepository.isEnabled();
132 pastOccurrencesCheckbox.setEnabled(canBeFilteredOn);
133 pastOccurrencesCheckbox.setSelected(selected && canBeFilteredOn);
135 if (pastOccurrencesCheckbox.isEnabled() && pastOccurrencesCheckbox.isSelected()) {
136 crFrequencyScrollPane.setEnabled(
true);
137 crFrequencyList.setEnabled(
true);
138 if (indicesSelected != null) {
139 crFrequencyList.setSelectedIndices(indicesSelected);
142 crFrequencyScrollPane.setEnabled(
false);
143 crFrequencyList.setEnabled(
false);
148 JCheckBox getCheckbox() {
149 return pastOccurrencesCheckbox;
153 JLabel getAdditionalLabel() {
157 @NbBundle.Messages({
"PastOccurrencesFilterPanel.error.text=At least one value in the past occurrence filter must be selected."})
159 String checkForError() {
160 if (pastOccurrencesCheckbox.isSelected() && crFrequencyList.getSelectedValuesList().isEmpty()) {
161 return Bundle.PastOccurrencesFilterPanel_error_text();
168 return crFrequencyList;
172 AbstractFilter getFilter() {
173 if (pastOccurrencesCheckbox.isSelected()) {
174 return new SearchFiltering.FrequencyFilter(crFrequencyList.getSelectedValuesList());