19 package org.sleuthkit.autopsy.discovery.ui;
22 import java.util.ArrayList;
23 import java.util.List;
24 import javax.swing.DefaultListModel;
25 import javax.swing.JCheckBox;
26 import javax.swing.JLabel;
27 import javax.swing.JList;
28 import org.openide.util.NbBundle;
37 final class SizeFilterPanel
extends AbstractDiscoveryFilterPanel {
39 private static final long serialVersionUID = 1L;
46 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
47 SizeFilterPanel(SearchData.Type type) {
49 setUpSizeFilter(type);
57 @SuppressWarnings(
"unchecked")
59 private
void initComponents() {
61 sizeCheckbox =
new javax.swing.JCheckBox();
62 sizeScrollPane =
new javax.swing.JScrollPane();
63 sizeList =
new javax.swing.JList<>();
65 org.openide.awt.Mnemonics.setLocalizedText(sizeCheckbox,
org.openide.util.NbBundle.getMessage(SizeFilterPanel.class,
"SizeFilterPanel.sizeCheckbox.text"));
66 sizeCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
67 sizeCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
68 sizeCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
69 sizeCheckbox.setVerticalAlignment(javax.swing.SwingConstants.TOP);
70 sizeCheckbox.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
71 sizeCheckbox.addActionListener(
new java.awt.event.ActionListener() {
72 public void actionPerformed(java.awt.event.ActionEvent evt) {
73 sizeCheckboxActionPerformed(evt);
77 setMinimumSize(
new java.awt.Dimension(250, 30));
79 setPreferredSize(
new java.awt.Dimension(250, 30));
81 sizeScrollPane.setPreferredSize(
new java.awt.Dimension(27, 27));
83 sizeList.setModel(
new DefaultListModel<FileSize>());
84 sizeList.setEnabled(
false);
85 sizeList.setMaximumSize(
new java.awt.Dimension(32767, 32767));
86 sizeList.setVisibleRowCount(5);
87 sizeScrollPane.setViewportView(sizeList);
89 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
90 this.setLayout(layout);
91 layout.setHorizontalGroup(
92 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
93 .addComponent(sizeScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
95 layout.setVerticalGroup(
96 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
97 .addGroup(layout.createSequentialGroup()
98 .addComponent(sizeScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
103 private void sizeCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
104 sizeList.setEnabled(sizeCheckbox.isSelected());
109 private javax.swing.JCheckBox sizeCheckbox;
110 private javax.swing.JList<FileSize> sizeList;
111 private javax.swing.JScrollPane sizeScrollPane;
114 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
116 void configurePanel(
boolean selected,
int[] indicesSelected) {
117 sizeCheckbox.setSelected(selected);
118 if (sizeCheckbox.isEnabled() && sizeCheckbox.isSelected()) {
119 sizeScrollPane.setEnabled(
true);
120 sizeList.setEnabled(
true);
121 if (indicesSelected != null) {
122 sizeList.setSelectedIndices(indicesSelected);
125 sizeScrollPane.setEnabled(
false);
126 sizeList.setEnabled(
false);
130 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
132 JCheckBox getCheckbox() {
137 JLabel getAdditionalLabel() {
144 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
145 private
void setUpSizeFilter(SearchData.Type fileType) {
147 DefaultListModel<FileSize> sizeListModel = (DefaultListModel<FileSize>) sizeList.getModel();
148 sizeListModel.removeAllElements();
149 if (null == fileType) {
150 for (FileSize size : FileSize.values()) {
151 sizeListModel.add(count, size);
154 List<SearchData.FileSize> sizes;
157 sizes = FileSize.getOptionsForVideos();
160 sizes = FileSize.getDefaultSizeOptions();
163 sizes = FileSize.getDefaultSizeOptions();
166 sizes =
new ArrayList<>();
169 for (FileSize size : sizes) {
170 sizeListModel.add(count, size);
175 @NbBundle.Messages({
"SizeFilterPanel.error.text=At least one size must be selected."})
177 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
178 String checkForError() {
179 if (sizeCheckbox.isSelected() && sizeList.getSelectedValuesList().isEmpty()) {
180 return Bundle.SizeFilterPanel_error_text();
186 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
192 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
194 AbstractFilter getFilter() {
195 if (sizeCheckbox.isSelected()) {
196 return new SearchFiltering.SizeFilter(sizeList.getSelectedValuesList());