19 package org.sleuthkit.autopsy.discovery.ui;
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;
39 final class ObjectDetectedFilterPanel
extends AbstractDiscoveryFilterPanel {
41 private static final long serialVersionUID = 1L;
42 private final static Logger logger = Logger.getLogger(ObjectDetectedFilterPanel.class.getName());
47 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
48 ObjectDetectedFilterPanel() {
56 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
57 private
void setUpObjectFilter() {
60 DefaultListModel<String> objListModel = (DefaultListModel<String>) objectsList.getModel();
61 objListModel.removeAllElements();
62 List<String> setNames = DiscoveryUiUtils.getSetNames(BlackboardArtifact.ARTIFACT_TYPE.TSK_OBJECT_DETECTED, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DESCRIPTION);
63 for (String name : setNames) {
64 objListModel.add(count, name);
67 }
catch (TskCoreException ex) {
68 logger.log(Level.SEVERE,
"Error loading object detected set names", ex);
69 objectsCheckbox.setEnabled(
false);
70 objectsList.setEnabled(
false);
79 @SuppressWarnings(
"unchecked")
81 private
void initComponents() {
83 objectsCheckbox =
new javax.swing.JCheckBox();
84 objectsScrollPane =
new javax.swing.JScrollPane();
85 objectsList =
new javax.swing.JList<>();
87 org.openide.awt.Mnemonics.setLocalizedText(objectsCheckbox,
org.openide.util.NbBundle.getMessage(ObjectDetectedFilterPanel.class,
"ObjectDetectedFilterPanel.text"));
88 objectsCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
89 objectsCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
90 objectsCheckbox.setName(
"");
91 objectsCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
92 objectsCheckbox.setVerticalAlignment(javax.swing.SwingConstants.TOP);
93 objectsCheckbox.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
94 objectsCheckbox.addActionListener(
new java.awt.event.ActionListener() {
95 public void actionPerformed(java.awt.event.ActionEvent evt) {
96 objectsCheckboxActionPerformed(evt);
100 setMinimumSize(
new java.awt.Dimension(250, 30));
101 setPreferredSize(
new java.awt.Dimension(250, 30));
103 objectsScrollPane.setName(
"");
104 objectsScrollPane.setPreferredSize(
new java.awt.Dimension(27, 27));
106 objectsList.setModel(
new DefaultListModel<String>());
107 objectsList.setEnabled(
false);
108 objectsList.setMaximumSize(
new java.awt.Dimension(32767, 32767));
109 objectsList.setVisibleRowCount(2);
110 objectsScrollPane.setViewportView(objectsList);
112 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
113 this.setLayout(layout);
114 layout.setHorizontalGroup(
115 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
116 .addComponent(objectsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
118 layout.setVerticalGroup(
119 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
120 .addComponent(objectsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 64, Short.MAX_VALUE)
124 private void objectsCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
125 objectsList.setEnabled(objectsCheckbox.isSelected());
130 private javax.swing.JCheckBox objectsCheckbox;
131 private javax.swing.JList<String> objectsList;
132 private javax.swing.JScrollPane objectsScrollPane;
135 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
137 void configurePanel(
boolean selected,
int[] indicesSelected) {
138 boolean hasObjects = objectsList.getModel().getSize() > 0;
139 objectsCheckbox.setEnabled(hasObjects);
140 objectsCheckbox.setSelected(selected && hasObjects);
141 if (objectsCheckbox.isEnabled() && objectsCheckbox.isSelected()) {
142 objectsScrollPane.setEnabled(
true);
143 objectsList.setEnabled(
true);
144 if (indicesSelected != null) {
145 objectsList.setSelectedIndices(indicesSelected);
148 objectsScrollPane.setEnabled(
false);
149 objectsList.setEnabled(
false);
153 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
155 JCheckBox getCheckbox() {
156 return objectsCheckbox;
160 JLabel getAdditionalLabel() {
164 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
165 @NbBundle.Messages({
"ObjectDetectedFilterPanel.error.text=At least one object type name must be selected."})
167 String checkForError() {
168 if (objectsCheckbox.isSelected() && objectsList.getSelectedValuesList().isEmpty()) {
169 return Bundle.ObjectDetectedFilterPanel_error_text();
174 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
180 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
182 AbstractFilter getFilter() {
183 if (objectsCheckbox.isSelected()) {
184 return new SearchFiltering.ObjectDetectionFilter(objectsList.getSelectedValuesList());