19 package org.sleuthkit.autopsy.modules.interestingitems;
21 import java.util.ArrayList;
22 import java.util.List;
23 import java.util.Observable;
24 import java.util.Observer;
25 import java.util.TreeMap;
26 import javax.swing.JTable;
27 import javax.swing.table.AbstractTableModel;
28 import javax.swing.table.TableColumn;
29 import org.openide.util.NbBundle.Messages;
37 final class FilesIdentifierIngestJobSettingsPanel
extends IngestModuleIngestJobSettingsPanel implements Observer {
40 "FilesIdentifierIngestJobSettingsPanel.updateError=Error updating interesting files sets settings file.",
41 "FilesIdentifierIngestJobSettingsPanel.getError=Error getting interesting files sets from settings file."
44 private final FilesSetsTableModel tableModel;
49 private TreeMap<String, FilesSet> filesSetSnapshot;
58 static FilesIdentifierIngestJobSettingsPanel makePanel(FilesIdentifierIngestJobSettings settings) {
59 FilesIdentifierIngestJobSettingsPanel panel =
new FilesIdentifierIngestJobSettingsPanel(settings);
65 FilesSetsManager.getInstance().addObserver(panel);
74 private FilesIdentifierIngestJobSettingsPanel(FilesIdentifierIngestJobSettings settings) {
84 List<FilesSetRow> filesSetRows =
new ArrayList<>();
86 this.filesSetSnapshot =
new TreeMap<>(FilesSetsManager.getInstance().getInterestingFilesSets());
87 }
catch (FilesSetsManager.FilesSetsManagerException ex) {
88 MessageNotifyUtil.Message.error(Bundle.FilesIdentifierIngestJobSettingsPanel_getError());
89 this.filesSetSnapshot =
new TreeMap<>();
91 for (FilesSet set : this.filesSetSnapshot.values()) {
92 filesSetRows.add(
new FilesSetRow(set, settings.interestingFilesSetIsEnabled(set.getName())));
96 this.tableModel =
new FilesSetsTableModel(filesSetRows);
101 this.filesSetTable.setModel(tableModel);
102 this.filesSetTable.setTableHeader(null);
103 this.filesSetTable.setRowSelectionAllowed(
false);
104 final int width = this.filesSetScrollPane.getPreferredSize().width;
105 this.filesSetTable.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
107 for (
int i = 0; i < this.filesSetTable.getColumnCount(); i++) {
108 column = this.filesSetTable.getColumnModel().getColumn(i);
110 column.setPreferredWidth(((
int) (width * 0.07)));
112 column.setPreferredWidth(((
int) (width * 0.92)));
118 public IngestModuleIngestJobSettings getSettings() {
119 List<String> enabledInterestingFilesSets =
new ArrayList<>();
120 List<String> disabledInterestingFilesSets =
new ArrayList<>();
121 for (FilesSetRow rowModel : this.tableModel.filesSetRows) {
122 if (rowModel.isEnabled()) {
123 enabledInterestingFilesSets.add(rowModel.getFilesSet().getName());
125 disabledInterestingFilesSets.add(rowModel.getFilesSet().getName());
128 return new FilesIdentifierIngestJobSettings(enabledInterestingFilesSets, disabledInterestingFilesSets);
132 public void update(Observable o, Object arg
135 FilesIdentifierIngestJobSettings settings = (FilesIdentifierIngestJobSettings) this.getSettings();
138 List<FilesSetRow> rowModels =
new ArrayList<>();
139 TreeMap<String, FilesSet> newFilesSetSnapshot;
141 newFilesSetSnapshot =
new TreeMap<>(FilesSetsManager.getInstance().getInterestingFilesSets());
142 }
catch (FilesSetsManager.FilesSetsManagerException ex) {
143 MessageNotifyUtil.Message.error(Bundle.FilesIdentifierIngestJobSettingsPanel_updateError());
146 for (FilesSet set : newFilesSetSnapshot.values()) {
147 if (this.filesSetSnapshot.keySet().contains(set.getName())) {
149 rowModels.add(
new FilesSetRow(set, settings.interestingFilesSetIsEnabled(set.getName())));
152 rowModels.add(
new FilesSetRow(set,
true));
155 this.tableModel.resetTableData(rowModels);
158 this.filesSetSnapshot = newFilesSetSnapshot;
187 void resetTableData(List<FilesSetRow> filesSetRows) {
189 this.fireTableDataChanged();
194 return this.filesSetRows.size();
204 if (columnIndex == 0) {
205 return this.filesSetRows.get(rowIndex).isEnabled();
207 return this.filesSetRows.get(rowIndex).getFilesSet().getName();
213 return (columnIndex == 0);
217 public void setValueAt(Object aValue,
int rowIndex,
int columnIndex) {
218 if (columnIndex == 0) {
219 this.filesSetRows.get(rowIndex).setEnabled((Boolean) aValue);
246 boolean isEnabled() {
250 void setEnabled(
boolean enabled) {
260 @SuppressWarnings(
"unchecked")
262 private
void initComponents() {
264 filesSetScrollPane =
new javax.swing.JScrollPane();
265 filesSetTable =
new javax.swing.JTable();
267 setBorder(javax.swing.BorderFactory.createTitledBorder(
org.openide.util.NbBundle.getMessage(FilesIdentifierIngestJobSettingsPanel.class,
"FilesIdentifierIngestJobSettingsPanel.border.title")));
269 filesSetTable.setBackground(
new java.awt.Color(240, 240, 240));
270 filesSetTable.setModel(
new javax.swing.table.DefaultTableModel(
278 filesSetTable.setShowHorizontalLines(
false);
279 filesSetTable.setShowVerticalLines(
false);
280 filesSetScrollPane.setViewportView(filesSetTable);
282 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
283 this.setLayout(layout);
284 layout.setHorizontalGroup(
285 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
286 .addGroup(layout.createSequentialGroup()
288 .addComponent(filesSetScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 242, Short.MAX_VALUE)
291 layout.setVerticalGroup(
292 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
293 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
295 .addComponent(filesSetScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 165, Short.MAX_VALUE)
301 private javax.swing.JScrollPane filesSetScrollPane;
302 private javax.swing.JTable filesSetTable;
Class<?> getColumnClass(int c)
Object getValueAt(int rowIndex, int columnIndex)
boolean isCellEditable(int rowIndex, int columnIndex)
List< FilesSetRow > filesSetRows
void setValueAt(Object aValue, int rowIndex, int columnIndex)