19 package org.sleuthkit.autopsy.ingest;
21 import java.awt.Component;
22 import java.awt.event.ActionEvent;
23 import java.awt.event.ActionListener;
24 import java.awt.event.WindowAdapter;
25 import java.awt.event.WindowEvent;
26 import java.util.ArrayList;
27 import java.util.List;
28 import javax.swing.JTable;
29 import javax.swing.ListSelectionModel;
30 import javax.swing.event.ListSelectionEvent;
31 import javax.swing.event.ListSelectionListener;
32 import javax.swing.table.AbstractTableModel;
33 import javax.swing.table.DefaultTableCellRenderer;
34 import javax.swing.table.TableColumn;
43 private final List<IngestModuleModel>
modules;
54 this.modules =
new ArrayList<>();
55 for (IngestModuleTemplate moduleTemplate : settings.getIngestModuleTemplates()) {
68 List<IngestModuleTemplate> moduleTemplates =
new ArrayList<>();
70 IngestModuleTemplate moduleTemplate = module.getIngestModuleTemplate();
71 if (module.hasModuleSettingsPanel()) {
73 moduleTemplate.setModuleSettings(moduleSettings);
75 moduleTemplates.add(moduleTemplate);
77 this.settings.setIngestModuleTemplates(moduleTemplates);
84 modulesTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
91 for (
int i = 0; i <
modulesTable.getColumnCount(); ++i) {
92 TableColumn column =
modulesTable.getColumnModel().getColumn(i);
94 column.setPreferredWidth(((
int) (width * 0.15)));
96 column.setCellRenderer(renderer);
97 column.setPreferredWidth(((
int) (width * 0.84)));
104 modulesTable.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
106 public void valueChanged(ListSelectionEvent e) {
107 ListSelectionModel listSelectionModel = (ListSelectionModel) e.getSource();
108 if (!listSelectionModel.isSelectionEmpty()) {
109 int index = listSelectionModel.getMinSelectionIndex();
110 selectedModule = modules.get(index);
112 if (null != selectedModule.getModuleSettingsPanel()) {
113 simplePanel.add(selectedModule.getModuleSettingsPanel());
117 advancedButton.setEnabled(null != selectedModule.getGlobalSettingsPanel());
132 @SuppressWarnings(
"unchecked")
136 timeGroup =
new javax.swing.ButtonGroup();
139 jPanel1 =
new javax.swing.JPanel();
149 setMaximumSize(
new java.awt.Dimension(5750, 3000));
150 setMinimumSize(
new java.awt.Dimension(522, 257));
151 setPreferredSize(
new java.awt.Dimension(575, 300));
153 modulesScrollPane.setBorder(javax.swing.BorderFactory.createLineBorder(
new java.awt.Color(160, 160, 160)));
156 modulesTable.setBackground(
new java.awt.Color(240, 240, 240));
157 modulesTable.setModel(
new javax.swing.table.DefaultTableModel(
169 jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(
new java.awt.Color(160, 160, 160)));
170 jPanel1.setPreferredSize(
new java.awt.Dimension(338, 257));
175 advancedButton.addActionListener(
new java.awt.event.ActionListener() {
176 public void actionPerformed(java.awt.event.ActionEvent evt) {
184 jScrollPane1.setPreferredSize(
new java.awt.Dimension(250, 180));
189 javax.swing.GroupLayout jPanel1Layout =
new javax.swing.GroupLayout(
jPanel1);
190 jPanel1.setLayout(jPanel1Layout);
191 jPanel1Layout.setHorizontalGroup(
192 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
193 .addComponent(
jSeparator2, javax.swing.GroupLayout.Alignment.TRAILING)
194 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
196 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
197 .addComponent(
jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
198 .addGroup(jPanel1Layout.createSequentialGroup()
199 .addComponent(
descriptionLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 203, javax.swing.GroupLayout.PREFERRED_SIZE)
200 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
204 jPanel1Layout.setVerticalGroup(
205 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
206 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
208 .addComponent(
jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)
209 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
210 .addComponent(
jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
211 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
212 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
213 .addComponent(
descriptionLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
220 public void actionPerformed(java.awt.event.ActionEvent evt) {
227 public void actionPerformed(java.awt.event.ActionEvent evt) {
235 public void actionPerformed(java.awt.event.ActionEvent evt) {
240 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
241 this.setLayout(layout);
242 layout.setHorizontalGroup(
243 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
244 .addGroup(layout.createSequentialGroup()
246 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
247 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
248 .addComponent(
modulesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
250 .addGroup(layout.createSequentialGroup()
252 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
254 .addGroup(layout.createSequentialGroup()
255 .addComponent(
jButtonSelectAll, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
258 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 30, Short.MAX_VALUE)))
259 .addComponent(
jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 310, Short.MAX_VALUE)
262 layout.setVerticalGroup(
263 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
264 .addGroup(layout.createSequentialGroup()
266 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
267 .addGroup(layout.createSequentialGroup()
268 .addComponent(
jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE)
270 .addGroup(layout.createSequentialGroup()
271 .addComponent(
modulesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
272 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
273 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
276 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
277 .addComponent(
processUnallocCheckbox, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))))
286 public void actionPerformed(ActionEvent e) {
287 if (selectedModule.hasGlobalSettingsPanel()) {
288 selectedModule.saveResourcesConfig();
294 dialog.addWindowListener(
new WindowAdapter() {
296 public void windowClosing(WindowEvent e) {
301 dialog.
display(selectedModule.getGlobalSettingsPanel());
318 module.setEnabled(set);
351 if (moduleTemplate.hasModuleSettingsPanel()) {
352 moduleSettingsPanel = moduleTemplate.getModuleSettingsPanel();
354 if (moduleTemplate.hasGlobalSettingsPanel()) {
355 globalSettingsPanel = moduleTemplate.getGlobalSettingsPanel();
359 IngestModuleTemplate getIngestModuleTemplate() {
364 return moduleTemplate.getModuleName();
367 String getDescription() {
368 return moduleTemplate.getModuleDescription();
371 void setEnabled(
boolean enabled) {
372 moduleTemplate.setEnabled(enabled);
375 boolean isEnabled() {
376 return moduleTemplate.isEnabled();
379 boolean hasModuleSettingsPanel() {
380 return moduleTemplate.hasModuleSettingsPanel();
383 IngestModuleIngestJobSettingsPanel getModuleSettingsPanel() {
387 boolean hasGlobalSettingsPanel() {
388 return moduleTemplate.hasGlobalSettingsPanel();
391 IngestModuleGlobalSettingsPanel getGlobalSettingsPanel() {
395 void saveResourcesConfig() {
408 return modules.size();
419 if (columnIndex == 0) {
420 return module.isEnabled();
422 return module.getName();
428 return columnIndex == 0;
432 public void setValueAt(Object aValue,
int rowIndex,
int columnIndex) {
433 if (columnIndex == 0) {
434 modules.get(rowIndex).setEnabled((
boolean) aValue);
450 List<String> tooltips =
new ArrayList<>();
454 tooltips.add(moduleTemplate.getDescription());
460 super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
462 setToolTipText(tooltips.get(row));
IngestJobSettingsPanel(IngestJobSettings settings)
void advancedButtonActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JSeparator jSeparator2
void processUnallocCheckboxActionPerformed(java.awt.event.ActionEvent evt)
void display(JPanel panel)
IngestModulesTableRenderer()
javax.swing.JCheckBox processUnallocCheckbox
javax.swing.JLabel descriptionLabel
void SelectAllModules(boolean set)
void addApplyButtonListener(ActionListener l)
javax.swing.JTable modulesTable
final List< IngestModuleModel > modules
void jButtonSelectAllActionPerformed(java.awt.event.ActionEvent evt)
Class<?> getColumnClass(int c)
abstract void saveSettings()
javax.swing.JButton jButtonSelectAll
IngestModuleGlobalSettingsPanel globalSettingsPanel
IngestJobSettings getSettings()
IngestModuleIngestJobSettingsPanel moduleSettingsPanel
javax.swing.ButtonGroup timeGroup
void setValueAt(Object aValue, int rowIndex, int columnIndex)
javax.swing.JScrollPane modulesScrollPane
javax.swing.JPanel simplePanel
javax.swing.JButton advancedButton
final IngestJobSettings settings
void jButtonDeselectAllActionPerformed(java.awt.event.ActionEvent evt)
Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
javax.swing.JPanel jPanel1
Object getValueAt(int rowIndex, int columnIndex)
boolean isCellEditable(int rowIndex, int columnIndex)
javax.swing.JScrollPane jScrollPane1
IngestModuleModel selectedModule
final IngestModuleTemplate moduleTemplate
void customizeComponents()
javax.swing.JButton jButtonDeselectAll