19 package org.sleuthkit.autopsy.discovery.ui;
21 import java.util.ArrayList;
22 import java.util.List;
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;
37 class ArtifactTypeFilterPanel
extends AbstractDiscoveryFilterPanel {
39 private static final long serialVersionUID = 1L;
44 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
45 ArtifactTypeFilterPanel() {
47 setUpArtifactTypeFilter();
54 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
55 private
void setUpArtifactTypeFilter() {
57 DefaultListModel<ArtifactTypeItem> artifactTypeModel = (DefaultListModel<ArtifactTypeItem>) artifactList.getModel();
58 artifactTypeModel.removeAllElements();
59 for (BlackboardArtifact.ARTIFACT_TYPE artifactType : SearchData.Type.DOMAIN.getArtifactTypes()) {
60 artifactTypeModel.add(count,
new ArtifactTypeItem(artifactType));
70 @SuppressWarnings(
"unchecked")
72 private
void initComponents() {
74 artifactTypeCheckbox =
new javax.swing.JCheckBox();
75 artifactTypeScrollPane =
new javax.swing.JScrollPane();
76 artifactList =
new javax.swing.JList<>();
78 org.openide.awt.Mnemonics.setLocalizedText(artifactTypeCheckbox,
org.openide.util.NbBundle.getMessage(ArtifactTypeFilterPanel.class,
"ArtifactTypeFilterPanel.artifactTypeCheckbox.text"));
79 artifactTypeCheckbox.addActionListener(
new java.awt.event.ActionListener() {
80 public void actionPerformed(java.awt.event.ActionEvent evt) {
81 artifactTypeCheckboxActionPerformed(evt);
85 setPreferredSize(
new java.awt.Dimension(27, 27));
87 artifactTypeScrollPane.setPreferredSize(
new java.awt.Dimension(27, 27));
89 artifactList.setModel(
new DefaultListModel<ArtifactTypeItem>());
90 artifactList.setEnabled(
false);
91 artifactTypeScrollPane.setViewportView(artifactList);
93 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
94 this.setLayout(layout);
95 layout.setHorizontalGroup(
96 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
97 .addComponent(artifactTypeScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
99 layout.setVerticalGroup(
100 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
101 .addComponent(artifactTypeScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
105 private void artifactTypeCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
106 artifactTypeScrollPane.setEnabled(artifactTypeCheckbox.isSelected());
107 artifactList.setEnabled(artifactTypeCheckbox.isSelected());
110 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
112 void configurePanel(
boolean selected,
int[] indicesSelected) {
113 artifactTypeCheckbox.setSelected(selected);
114 if (artifactTypeCheckbox.isEnabled() && artifactTypeCheckbox.isSelected()) {
115 artifactTypeScrollPane.setEnabled(
true);
116 artifactList.setEnabled(
true);
117 if (indicesSelected != null) {
118 artifactList.setSelectedIndices(indicesSelected);
121 artifactTypeScrollPane.setEnabled(
false);
122 artifactList.setEnabled(
false);
126 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
128 JCheckBox getCheckbox() {
129 return artifactTypeCheckbox;
132 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
139 JLabel getAdditionalLabel() {
143 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
144 @NbBundle.Messages({
"ArtifactTypeFilterPanel.selectionNeeded.text=At least one Result type must be selected."})
146 String checkForError() {
147 if (artifactTypeCheckbox.isSelected() && artifactList.getSelectedValuesList().isEmpty()) {
148 return Bundle.ArtifactTypeFilterPanel_selectionNeeded_text();
153 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
155 AbstractFilter getFilter() {
156 if (artifactTypeCheckbox.isSelected() && !artifactList.getSelectedValuesList().isEmpty()) {
157 List<BlackboardArtifact.ARTIFACT_TYPE> artifactTypeList =
new ArrayList<>();
158 for (ArtifactTypeItem item : artifactList.getSelectedValuesList()) {
159 artifactTypeList.add(item.getArtifactType());
161 return new ArtifactTypeFilter(artifactTypeList);
188 BlackboardArtifact.ARTIFACT_TYPE getArtifactType() {
199 private javax.swing.JList<ArtifactTypeItem> artifactList;
200 private javax.swing.JCheckBox artifactTypeCheckbox;
201 private javax.swing.JScrollPane artifactTypeScrollPane;
final BlackboardArtifact.ARTIFACT_TYPE artifactType