Autopsy  4.17.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
InterestingItemsFilterPanel.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.List;
23 import java.util.logging.Level;
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;
32 import org.sleuthkit.datamodel.BlackboardArtifact;
33 import org.sleuthkit.datamodel.BlackboardAttribute;
34 import org.sleuthkit.datamodel.TskCoreException;
35 
39 final class InterestingItemsFilterPanel extends AbstractDiscoveryFilterPanel {
40 
41  private static final long serialVersionUID = 1L;
42  private final static Logger logger = Logger.getLogger(InterestingItemsFilterPanel.class.getName());
43 
47  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
48  InterestingItemsFilterPanel() {
49  initComponents();
50  setUpInterestingItemsFilter();
51  }
52 
56  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
57  private void setUpInterestingItemsFilter() {
58  int count = 0;
59  try {
60  DefaultListModel<String> intListModel = (DefaultListModel<String>) interestingItemsList.getModel();
61  intListModel.removeAllElements();
62  List<String> setNames = DiscoveryUiUtils.getSetNames(BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT,
63  BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME);
64  for (String name : setNames) {
65  intListModel.add(count, name);
66  count++;
67  }
68  } catch (TskCoreException ex) {
69  logger.log(Level.SEVERE, "Error loading interesting file set names", ex);
70  interestingItemsCheckbox.setEnabled(false);
71  interestingItemsList.setEnabled(false);
72  }
73  }
74 
80  @SuppressWarnings("unchecked")
81  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
82  private void initComponents() {
83 
84  interestingItemsCheckbox = new javax.swing.JCheckBox();
85  interestingItemsScrollPane = new javax.swing.JScrollPane();
86  interestingItemsList = new javax.swing.JList<>();
87 
88  org.openide.awt.Mnemonics.setLocalizedText(interestingItemsCheckbox, org.openide.util.NbBundle.getMessage(InterestingItemsFilterPanel.class, "InterestingItemsFilterPanel.interestingItemsCheckbox.text")); // NOI18N
89  interestingItemsCheckbox.setMaximumSize(new java.awt.Dimension(150, 25));
90  interestingItemsCheckbox.setMinimumSize(new java.awt.Dimension(150, 25));
91  interestingItemsCheckbox.setPreferredSize(new java.awt.Dimension(150, 25));
92  interestingItemsCheckbox.addActionListener(new java.awt.event.ActionListener() {
93  public void actionPerformed(java.awt.event.ActionEvent evt) {
94  interestingItemsCheckboxActionPerformed(evt);
95  }
96  });
97 
98  setMinimumSize(new java.awt.Dimension(250, 30));
99  setPreferredSize(new java.awt.Dimension(250, 30));
100 
101  interestingItemsScrollPane.setPreferredSize(new java.awt.Dimension(27, 27));
102 
103  interestingItemsList.setModel(new DefaultListModel<String>());
104  interestingItemsList.setEnabled(false);
105  interestingItemsList.setVisibleRowCount(2);
106  interestingItemsScrollPane.setViewportView(interestingItemsList);
107 
108  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
109  this.setLayout(layout);
110  layout.setHorizontalGroup(
111  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
112  .addComponent(interestingItemsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
113  );
114  layout.setVerticalGroup(
115  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
116  .addComponent(interestingItemsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE)
117  );
118  }// </editor-fold>//GEN-END:initComponents
119 
120  private void interestingItemsCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_interestingItemsCheckboxActionPerformed
121  interestingItemsList.setEnabled(interestingItemsCheckbox.isSelected());
122  }//GEN-LAST:event_interestingItemsCheckboxActionPerformed
123 
124  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
125  @Override
126  void configurePanel(boolean selected, int[] indicesSelected) {
127  boolean hasInterestingItems = interestingItemsList.getModel().getSize() > 0;
128  interestingItemsCheckbox.setEnabled(hasInterestingItems);
129  interestingItemsCheckbox.setSelected(selected && hasInterestingItems);
130  if (interestingItemsCheckbox.isEnabled() && interestingItemsCheckbox.isSelected()) {
131  interestingItemsScrollPane.setEnabled(true);
132  interestingItemsList.setEnabled(true);
133  if (indicesSelected != null) {
134  interestingItemsList.setSelectedIndices(indicesSelected);
135  }
136  } else {
137  interestingItemsScrollPane.setEnabled(false);
138  interestingItemsList.setEnabled(false);
139  }
140  }
141 
142  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
143  @Override
144  JCheckBox getCheckbox() {
145  return interestingItemsCheckbox;
146  }
147 
148  @Override
149  JLabel getAdditionalLabel() {
150  return null;
151  }
152 
153  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
154  @NbBundle.Messages({"InterestingItemsFilterPanel.error.text=At least one interesting file set name must be selected."})
155  @Override
156  String checkForError() {
157  if (interestingItemsCheckbox.isSelected() && interestingItemsList.getSelectedValuesList().isEmpty()) {
158  return Bundle.InterestingItemsFilterPanel_error_text();
159  }
160  return "";
161  }
162 
163 
164  // Variables declaration - do not modify//GEN-BEGIN:variables
165  private javax.swing.JCheckBox interestingItemsCheckbox;
166  private javax.swing.JList<String> interestingItemsList;
167  private javax.swing.JScrollPane interestingItemsScrollPane;
168  // End of variables declaration//GEN-END:variables
169 
170  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
171  @Override
172  JList<?> getList() {
173  return interestingItemsList;
174  }
175 
176  @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
177  @Override
178  AbstractFilter getFilter() {
179  if (interestingItemsCheckbox.isSelected()) {
180  return new SearchFiltering.InterestingFileSetFilter(interestingItemsList.getSelectedValuesList());
181  }
182  return null;
183  }
184 }

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.