19 package org.sleuthkit.autopsy.discovery.ui;
21 import java.util.ArrayList;
22 import java.util.List;
24 import javax.swing.JCheckBox;
25 import javax.swing.JLabel;
26 import javax.swing.event.ListSelectionListener;
27 import org.openide.util.NbBundle;
36 final class ArtifactTypeFilterPanel
extends AbstractDiscoveryFilterPanel {
38 private static final long serialVersionUID = 1L;
43 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
44 ArtifactTypeFilterPanel() {
46 setUpArtifactTypeFilter();
52 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
53 private
void setUpArtifactTypeFilter() {
54 artifactList.clearList();
55 for (BlackboardArtifact.ARTIFACT_TYPE artifactType : SearchData.Type.DOMAIN.getArtifactTypes()) {
56 artifactList.addElement(artifactType.getDisplayName(), null, artifactType);
66 private void initComponents() {
68 artifactTypeCheckbox =
new javax.swing.JCheckBox();
71 org.openide.awt.Mnemonics.setLocalizedText(artifactTypeCheckbox,
org.openide.util.NbBundle.getMessage(ArtifactTypeFilterPanel.class,
"ArtifactTypeFilterPanel.artifactTypeCheckbox.text"));
72 artifactTypeCheckbox.addActionListener(
new java.awt.event.ActionListener() {
73 public void actionPerformed(java.awt.event.ActionEvent evt) {
74 artifactTypeCheckboxActionPerformed(evt);
78 setPreferredSize(
new java.awt.Dimension(27, 27));
79 setLayout(
new java.awt.BorderLayout());
80 add(artifactList, java.awt.BorderLayout.CENTER);
83 private void artifactTypeCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
84 artifactList.setEnabled(artifactTypeCheckbox.isSelected());
87 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
89 void configurePanel(
boolean selected, List<?> selectedItems) {
90 artifactTypeCheckbox.setSelected(selected);
91 if (artifactTypeCheckbox.isEnabled() && artifactTypeCheckbox.isSelected()) {
92 artifactList.setEnabled(
true);
93 if (selectedItems != null) {
94 List<BlackboardArtifact.ARTIFACT_TYPE> artTypeList =
new ArrayList<>();
95 for (Object item : selectedItems) {
96 if (item instanceof BlackboardArtifact.ARTIFACT_TYPE) {
97 artTypeList.add((BlackboardArtifact.ARTIFACT_TYPE) item);
100 if (!artTypeList.isEmpty()) {
101 artifactList.setSelectedElements(artTypeList);
105 artifactList.setEnabled(
false);
109 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
111 JCheckBox getCheckbox() {
112 return artifactTypeCheckbox;
116 JLabel getAdditionalLabel() {
120 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
121 @NbBundle.Messages({
"ArtifactTypeFilterPanel.selectionNeeded.text=At least one Result type must be selected."})
123 String checkForError() {
124 if (artifactTypeCheckbox.isSelected() && artifactList.getSelectedElements().isEmpty()) {
125 return Bundle.ArtifactTypeFilterPanel_selectionNeeded_text();
130 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
132 AbstractFilter getFilter() {
133 if (artifactTypeCheckbox.isSelected() && isFilterSupported()) {
134 List<BlackboardArtifact.ARTIFACT_TYPE> artifactTypeList = artifactList.getSelectedElements();
135 return new ArtifactTypeFilter(artifactTypeList);
141 void addListSelectionListener(ListSelectionListener listener) {
142 artifactList.addListSelectionListener(listener);
146 boolean isFilterSupported() {
147 return !artifactList.isEmpty();
153 private javax.swing.JCheckBox artifactTypeCheckbox;