19 package org.sleuthkit.autopsy.filesearch;
22 import java.util.ArrayList;
23 import java.util.Collections;
24 import java.util.HashMap;
25 import java.util.HashSet;
26 import java.util.List;
29 import java.util.logging.Level;
30 import javax.swing.DefaultListModel;
31 import javax.swing.event.ListSelectionEvent;
32 import javax.swing.event.ListSelectionListener;
43 @SuppressWarnings(
"PMD.SingularField")
47 private static final long serialVersionUID = 1L;
48 private final Map<Long, String> dataSourceMap =
new HashMap<>();
55 resetDataSourcePanel();
62 final void resetDataSourcePanel() {
63 dataSourceList.clearSelection();
65 for (ListSelectionListener listener : dataSourceList.getListSelectionListeners()){
66 dataSourceList.removeListSelectionListener(listener);
68 ((DefaultListModel<String>) dataSourceList.getModel()).clear();
69 List<String> strings = getDataSourceArray();
70 for (String dataSource : strings) {
71 ((DefaultListModel<String>) dataSourceList.getModel()).addElement(dataSource);
73 dataSourceList.setEnabled(
false);
74 dataSourceCheckBox.setSelected(
false);
75 dataSourceNoteLabel.setEnabled(
false);
76 if (dataSourceList.getModel().getSize() > 1) {
77 dataSourceList.addListSelectionListener((ListSelectionEvent evt) -> {
78 firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
80 dataSourceCheckBox.setEnabled(
true);
86 this.dataSourceCheckBox.setEnabled(
false);
96 List<String> dsList =
new ArrayList<>();
100 List<DataSource> dataSources = tskDb.getDataSources();
101 Collections.sort(dataSources, (DataSource ds1, DataSource ds2) -> ds1.getName().compareTo(ds2.getName()));
102 for (DataSource ds : dataSources) {
103 String dsName = ds.getName();
104 File dataSourceFullName =
new File(dsName);
105 String displayName = dataSourceFullName.getName();
106 dataSourceMap.put(ds.getId(), displayName);
107 dsList.add(displayName);
110 logger.log(Level.SEVERE,
"Unable to get current open case.", ex);
111 }
catch (TskCoreException ex) {
112 logger.log(Level.SEVERE,
"Failed to get data source info from database.", ex);
122 Set<Long> getDataSourcesSelected() {
123 Set<Long> dataSourceObjIdSet =
new HashSet<>();
124 List<String> dataSources = dataSourceList.getSelectedValuesList();
125 for (Long key : dataSourceMap.keySet()) {
126 String value = dataSourceMap.get(key);
127 for (String dataSource : dataSources) {
128 if (value.equals(dataSource)) {
129 dataSourceObjIdSet.add(key);
133 return dataSourceObjIdSet;
141 boolean isSelected() {
142 return this.dataSourceCheckBox.isSelected();
149 final void setComponentsEnabled() {
150 boolean enabled = this.isSelected();
151 this.dataSourceList.setEnabled(enabled);
152 this.dataSourceNoteLabel.setEnabled(enabled);
160 @SuppressWarnings(
"unchecked")
162 private
void initComponents() {
164 jScrollPane1 =
new javax.swing.JScrollPane();
165 dataSourceList =
new javax.swing.JList<>();
166 dataSourceCheckBox =
new javax.swing.JCheckBox();
167 dataSourceNoteLabel =
new javax.swing.JLabel();
169 setMinimumSize(
new java.awt.Dimension(150, 150));
170 setPreferredSize(
new java.awt.Dimension(150, 150));
172 dataSourceList.setModel(
new DefaultListModel<String>());
173 dataSourceList.setEnabled(
false);
174 dataSourceList.setMinimumSize(
new java.awt.Dimension(0, 200));
175 jScrollPane1.setViewportView(dataSourceList);
177 org.openide.awt.Mnemonics.setLocalizedText(dataSourceCheckBox,
org.openide.util.NbBundle.getMessage(
DataSourcePanel.class,
"DataSourcePanel.dataSourceCheckBox.text"));
178 dataSourceCheckBox.addActionListener(
new java.awt.event.ActionListener() {
179 public void actionPerformed(java.awt.event.ActionEvent evt) {
180 dataSourceCheckBoxActionPerformed(evt);
184 dataSourceNoteLabel.setFont(dataSourceNoteLabel.getFont().deriveFont(dataSourceNoteLabel.getFont().getSize()-1f));
185 org.openide.awt.Mnemonics.setLocalizedText(dataSourceNoteLabel,
org.openide.util.NbBundle.getMessage(
DataSourcePanel.class,
"DataSourcePanel.dataSourceNoteLabel.text"));
186 dataSourceNoteLabel.setEnabled(
false);
188 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
189 this.setLayout(layout);
190 layout.setHorizontalGroup(
191 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
192 .addGroup(layout.createSequentialGroup()
193 .addComponent(dataSourceCheckBox)
194 .addGap(0, 0, Short.MAX_VALUE))
195 .addGroup(layout.createSequentialGroup()
197 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
198 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
199 .addGroup(layout.createSequentialGroup()
200 .addComponent(dataSourceNoteLabel)
201 .addGap(0, 0, Short.MAX_VALUE)))
204 layout.setVerticalGroup(
205 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
206 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
207 .addComponent(dataSourceCheckBox)
208 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
209 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE)
210 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
211 .addComponent(dataSourceNoteLabel)
215 dataSourceCheckBox.getAccessibleContext().setAccessibleName(
"");
219 setComponentsEnabled();
220 firePropertyChange(FileSearchPanel.EVENT.CHECKED.toString(), null, null);
221 this.dataSourceList.setSelectedIndices(
new int[0]);
javax.swing.JList< String > dataSourceList
void dataSourceCheckBoxActionPerformed(java.awt.event.ActionEvent evt)
List< String > getDataSourceArray()
javax.swing.JCheckBox dataSourceCheckBox
javax.swing.JScrollPane jScrollPane1
SleuthkitCase getSleuthkitCase()
synchronized static Logger getLogger(String name)
static Case getCurrentCaseThrows()
javax.swing.JLabel dataSourceNoteLabel