Autopsy  4.19.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
SizeFilterPanel.java
Go to the documentation of this file.
1 /*
2  * Autopsy
3  *
4  * Copyright 2020 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.discovery.ui;
20 
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;
32 
36 final class SizeFilterPanel extends AbstractDiscoveryFilterPanel {
37 
38  private static final long serialVersionUID = 1L;
39 
45  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
46  SizeFilterPanel(SearchData.Type type) {
47  initComponents();
48  setUpSizeFilter(type);
49  }
50 
56  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
57  private void initComponents() {
58 
59  sizeCheckbox = new javax.swing.JCheckBox();
60  sizeList = new org.sleuthkit.autopsy.guiutils.CheckBoxListPanel<>();
61 
62  org.openide.awt.Mnemonics.setLocalizedText(sizeCheckbox, org.openide.util.NbBundle.getMessage(SizeFilterPanel.class, "SizeFilterPanel.sizeCheckbox.text")); // NOI18N
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);
71  }
72  });
73 
74  setMinimumSize(new java.awt.Dimension(250, 30));
75  setName(""); // NOI18N
76  setPreferredSize(new java.awt.Dimension(250, 30));
77  setRequestFocusEnabled(false);
78  setLayout(new java.awt.BorderLayout());
79  add(sizeList, java.awt.BorderLayout.CENTER);
80  }// </editor-fold>//GEN-END:initComponents
81 
82  private void sizeCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sizeCheckboxActionPerformed
83  sizeList.setEnabled(sizeCheckbox.isSelected());
84  }//GEN-LAST:event_sizeCheckboxActionPerformed
85 
86 
87  // Variables declaration - do not modify//GEN-BEGIN:variables
88  private javax.swing.JCheckBox sizeCheckbox;
89  private org.sleuthkit.autopsy.guiutils.CheckBoxListPanel<FileSize> sizeList;
90  // End of variables declaration//GEN-END:variables
91 
92  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
93  @Override
94  void configurePanel(boolean selected, List<?> selectedItems) {
95  sizeCheckbox.setSelected(selected);
96  if (sizeCheckbox.isEnabled() && sizeCheckbox.isSelected()) {
97  sizeList.setEnabled(true);
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);
103  }
104  }
105  if (!szList.isEmpty()) {
106  sizeList.setSelectedElements(szList);
107  }
108  }
109  } else {
110  sizeList.setEnabled(false);
111  }
112  }
113 
114  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
115  @Override
116  JCheckBox getCheckbox() {
117  return sizeCheckbox;
118  }
119 
120  @Override
121  JLabel getAdditionalLabel() {
122  return null;
123  }
124 
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);
134  }
135  } else {
136  List<SearchData.FileSize> sizes;
137  switch (fileType) {
138  case VIDEO:
139  sizes = FileSize.getOptionsForVideos();
140  break;
141  case IMAGE:
142  sizes = FileSize.getDefaultSizeOptions();
143  break;
144  case DOCUMENT:
145  sizes = FileSize.getDefaultSizeOptions();
146  break;
147  default:
148  sizes = new ArrayList<>();
149  break;
150  }
151  for (FileSize size : sizes) {
152  sizeList.addElement(size.toString(), null, size);
153  }
154  }
155  }
156 
157  @NbBundle.Messages({"SizeFilterPanel.error.text=At least one size must be selected."})
158  @Override
159  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
160  String checkForError() {
161  if (sizeCheckbox.isSelected() && sizeList.getSelectedElements().isEmpty()) {
162  return Bundle.SizeFilterPanel_error_text();
163  }
164  return "";
165 
166  }
167 
168  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
169  @Override
170  AbstractFilter getFilter() {
171  if (sizeCheckbox.isSelected()) {
172  List<FileSize> fileSizes = sizeList.getSelectedElements();
173  return new SearchFiltering.SizeFilter(fileSizes);
174  }
175  return null;
176  }
177 
178  @Override
179  void addListSelectionListener(ListSelectionListener listener) {
180  sizeList.addListSelectionListener(listener);
181  }
182 
183  @Override
184  boolean isFilterSupported() {
185  return !sizeList.isEmpty();
186  }
187 
188 }

Copyright © 2012-2021 Basis Technology. Generated on: Fri Aug 6 2021
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.