19 package org.sleuthkit.autopsy.discovery.ui;
21 import java.util.ArrayList;
23 import java.util.List;
24 import java.util.logging.Level;
25 import javax.swing.JCheckBox;
26 import javax.swing.JLabel;
27 import javax.swing.event.ListSelectionListener;
28 import org.openide.util.NbBundle;
39 final class HashSetFilterPanel
extends AbstractDiscoveryFilterPanel {
41 private static final long serialVersionUID = 1L;
42 private final static Logger logger = Logger.getLogger(HashSetFilterPanel.class.getName());
47 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
48 HashSetFilterPanel() {
57 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
58 private
void setUpHashFilter() {
60 hashSetList.clearList();
61 List<String> setNames = DiscoveryUiUtils.getSetNames(BlackboardArtifact.ARTIFACT_TYPE.TSK_HASHSET_HIT,
62 BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME);
63 for (String name : setNames) {
64 hashSetList.addElement(name, null, name);
66 }
catch (TskCoreException ex) {
67 logger.log(Level.SEVERE,
"Error loading hash set names", ex);
68 hashSetCheckbox.setEnabled(
false);
69 hashSetList.setEnabled(
false);
79 private void initComponents() {
81 hashSetCheckbox =
new javax.swing.JCheckBox();
84 org.openide.awt.Mnemonics.setLocalizedText(hashSetCheckbox,
org.openide.util.NbBundle.getMessage(HashSetFilterPanel.class,
"HashSetFilterPanel.hashSetCheckbox.text"));
85 hashSetCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
86 hashSetCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
87 hashSetCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
88 hashSetCheckbox.addActionListener(
new java.awt.event.ActionListener() {
89 public void actionPerformed(java.awt.event.ActionEvent evt) {
90 hashSetCheckboxActionPerformed(evt);
94 setMinimumSize(
new java.awt.Dimension(250, 30));
95 setPreferredSize(
new java.awt.Dimension(250, 30));
96 setLayout(
new java.awt.BorderLayout());
97 add(hashSetList, java.awt.BorderLayout.CENTER);
100 private void hashSetCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
101 hashSetList.setEnabled(hashSetCheckbox.isSelected());
106 private javax.swing.JCheckBox hashSetCheckbox;
110 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
112 void configurePanel(
boolean selected, List<?> selectedItems) {
113 boolean hasHashSets = isFilterSupported();
114 hashSetCheckbox.setEnabled(hasHashSets);
115 hashSetCheckbox.setSelected(selected && hasHashSets);
116 if (hashSetCheckbox.isEnabled() && hashSetCheckbox.isSelected()) {
117 hashSetList.setEnabled(
true);
118 if (selectedItems != null) {
119 List<String> setList =
new ArrayList<>();
120 for (Object item : selectedItems) {
121 if (item instanceof String) {
122 setList.add((String) item);
125 if (!setList.isEmpty()) {
126 hashSetList.setSelectedElements(setList);
130 hashSetList.setEnabled(
false);
134 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
136 JCheckBox getCheckbox() {
137 return hashSetCheckbox;
141 JLabel getAdditionalLabel() {
145 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
146 @NbBundle.Messages({
"HashSetFilterPanel.error.text=At least one hash set name must be selected."})
148 String checkForError() {
149 if (hashSetCheckbox.isSelected() && hashSetList.getSelectedElements().isEmpty()) {
150 return Bundle.HashSetFilterPanel_error_text();
155 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
157 AbstractFilter getFilter() {
158 if (hashSetCheckbox.isSelected()) {
159 List<String> setList = hashSetList.getSelectedElements();
160 return new SearchFiltering.InterestingFileSetFilter(setList);
166 void addListSelectionListener(ListSelectionListener listener) {
167 hashSetList.addListSelectionListener(listener);
171 boolean isFilterSupported() {
172 return !hashSetList.isEmpty();