19 package org.sleuthkit.autopsy.discovery.ui;
21 import java.util.ArrayList;
22 import java.util.Collections;
24 import java.util.List;
25 import java.util.logging.Level;
26 import javax.swing.JCheckBox;
27 import javax.swing.JLabel;
28 import javax.swing.event.ListSelectionListener;
29 import org.openide.util.NbBundle;
40 final class DataSourceFilterPanel
extends AbstractDiscoveryFilterPanel {
42 private static final long serialVersionUID = 1L;
43 private final static Logger logger = Logger.getLogger(DataSourceFilterPanel.class.getName());
48 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
49 DataSourceFilterPanel() {
51 setUpDataSourceFilter();
52 this.add(dataSourceCheckBoxList);
61 private void initComponents() {
63 dataSourceCheckbox =
new javax.swing.JCheckBox();
66 org.openide.awt.Mnemonics.setLocalizedText(dataSourceCheckbox,
org.openide.util.NbBundle.getMessage(DataSourceFilterPanel.class,
"DataSourceFilterPanel.dataSourceCheckbox.text"));
67 dataSourceCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
68 dataSourceCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
69 dataSourceCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
70 dataSourceCheckbox.addActionListener(
new java.awt.event.ActionListener() {
71 public void actionPerformed(java.awt.event.ActionEvent evt) {
72 dataSourceCheckboxActionPerformed(evt);
76 setMinimumSize(
new java.awt.Dimension(250, 30));
77 setPreferredSize(
new java.awt.Dimension(250, 50));
78 setRequestFocusEnabled(
false);
79 setLayout(
new java.awt.BorderLayout());
80 add(dataSourceCheckBoxList, java.awt.BorderLayout.CENTER);
83 private void dataSourceCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
84 dataSourceCheckBoxList.setEnabled(dataSourceCheckbox.isSelected());
90 private javax.swing.JCheckBox dataSourceCheckbox;
93 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
95 void configurePanel(
boolean selected, List<?> selectedItems) {
96 dataSourceCheckbox.setSelected(selected);
97 if (dataSourceCheckbox.isEnabled() && dataSourceCheckbox.isSelected()) {
99 if (selectedItems != null) {
100 List<DataSource> dsList =
new ArrayList<>();
101 for (Object item : selectedItems) {
102 if (item instanceof DataSource) {
103 dsList.add((DataSource) item);
106 if (!dsList.isEmpty()) {
107 dataSourceCheckBoxList.setSelectedElements(dsList);
111 dataSourceCheckBoxList.setEnabled(
false);
115 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
117 JCheckBox getCheckbox() {
118 return dataSourceCheckbox;
122 JLabel getAdditionalLabel() {
129 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
130 private
void setUpDataSourceFilter() {
132 dataSourceCheckBoxList.clearList();
133 List<DataSource> dataSources = Case.getCurrentCase().getSleuthkitCase().getDataSources();
134 Collections.sort(dataSources, (DataSource ds1, DataSource ds2) -> ds1.getName().compareToIgnoreCase(ds2.getName()));
135 for (DataSource ds : dataSources) {
136 dataSourceCheckBoxList.addElement(ds.getName() +
" (ID: " + ds.getId() +
")", null, ds);
139 }
catch (TskCoreException ex) {
140 logger.log(Level.SEVERE,
"Error loading data sources", ex);
141 dataSourceCheckbox.setEnabled(
false);
142 dataSourceCheckBoxList.setEnabled(
false);
147 void addListSelectionListener(ListSelectionListener listener) {
148 dataSourceCheckBoxList.addListSelectionListener(listener);
152 boolean isFilterSupported() {
153 return !dataSourceCheckBoxList.isEmpty();
156 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
157 @NbBundle.Messages({
"DataSourceFilterPanel.error.text=At least one data source must be selected."})
159 String checkForError() {
160 if (dataSourceCheckbox.isSelected() && dataSourceCheckBoxList.getSelectedElements().isEmpty()) {
161 return Bundle.DataSourceFilterPanel_error_text();
166 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
168 AbstractFilter getFilter() {
169 if (dataSourceCheckbox.isSelected()) {
170 List<DataSource> dataSources = dataSourceCheckBoxList.getSelectedElements();
171 return new SearchFiltering.DataSourceFilter(dataSources);
void setEnabled(boolean enabled)