Autopsy  4.15.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;
20 
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;
28 
32 final class SizeFilterPanel extends AbstractDiscoveryFilterPanel {
33 
34  private static final long serialVersionUID = 1L;
35 
41  SizeFilterPanel(FileSearchData.FileType type) {
42  initComponents();
43  setUpSizeFilter(type);
44  }
45 
51  @SuppressWarnings("unchecked")
52  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
53  private void initComponents() {
54 
55  sizeCheckbox = new javax.swing.JCheckBox();
56  sizeScrollPane = new javax.swing.JScrollPane();
57  sizeList = new javax.swing.JList<>();
58 
59  org.openide.awt.Mnemonics.setLocalizedText(sizeCheckbox, org.openide.util.NbBundle.getMessage(SizeFilterPanel.class, "SizeFilterPanel.sizeCheckbox.text")); // NOI18N
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);
68  }
69  });
70 
71  setMinimumSize(new java.awt.Dimension(250, 30));
72  setName(""); // NOI18N
73  setPreferredSize(new java.awt.Dimension(250, 30));
74 
75  sizeScrollPane.setPreferredSize(new java.awt.Dimension(27, 27));
76 
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);
82 
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)
88  );
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)
93  .addGap(0, 0, 0))
94  );
95  }// </editor-fold>//GEN-END:initComponents
96 
97  private void sizeCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sizeCheckboxActionPerformed
98  sizeList.setEnabled(sizeCheckbox.isSelected());
99  }//GEN-LAST:event_sizeCheckboxActionPerformed
100 
101 
102  // Variables declaration - do not modify//GEN-BEGIN:variables
103  private javax.swing.JCheckBox sizeCheckbox;
104  private javax.swing.JList<FileSize> sizeList;
105  private javax.swing.JScrollPane sizeScrollPane;
106  // End of variables declaration//GEN-END:variables
107 
108  @Override
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);
116  }
117  } else {
118  sizeScrollPane.setEnabled(false);
119  sizeList.setEnabled(false);
120  }
121  }
122 
123  @Override
124  JCheckBox getCheckbox() {
125  return sizeCheckbox;
126  }
127 
128  @Override
129  JLabel getAdditionalLabel() {
130  return null;
131  }
132 
136  private void setUpSizeFilter(FileSearchData.FileType fileType) {
137  int count = 0;
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);
143  }
144  } else {
145  List<FileSearchData.FileSize> sizes;
146  switch (fileType) {
147  case VIDEO:
148  sizes = FileSize.getOptionsForVideos();
149  break;
150  case IMAGE:
151  sizes = FileSize.getDefaultSizeOptions();
152  break;
153  case DOCUMENTS:
154  sizes = FileSize.getDefaultSizeOptions();
155  break;
156  default:
157  sizes = new ArrayList<>();
158  break;
159  }
160  for (FileSize size : sizes) {
161  sizeListModel.add(count, size);
162  }
163  }
164  }
165 
166  @Override
167  String checkForError() {
168  if (sizeCheckbox.isSelected() && sizeList.getSelectedValuesList().isEmpty()) {
169  return "At least one size must be selected";
170  }
171  return "";
172 
173  }
174 
175  @Override
176  JList<?> getList() {
177  return sizeList;
178  }
179 
180  @Override
181  FileSearchFiltering.FileFilter getFilter() {
182  if (sizeCheckbox.isSelected()) {
183  return new FileSearchFiltering.SizeFilter(sizeList.getSelectedValuesList());
184  }
185  return null;
186  }
187 }

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