19 package org.sleuthkit.autopsy.discovery.ui;
22 import java.util.ArrayList;
23 import java.util.List;
24 import javax.swing.JCheckBox;
25 import javax.swing.JLabel;
26 import javax.swing.event.ListSelectionListener;
27 import org.openide.util.NbBundle;
36 final class SizeFilterPanel
extends AbstractDiscoveryFilterPanel {
38 private static final long serialVersionUID = 1L;
45 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
46 SizeFilterPanel(SearchData.Type type) {
48 setUpSizeFilter(type);
57 private void initComponents() {
59 sizeCheckbox =
new javax.swing.JCheckBox();
62 org.openide.awt.Mnemonics.setLocalizedText(sizeCheckbox,
org.openide.util.NbBundle.getMessage(SizeFilterPanel.class,
"SizeFilterPanel.sizeCheckbox.text"));
63 sizeCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
64 sizeCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
65 sizeCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
66 sizeCheckbox.setVerticalAlignment(javax.swing.SwingConstants.TOP);
67 sizeCheckbox.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
68 sizeCheckbox.addActionListener(
new java.awt.event.ActionListener() {
69 public void actionPerformed(java.awt.event.ActionEvent evt) {
70 sizeCheckboxActionPerformed(evt);
74 setMinimumSize(
new java.awt.Dimension(250, 30));
76 setPreferredSize(
new java.awt.Dimension(250, 30));
77 setRequestFocusEnabled(
false);
78 setLayout(
new java.awt.BorderLayout());
79 add(sizeList, java.awt.BorderLayout.CENTER);
82 private void sizeCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
83 sizeList.setEnabled(sizeCheckbox.isSelected());
88 private javax.swing.JCheckBox sizeCheckbox;
92 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
94 void configurePanel(
boolean selected, List<?> selectedItems) {
95 sizeCheckbox.setSelected(selected);
96 if (sizeCheckbox.isEnabled() && sizeCheckbox.isSelected()) {
98 if (selectedItems != null) {
99 List<SearchData.FileSize> szList =
new ArrayList<>();
100 for (Object item : selectedItems) {
101 if (item instanceof SearchData.FileSize) {
102 szList.add((SearchData.FileSize) item);
105 if (!szList.isEmpty()) {
106 sizeList.setSelectedElements(szList);
110 sizeList.setEnabled(
false);
114 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
116 JCheckBox getCheckbox() {
121 JLabel getAdditionalLabel() {
128 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
129 private
void setUpSizeFilter(SearchData.Type fileType) {
130 sizeList.clearList();
131 if (null == fileType) {
132 for (FileSize size : FileSize.values()) {
133 sizeList.addElement(size.toString(), null, size);
136 List<SearchData.FileSize> sizes;
139 sizes = FileSize.getOptionsForVideos();
142 sizes = FileSize.getDefaultSizeOptions();
145 sizes = FileSize.getDefaultSizeOptions();
148 sizes =
new ArrayList<>();
151 for (FileSize size : sizes) {
152 sizeList.addElement(size.toString(), null, size);
157 @NbBundle.Messages({
"SizeFilterPanel.error.text=At least one size must be selected."})
159 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
160 String checkForError() {
161 if (sizeCheckbox.isSelected() && sizeList.getSelectedElements().isEmpty()) {
162 return Bundle.SizeFilterPanel_error_text();
168 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
170 AbstractFilter getFilter() {
171 if (sizeCheckbox.isSelected()) {
172 List<FileSize> fileSizes = sizeList.getSelectedElements();
173 return new SearchFiltering.SizeFilter(fileSizes);
179 void addListSelectionListener(ListSelectionListener listener) {
180 sizeList.addListSelectionListener(listener);
184 boolean isFilterSupported() {
185 return !sizeList.isEmpty();
void setEnabled(boolean enabled)