19 package org.sleuthkit.autopsy.discovery;
21 import java.util.List;
22 import java.util.logging.Level;
23 import javax.swing.DefaultListModel;
24 import javax.swing.JCheckBox;
25 import javax.swing.JLabel;
26 import javax.swing.JList;
35 final class InterestingItemsFilterPanel
extends AbstractDiscoveryFilterPanel {
37 private static final long serialVersionUID = 1L;
38 private final static Logger logger = Logger.getLogger(InterestingItemsFilterPanel.class.getName());
43 InterestingItemsFilterPanel() {
45 setUpInterestingItemsFilter();
51 private void setUpInterestingItemsFilter() {
54 DefaultListModel<String> intListModel = (DefaultListModel<String>) interestingItemsList.getModel();
55 intListModel.removeAllElements();
56 List<String> setNames = DiscoveryUiUtils.getSetNames(BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT,
57 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME);
58 for (String name : setNames) {
59 intListModel.add(count, name);
62 }
catch (TskCoreException ex) {
63 logger.log(Level.SEVERE,
"Error loading interesting file set names", ex);
64 interestingItemsCheckbox.setEnabled(
false);
65 interestingItemsList.setEnabled(
false);
74 @SuppressWarnings(
"unchecked")
76 private
void initComponents() {
78 interestingItemsCheckbox =
new javax.swing.JCheckBox();
79 interestingItemsScrollPane =
new javax.swing.JScrollPane();
80 interestingItemsList =
new javax.swing.JList<>();
82 org.openide.awt.Mnemonics.setLocalizedText(interestingItemsCheckbox,
org.openide.util.NbBundle.getMessage(InterestingItemsFilterPanel.class,
"InterestingItemsFilterPanel.interestingItemsCheckbox.text"));
83 interestingItemsCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
84 interestingItemsCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
85 interestingItemsCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
86 interestingItemsCheckbox.addActionListener(
new java.awt.event.ActionListener() {
87 public void actionPerformed(java.awt.event.ActionEvent evt) {
88 interestingItemsCheckboxActionPerformed(evt);
92 setMinimumSize(
new java.awt.Dimension(250, 30));
93 setPreferredSize(
new java.awt.Dimension(250, 30));
95 interestingItemsScrollPane.setPreferredSize(
new java.awt.Dimension(27, 27));
97 interestingItemsList.setModel(
new DefaultListModel<String>());
98 interestingItemsList.setEnabled(
false);
99 interestingItemsList.setVisibleRowCount(2);
100 interestingItemsScrollPane.setViewportView(interestingItemsList);
102 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
103 this.setLayout(layout);
104 layout.setHorizontalGroup(
105 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
106 .addComponent(interestingItemsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
108 layout.setVerticalGroup(
109 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
110 .addComponent(interestingItemsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE)
114 private void interestingItemsCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
115 interestingItemsList.setEnabled(interestingItemsCheckbox.isSelected());
119 void configurePanel(
boolean selected,
int[] indicesSelected) {
120 boolean hasInterestingItems = interestingItemsList.getModel().getSize() > 0;
121 interestingItemsCheckbox.setEnabled(hasInterestingItems);
122 interestingItemsCheckbox.setSelected(selected && hasInterestingItems);
123 if (interestingItemsCheckbox.isEnabled() && interestingItemsCheckbox.isSelected()) {
124 interestingItemsScrollPane.setEnabled(
true);
125 interestingItemsList.setEnabled(
true);
126 if (indicesSelected != null) {
127 interestingItemsList.setSelectedIndices(indicesSelected);
130 interestingItemsScrollPane.setEnabled(
false);
131 interestingItemsList.setEnabled(
false);
136 JCheckBox getCheckbox() {
137 return interestingItemsCheckbox;
141 JLabel getAdditionalLabel() {
146 String checkForError() {
147 if (interestingItemsCheckbox.isSelected() && interestingItemsList.getSelectedValuesList().isEmpty()) {
148 return "At least one interesting file set name must be selected";
155 private javax.swing.JCheckBox interestingItemsCheckbox;
156 private javax.swing.JList<String> interestingItemsList;
157 private javax.swing.JScrollPane interestingItemsScrollPane;
162 return interestingItemsList;
166 FileSearchFiltering.FileFilter getFilter() {
167 if (interestingItemsCheckbox.isSelected()) {
168 return new FileSearchFiltering.InterestingFileSetFilter(interestingItemsList.getSelectedValuesList());