19 package org.sleuthkit.autopsy.discovery;
21 import java.util.List;
22 import java.util.logging.Level;
23 import java.util.stream.Collectors;
24 import javax.swing.DefaultListModel;
25 import javax.swing.JCheckBox;
26 import javax.swing.JLabel;
27 import javax.swing.JList;
36 final class DataSourceFilterPanel
extends AbstractDiscoveryFilterPanel {
38 private static final long serialVersionUID = 1L;
39 private final static Logger logger = Logger.getLogger(DataSourceFilterPanel.class.getName());
44 DataSourceFilterPanel() {
46 setUpDataSourceFilter();
54 @SuppressWarnings(
"unchecked")
56 private
void initComponents() {
58 dataSourceCheckbox =
new javax.swing.JCheckBox();
59 dataSourceScrollPane =
new javax.swing.JScrollPane();
60 dataSourceList =
new javax.swing.JList<>();
62 org.openide.awt.Mnemonics.setLocalizedText(dataSourceCheckbox,
org.openide.util.NbBundle.getMessage(DataSourceFilterPanel.class,
"DataSourceFilterPanel.dataSourceCheckbox.text"));
63 dataSourceCheckbox.setMaximumSize(
new java.awt.Dimension(150, 25));
64 dataSourceCheckbox.setMinimumSize(
new java.awt.Dimension(150, 25));
65 dataSourceCheckbox.setPreferredSize(
new java.awt.Dimension(150, 25));
66 dataSourceCheckbox.addActionListener(
new java.awt.event.ActionListener() {
67 public void actionPerformed(java.awt.event.ActionEvent evt) {
68 dataSourceCheckboxActionPerformed(evt);
72 setMinimumSize(
new java.awt.Dimension(250, 30));
73 setPreferredSize(
new java.awt.Dimension(250, 30));
74 setRequestFocusEnabled(
false);
76 dataSourceScrollPane.setPreferredSize(
new java.awt.Dimension(27, 27));
78 dataSourceList.setModel(
new DefaultListModel<DataSourceItem>());
79 dataSourceList.setEnabled(
false);
80 dataSourceList.setVisibleRowCount(5);
81 dataSourceScrollPane.setViewportView(dataSourceList);
83 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
84 this.setLayout(layout);
85 layout.setHorizontalGroup(
86 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
87 .addComponent(dataSourceScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
89 layout.setVerticalGroup(
90 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
91 .addGroup(layout.createSequentialGroup()
92 .addComponent(dataSourceScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
97 private void dataSourceCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
98 dataSourceList.setEnabled(dataSourceCheckbox.isSelected());
103 private javax.swing.JCheckBox dataSourceCheckbox;
104 private javax.swing.JList<DataSourceItem> dataSourceList;
105 private javax.swing.JScrollPane dataSourceScrollPane;
109 void configurePanel(
boolean selected,
int[] indicesSelected) {
110 dataSourceCheckbox.setSelected(selected);
111 if (dataSourceCheckbox.isEnabled() && dataSourceCheckbox.isSelected()) {
112 dataSourceScrollPane.setEnabled(
true);
113 dataSourceList.setEnabled(
true);
114 if (indicesSelected != null) {
115 dataSourceList.setSelectedIndices(indicesSelected);
118 dataSourceScrollPane.setEnabled(
false);
119 dataSourceList.setEnabled(
false);
124 JCheckBox getCheckbox() {
125 return dataSourceCheckbox;
129 JLabel getAdditionalLabel() {
136 private void setUpDataSourceFilter() {
139 DefaultListModel<DataSourceItem> dsListModel = (DefaultListModel<DataSourceItem>) dataSourceList.getModel();
140 dsListModel.removeAllElements();
141 for (DataSource ds : Case.getCurrentCase().getSleuthkitCase().getDataSources()) {
142 dsListModel.add(count,
new DataSourceItem(ds));
144 }
catch (TskCoreException ex) {
145 logger.log(Level.SEVERE,
"Error loading data sources", ex);
146 dataSourceCheckbox.setEnabled(
false);
147 dataSourceList.setEnabled(
false);
153 return dataSourceList;
162 private final DataSource
ds;
178 DataSource getDataSource() {
184 return ds.getName() +
" (ID: " + ds.getId() +
")";
189 String checkForError() {
190 if (dataSourceCheckbox.isSelected() && dataSourceList.getSelectedValuesList().isEmpty()) {
191 return "At least one size must be selected";
197 FileSearchFiltering.FileFilter getFilter() {
198 if (dataSourceCheckbox.isSelected()) {
199 List<DataSource> dataSources = dataSourceList.getSelectedValuesList().stream().map(t -> t.getDataSource()).collect(Collectors.toList());
200 return new FileSearchFiltering.DataSourceFilter(dataSources);