19 package org.sleuthkit.autopsy.discovery;
21 import java.util.List;
22 import java.util.logging.Level;
23 import javax.swing.DefaultListModel;
24 import javax.swing.JCheckBox;
25 import javax.swing.JLabel;
26 import javax.swing.JList;
35 final class ObjectDetectedFilterPanel
extends AbstractDiscoveryFilterPanel {
37 private static final long serialVersionUID = 1L;
38 private final static Logger logger = Logger.getLogger(ObjectDetectedFilterPanel.class.getName());
43 ObjectDetectedFilterPanel() {
51 private void setUpObjectFilter() {
54 DefaultListModel<String> objListModel = (DefaultListModel<String>) objectsList.getModel();
55 objListModel.removeAllElements();
56 List<String> setNames = DiscoveryUiUtils.getSetNames(BlackboardArtifact.ARTIFACT_TYPE.TSK_OBJECT_DETECTED, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DESCRIPTION);
57 for (String name : setNames) {
58 objListModel.add(count, name);
61 }
catch (TskCoreException ex) {
62 logger.log(Level.SEVERE,
"Error loading object detected set names", ex);
63 objectsCheckbox.setEnabled(
false);
64 objectsList.setEnabled(
false);
73 @SuppressWarnings(
"unchecked")
75 private
void initComponents() {
77 objectsCheckbox =
new javax.swing.JCheckBox();
78 objectsScrollPane =
new javax.swing.JScrollPane();
79 objectsList =
new javax.swing.JList<>();
81 org.openide.awt.Mnemonics.setLocalizedText(objectsCheckbox,
org.openide.util.NbBundle.getMessage(ObjectDetectedFilterPanel.class,
"ObjectDetectedFilterPanel.text"));
82 objectsCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
83 objectsCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
84 objectsCheckbox.setName(
"");
85 objectsCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
86 objectsCheckbox.setVerticalAlignment(javax.swing.SwingConstants.TOP);
87 objectsCheckbox.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
88 objectsCheckbox.addActionListener(
new java.awt.event.ActionListener() {
89 public void actionPerformed(java.awt.event.ActionEvent evt) {
90 objectsCheckboxActionPerformed(evt);
94 setMinimumSize(
new java.awt.Dimension(250, 30));
95 setPreferredSize(
new java.awt.Dimension(250, 30));
97 objectsScrollPane.setName(
"");
98 objectsScrollPane.setPreferredSize(
new java.awt.Dimension(27, 27));
100 objectsList.setModel(
new DefaultListModel<String>());
101 objectsList.setEnabled(
false);
102 objectsList.setMaximumSize(
new java.awt.Dimension(32767, 32767));
103 objectsList.setVisibleRowCount(2);
104 objectsScrollPane.setViewportView(objectsList);
106 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
107 this.setLayout(layout);
108 layout.setHorizontalGroup(
109 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
110 .addComponent(objectsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
112 layout.setVerticalGroup(
113 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
114 .addComponent(objectsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 64, Short.MAX_VALUE)
118 private void objectsCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
119 objectsList.setEnabled(objectsCheckbox.isSelected());
124 private javax.swing.JCheckBox objectsCheckbox;
125 private javax.swing.JList<String> objectsList;
126 private javax.swing.JScrollPane objectsScrollPane;
130 void configurePanel(
boolean selected,
int[] indicesSelected) {
131 boolean hasObjects = objectsList.getModel().getSize() > 0;
132 objectsCheckbox.setEnabled(hasObjects);
133 objectsCheckbox.setSelected(selected && hasObjects);
134 if (objectsCheckbox.isEnabled() && objectsCheckbox.isSelected()) {
135 objectsScrollPane.setEnabled(
true);
136 objectsList.setEnabled(
true);
137 if (indicesSelected != null) {
138 objectsList.setSelectedIndices(indicesSelected);
141 objectsScrollPane.setEnabled(
false);
142 objectsList.setEnabled(
false);
147 JCheckBox getCheckbox() {
148 return objectsCheckbox;
152 JLabel getAdditionalLabel() {
157 String checkForError() {
158 if (objectsCheckbox.isSelected() && objectsList.getSelectedValuesList().isEmpty()) {
159 return "At least one object type name must be selected";
170 FileSearchFiltering.FileFilter getFilter() {
171 if (objectsCheckbox.isSelected()) {
172 return new FileSearchFiltering.ObjectDetectionFilter(objectsList.getSelectedValuesList());