19 package org.sleuthkit.autopsy.discovery;
21 import java.util.ArrayList;
22 import java.util.List;
23 import javax.swing.DefaultListModel;
24 import javax.swing.JCheckBox;
25 import javax.swing.JLabel;
26 import javax.swing.JList;
32 final class SizeFilterPanel
extends AbstractDiscoveryFilterPanel {
34 private static final long serialVersionUID = 1L;
41 SizeFilterPanel(FileSearchData.FileType type) {
43 setUpSizeFilter(type);
51 @SuppressWarnings(
"unchecked")
53 private
void initComponents() {
55 sizeCheckbox =
new javax.swing.JCheckBox();
56 sizeScrollPane =
new javax.swing.JScrollPane();
57 sizeList =
new javax.swing.JList<>();
59 org.openide.awt.Mnemonics.setLocalizedText(sizeCheckbox,
org.openide.util.NbBundle.getMessage(SizeFilterPanel.class,
"SizeFilterPanel.sizeCheckbox.text"));
60 sizeCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
61 sizeCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
62 sizeCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
63 sizeCheckbox.setVerticalAlignment(javax.swing.SwingConstants.TOP);
64 sizeCheckbox.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
65 sizeCheckbox.addActionListener(
new java.awt.event.ActionListener() {
66 public void actionPerformed(java.awt.event.ActionEvent evt) {
67 sizeCheckboxActionPerformed(evt);
71 setMinimumSize(
new java.awt.Dimension(250, 30));
73 setPreferredSize(
new java.awt.Dimension(250, 30));
75 sizeScrollPane.setPreferredSize(
new java.awt.Dimension(27, 27));
77 sizeList.setModel(
new DefaultListModel<FileSize>());
78 sizeList.setEnabled(
false);
79 sizeList.setMaximumSize(
new java.awt.Dimension(32767, 32767));
80 sizeList.setVisibleRowCount(5);
81 sizeScrollPane.setViewportView(sizeList);
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(sizeScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
89 layout.setVerticalGroup(
90 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
91 .addGroup(layout.createSequentialGroup()
92 .addComponent(sizeScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
97 private void sizeCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
98 sizeList.setEnabled(sizeCheckbox.isSelected());
103 private javax.swing.JCheckBox sizeCheckbox;
104 private javax.swing.JList<FileSize> sizeList;
105 private javax.swing.JScrollPane sizeScrollPane;
109 void configurePanel(
boolean selected,
int[] indicesSelected) {
110 sizeCheckbox.setSelected(selected);
111 if (sizeCheckbox.isEnabled() && sizeCheckbox.isSelected()) {
112 sizeScrollPane.setEnabled(
true);
113 sizeList.setEnabled(
true);
114 if (indicesSelected != null) {
115 sizeList.setSelectedIndices(indicesSelected);
118 sizeScrollPane.setEnabled(
false);
119 sizeList.setEnabled(
false);
124 JCheckBox getCheckbox() {
129 JLabel getAdditionalLabel() {
136 private void setUpSizeFilter(FileSearchData.FileType fileType) {
138 DefaultListModel<FileSize> sizeListModel = (DefaultListModel<FileSize>) sizeList.getModel();
139 sizeListModel.removeAllElements();
140 if (null == fileType) {
141 for (FileSize size : FileSize.values()) {
142 sizeListModel.add(count, size);
145 List<FileSearchData.FileSize> sizes;
148 sizes = FileSize.getOptionsForVideos();
151 sizes = FileSize.getDefaultSizeOptions();
154 sizes = FileSize.getDefaultSizeOptions();
157 sizes =
new ArrayList<>();
160 for (FileSize size : sizes) {
161 sizeListModel.add(count, size);
167 String checkForError() {
168 if (sizeCheckbox.isSelected() && sizeList.getSelectedValuesList().isEmpty()) {
169 return "At least one size must be selected";
181 FileSearchFiltering.FileFilter getFilter() {
182 if (sizeCheckbox.isSelected()) {
183 return new FileSearchFiltering.SizeFilter(sizeList.getSelectedValuesList());