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;
38 final class ObjectDetectedFilterPanel
extends AbstractDiscoveryFilterPanel {
40 private static final long serialVersionUID = 1L;
41 private final static Logger logger = Logger.getLogger(ObjectDetectedFilterPanel.class.getName());
46 ObjectDetectedFilterPanel() {
54 private void setUpObjectFilter() {
57 DefaultListModel<String> objListModel = (DefaultListModel<String>) objectsList.getModel();
58 objListModel.removeAllElements();
59 List<String> setNames = DiscoveryUiUtils.getSetNames(BlackboardArtifact.ARTIFACT_TYPE.TSK_OBJECT_DETECTED, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DESCRIPTION);
60 for (String name : setNames) {
61 objListModel.add(count, name);
64 }
catch (TskCoreException ex) {
65 logger.log(Level.SEVERE,
"Error loading object detected set names", ex);
66 objectsCheckbox.setEnabled(
false);
67 objectsList.setEnabled(
false);
76 @SuppressWarnings(
"unchecked")
78 private
void initComponents() {
80 objectsCheckbox =
new javax.swing.JCheckBox();
81 objectsScrollPane =
new javax.swing.JScrollPane();
82 objectsList =
new javax.swing.JList<>();
84 org.openide.awt.Mnemonics.setLocalizedText(objectsCheckbox,
org.openide.util.NbBundle.getMessage(ObjectDetectedFilterPanel.class,
"ObjectDetectedFilterPanel.text"));
85 objectsCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
86 objectsCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
87 objectsCheckbox.setName(
"");
88 objectsCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
89 objectsCheckbox.setVerticalAlignment(javax.swing.SwingConstants.TOP);
90 objectsCheckbox.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
91 objectsCheckbox.addActionListener(
new java.awt.event.ActionListener() {
92 public void actionPerformed(java.awt.event.ActionEvent evt) {
93 objectsCheckboxActionPerformed(evt);
97 setMinimumSize(
new java.awt.Dimension(250, 30));
98 setPreferredSize(
new java.awt.Dimension(250, 30));
100 objectsScrollPane.setName(
"");
101 objectsScrollPane.setPreferredSize(
new java.awt.Dimension(27, 27));
103 objectsList.setModel(
new DefaultListModel<String>());
104 objectsList.setEnabled(
false);
105 objectsList.setMaximumSize(
new java.awt.Dimension(32767, 32767));
106 objectsList.setVisibleRowCount(2);
107 objectsScrollPane.setViewportView(objectsList);
109 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
110 this.setLayout(layout);
111 layout.setHorizontalGroup(
112 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
113 .addComponent(objectsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
115 layout.setVerticalGroup(
116 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
117 .addComponent(objectsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 64, Short.MAX_VALUE)
121 private void objectsCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
122 objectsList.setEnabled(objectsCheckbox.isSelected());
127 private javax.swing.JCheckBox objectsCheckbox;
128 private javax.swing.JList<String> objectsList;
129 private javax.swing.JScrollPane objectsScrollPane;
133 void configurePanel(
boolean selected,
int[] indicesSelected) {
134 boolean hasObjects = objectsList.getModel().getSize() > 0;
135 objectsCheckbox.setEnabled(hasObjects);
136 objectsCheckbox.setSelected(selected && hasObjects);
137 if (objectsCheckbox.isEnabled() && objectsCheckbox.isSelected()) {
138 objectsScrollPane.setEnabled(
true);
139 objectsList.setEnabled(
true);
140 if (indicesSelected != null) {
141 objectsList.setSelectedIndices(indicesSelected);
144 objectsScrollPane.setEnabled(
false);
145 objectsList.setEnabled(
false);
150 JCheckBox getCheckbox() {
151 return objectsCheckbox;
155 JLabel getAdditionalLabel() {
158 @NbBundle.Messages({
"ObjectDetectedFilterPanel.error.text=At least one object type name must be selected."})
160 String checkForError() {
161 if (objectsCheckbox.isSelected() && objectsList.getSelectedValuesList().isEmpty()) {
162 return Bundle.ObjectDetectedFilterPanel_error_text();
173 AbstractFilter getFilter() {
174 if (objectsCheckbox.isSelected()) {
175 return new SearchFiltering.ObjectDetectionFilter(objectsList.getSelectedValuesList());