Autopsy  4.17.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.DefaultListModel;
25 import javax.swing.JCheckBox;
26 import javax.swing.JLabel;
27 import javax.swing.JList;
28 import org.openide.util.NbBundle;
33 
37 final class SizeFilterPanel extends AbstractDiscoveryFilterPanel {
38 
39  private static final long serialVersionUID = 1L;
40 
46  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
47  SizeFilterPanel(SearchData.Type type) {
48  initComponents();
49  setUpSizeFilter(type);
50  }
51 
57  @SuppressWarnings("unchecked")
58  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
59  private void initComponents() {
60 
61  sizeCheckbox = new javax.swing.JCheckBox();
62  sizeScrollPane = new javax.swing.JScrollPane();
63  sizeList = new javax.swing.JList<>();
64 
65  org.openide.awt.Mnemonics.setLocalizedText(sizeCheckbox, org.openide.util.NbBundle.getMessage(SizeFilterPanel.class, "SizeFilterPanel.sizeCheckbox.text")); // NOI18N
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);
74  }
75  });
76 
77  setMinimumSize(new java.awt.Dimension(250, 30));
78  setName(""); // NOI18N
79  setPreferredSize(new java.awt.Dimension(250, 30));
80 
81  sizeScrollPane.setPreferredSize(new java.awt.Dimension(27, 27));
82 
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);
88 
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)
94  );
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)
99  .addGap(0, 0, 0))
100  );
101  }// </editor-fold>//GEN-END:initComponents
102 
103  private void sizeCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sizeCheckboxActionPerformed
104  sizeList.setEnabled(sizeCheckbox.isSelected());
105  }//GEN-LAST:event_sizeCheckboxActionPerformed
106 
107 
108  // Variables declaration - do not modify//GEN-BEGIN:variables
109  private javax.swing.JCheckBox sizeCheckbox;
110  private javax.swing.JList<FileSize> sizeList;
111  private javax.swing.JScrollPane sizeScrollPane;
112  // End of variables declaration//GEN-END:variables
113 
114  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
115  @Override
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);
123  }
124  } else {
125  sizeScrollPane.setEnabled(false);
126  sizeList.setEnabled(false);
127  }
128  }
129 
130  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
131  @Override
132  JCheckBox getCheckbox() {
133  return sizeCheckbox;
134  }
135 
136  @Override
137  JLabel getAdditionalLabel() {
138  return null;
139  }
140 
144  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
145  private void setUpSizeFilter(SearchData.Type fileType) {
146  int count = 0;
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);
152  }
153  } else {
154  List<SearchData.FileSize> sizes;
155  switch (fileType) {
156  case VIDEO:
157  sizes = FileSize.getOptionsForVideos();
158  break;
159  case IMAGE:
160  sizes = FileSize.getDefaultSizeOptions();
161  break;
162  case DOCUMENT:
163  sizes = FileSize.getDefaultSizeOptions();
164  break;
165  default:
166  sizes = new ArrayList<>();
167  break;
168  }
169  for (FileSize size : sizes) {
170  sizeListModel.add(count, size);
171  }
172  }
173  }
174 
175  @NbBundle.Messages({"SizeFilterPanel.error.text=At least one size must be selected."})
176  @Override
177  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
178  String checkForError() {
179  if (sizeCheckbox.isSelected() && sizeList.getSelectedValuesList().isEmpty()) {
180  return Bundle.SizeFilterPanel_error_text();
181  }
182  return "";
183 
184  }
185 
186  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
187  @Override
188  JList<?> getList() {
189  return sizeList;
190  }
191 
192  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
193  @Override
194  AbstractFilter getFilter() {
195  if (sizeCheckbox.isSelected()) {
196  return new SearchFiltering.SizeFilter(sizeList.getSelectedValuesList());
197  }
198  return null;
199  }
200 }

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