19 package org.sleuthkit.autopsy.ingest;
 
   21 import java.awt.Component;
 
   22 import java.awt.event.ActionEvent;
 
   23 import java.awt.event.WindowAdapter;
 
   24 import java.awt.event.WindowEvent;
 
   25 import java.util.ArrayList;
 
   26 import java.util.Arrays;
 
   27 import java.util.List;
 
   29 import java.util.logging.Level;
 
   30 import javax.swing.DefaultComboBoxModel;
 
   31 import javax.swing.Icon;
 
   32 import javax.swing.ImageIcon;
 
   33 import javax.swing.JDialog;
 
   34 import javax.swing.JLabel;
 
   35 import javax.swing.JTable;
 
   36 import javax.swing.ListSelectionModel;
 
   37 import javax.swing.SwingUtilities;
 
   38 import javax.swing.event.ListSelectionEvent;
 
   39 import javax.swing.table.AbstractTableModel;
 
   40 import javax.swing.table.DefaultTableCellRenderer;
 
   41 import javax.swing.table.TableColumn;
 
   42 import org.openide.util.NbBundle.Messages;
 
   61 @SuppressWarnings(
"PMD.SingularField") 
 
   64     private static final long serialVersionUID = 1L;
 
   65     private static ImageIcon warningIcon = 
new ImageIcon(
IngestJobSettingsPanel.class.getResource(
"/org/sleuthkit/autopsy/images/warning_triangle.png"));
 
   66     private static ImageIcon infoIcon = 
new ImageIcon(
IngestJobSettingsPanel.class.getResource(
"/org/sleuthkit/autopsy/images/information-frame.png"));
 
   68     private final List<Content> dataSources = 
new ArrayList<>();
 
   69     private final List<IngestJobInfo> ingestJobs = 
new ArrayList<>();
 
   70     private final List<IngestModuleModel> modules = 
new ArrayList<>();
 
   82         this.settings = settings;
 
   87         customizeComponents();
 
   99         this.settings = settings;
 
  100         this.dataSources.addAll(dataSources);
 
  103             ingestJobs.addAll(skCase.getIngestJobs());
 
  105             logger.log(Level.SEVERE, 
"No open case", ex);
 
  106         } 
catch (TskCoreException ex) {
 
  107             logger.log(Level.SEVERE, 
"Failed to load ingest job information", ex);
 
  113         customizeComponents();
 
  123         List<IngestModuleTemplate> moduleTemplates = 
new ArrayList<>();
 
  126             if (module.hasModuleSettingsPanel()) {
 
  130             moduleTemplates.add(moduleTemplate);
 
  133         return this.settings;
 
  136     @Messages({
"IngestJobSettingsPanel.noPerRunSettings=The selected module has no per-run settings."})
 
  138         modulesTable.setModel(tableModel);
 
  139         modulesTable.setTableHeader(null);
 
  140         modulesTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 
  146         int width = modulesScrollPane.getPreferredSize().width;
 
  147         for (
int i = 0; i < modulesTable.getColumnCount(); ++i) {
 
  148             TableColumn column = modulesTable.getColumnModel().getColumn(i);
 
  150                 column.setPreferredWidth(((
int) (width * 0.15)));
 
  152                 column.setCellRenderer(renderer);
 
  153                 column.setPreferredWidth(((
int) (width * 0.84)));
 
  160         modulesTable.getSelectionModel().addListSelectionListener((ListSelectionEvent e) -> {
 
  161             ListSelectionModel listSelectionModel = (ListSelectionModel) e.getSource();
 
  162             if (!listSelectionModel.isSelectionEmpty()) {
 
  163                 int index = listSelectionModel.getMinSelectionIndex();
 
  164                 selectedModule = modules.get(index);
 
  165                 ingestSettingsPanel.removeAll();
 
  166                 if (null != selectedModule.getModuleSettingsPanel()) {
 
  167                     ingestSettingsPanel.add(selectedModule.getModuleSettingsPanel());
 
  169                     ingestSettingsPanel.add(
new JLabel(Bundle.IngestJobSettingsPanel_noPerRunSettings()));
 
  171                 ingestSettingsPanel.revalidate();
 
  172                 ingestSettingsPanel.repaint();
 
  173                 globalSettingsButton.setEnabled(null != selectedModule.getGlobalSettingsPanel());
 
  174                 descriptionLabel.setText(selectedModule.getDescription());
 
  175                 descriptionLabel.setToolTipText(selectedModule.getDescription());
 
  178         modulesTable.setRowSelectionInterval(0, 0);
 
  179         this.modulesTable.getColumnModel().getColumn(0).setMaxWidth(22);
 
  180         this.modulesTable.getColumnModel().getColumn(1).setMaxWidth(20);
 
  181         this.modulesTable.getColumnModel().getColumn(1).setMinWidth(20);
 
  182         modulesTable.setRowHeight(20);
 
  188         pastJobsButton.setEnabled(!dataSources.isEmpty() && !ingestJobs.isEmpty());
 
  191     void setPastJobsButtonVisible(
boolean isVisible) {
 
  192         pastJobsButton.setVisible(isVisible);
 
  200     @SuppressWarnings(
"unchecked")
 
  202     private 
void initComponents() {
 
  204         timeGroup = 
new javax.swing.ButtonGroup();
 
  205         modulesScrollPane = 
new javax.swing.JScrollPane();
 
  206         modulesTable = 
new javax.swing.JTable();
 
  207         jPanel1 = 
new javax.swing.JPanel();
 
  208         globalSettingsButton = 
new javax.swing.JButton();
 
  209         jSeparator2 = 
new javax.swing.JSeparator();
 
  210         descriptionLabel = 
new javax.swing.JLabel();
 
  211         jScrollPane1 = 
new javax.swing.JScrollPane();
 
  212         ingestSettingsPanel = 
new javax.swing.JPanel();
 
  213         jButtonSelectAll = 
new javax.swing.JButton();
 
  214         jButtonDeselectAll = 
new javax.swing.JButton();
 
  215         pastJobsButton = 
new javax.swing.JButton();
 
  216         fileIngestFilterLabel = 
new javax.swing.JLabel();
 
  217         fileIngestFilterComboBox = 
new javax.swing.JComboBox<>();
 
  219         setMaximumSize(
new java.awt.Dimension(5750, 3000));
 
  220         setMinimumSize(
new java.awt.Dimension(0, 0));
 
  221         setPreferredSize(
new java.awt.Dimension(625, 450));
 
  223         modulesScrollPane.setBorder(javax.swing.BorderFactory.createLineBorder(
new java.awt.Color(160, 160, 160)));
 
  224         modulesScrollPane.setMinimumSize(
new java.awt.Dimension(0, 0));
 
  225         modulesScrollPane.setPreferredSize(
new java.awt.Dimension(160, 160));
 
  227         modulesTable.setBackground(
new java.awt.Color(240, 240, 240));
 
  228         modulesTable.setModel(
new javax.swing.table.DefaultTableModel(
 
  236         modulesTable.setShowHorizontalLines(
false);
 
  237         modulesTable.setShowVerticalLines(
false);
 
  238         modulesScrollPane.setViewportView(modulesTable);
 
  240         jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(
new java.awt.Color(160, 160, 160)));
 
  241         jPanel1.setPreferredSize(
new java.awt.Dimension(338, 257));
 
  243         globalSettingsButton.setText(
org.openide.util.NbBundle.getMessage(
IngestJobSettingsPanel.class, 
"IngestJobSettingsPanel.globalSettingsButton.text")); 
 
  244         globalSettingsButton.setActionCommand(
org.openide.util.NbBundle.getMessage(
IngestJobSettingsPanel.class, 
"IngestJobSettingsPanel.globalSettingsButton.actionCommand")); 
 
  245         globalSettingsButton.setEnabled(
false);
 
  246         globalSettingsButton.addActionListener(
new java.awt.event.ActionListener() {
 
  247             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  248                 globalSettingsButtonActionPerformed(evt);
 
  252         descriptionLabel.setText(
"DO NOT REMOVE. This dummy text is used to anchor the inner panel's size to the outer panel, while still being expandable. Without this the expandability behavior doesn't work well. This text will never be shown, as it would only be shown when no module is selected (which is not possible).");
 
  254         jScrollPane1.setBorder(null);
 
  255         jScrollPane1.setPreferredSize(
new java.awt.Dimension(250, 180));
 
  257         ingestSettingsPanel.setMinimumSize(
new java.awt.Dimension(0, 300));
 
  258         ingestSettingsPanel.setLayout(
new javax.swing.BoxLayout(ingestSettingsPanel, javax.swing.BoxLayout.PAGE_AXIS));
 
  259         jScrollPane1.setViewportView(ingestSettingsPanel);
 
  261         javax.swing.GroupLayout jPanel1Layout = 
new javax.swing.GroupLayout(jPanel1);
 
  262         jPanel1.setLayout(jPanel1Layout);
 
  263         jPanel1Layout.setHorizontalGroup(
 
  264             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  265             .addComponent(jSeparator2, javax.swing.GroupLayout.Alignment.TRAILING)
 
  266             .addGroup(jPanel1Layout.createSequentialGroup()
 
  268                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  269                     .addComponent(descriptionLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
 
  270                     .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 266, Short.MAX_VALUE)
 
  271                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
 
  272                         .addGap(0, 0, Short.MAX_VALUE)
 
  273                         .addComponent(globalSettingsButton)))
 
  276         jPanel1Layout.setVerticalGroup(
 
  277             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  278             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
 
  280                 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
 
  282                 .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  284                 .addComponent(descriptionLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  285                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  286                 .addComponent(globalSettingsButton)
 
  290         jButtonSelectAll.setText(
org.openide.util.NbBundle.getMessage(
IngestJobSettingsPanel.class, 
"IngestJobSettingsPanel.jButtonSelectAll.text")); 
 
  291         jButtonSelectAll.setMargin(
new java.awt.Insets(2, 8, 2, 8));
 
  292         jButtonSelectAll.setMaximumSize(
new java.awt.Dimension(87, 23));
 
  293         jButtonSelectAll.setMinimumSize(
new java.awt.Dimension(87, 23));
 
  294         jButtonSelectAll.addActionListener(
new java.awt.event.ActionListener() {
 
  295             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  296                 jButtonSelectAllActionPerformed(evt);
 
  300         jButtonDeselectAll.setText(
org.openide.util.NbBundle.getMessage(
IngestJobSettingsPanel.class, 
"IngestJobSettingsPanel.jButtonDeselectAll.text")); 
 
  301         jButtonDeselectAll.setMargin(
new java.awt.Insets(2, 8, 2, 8));
 
  302         jButtonDeselectAll.addActionListener(
new java.awt.event.ActionListener() {
 
  303             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  304                 jButtonDeselectAllActionPerformed(evt);
 
  308         pastJobsButton.setText(
org.openide.util.NbBundle.getMessage(
IngestJobSettingsPanel.class, 
"IngestJobSettingsPanel.pastJobsButton.text")); 
 
  309         pastJobsButton.setMargin(
new java.awt.Insets(2, 8, 2, 8));
 
  310         pastJobsButton.setMaximumSize(
new java.awt.Dimension(87, 23));
 
  311         pastJobsButton.setMinimumSize(
new java.awt.Dimension(87, 23));
 
  312         pastJobsButton.addActionListener(
new java.awt.event.ActionListener() {
 
  313             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  314                 pastJobsButtonActionPerformed(evt);
 
  318         fileIngestFilterLabel.setText(
org.openide.util.NbBundle.getMessage(
IngestJobSettingsPanel.class, 
"IngestJobSettingsPanel.fileIngestFilterLabel.text")); 
 
  320         fileIngestFilterComboBox.setModel(
new DefaultComboBoxModel<>(getComboBoxContents()));
 
  321         fileIngestFilterComboBox.addActionListener(
new java.awt.event.ActionListener() {
 
  322             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  323                 fileIngestFilterComboBoxActionPerformed(evt);
 
  327         javax.swing.GroupLayout layout = 
new javax.swing.GroupLayout(
this);
 
  328         this.setLayout(layout);
 
  329         layout.setHorizontalGroup(
 
  330             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  331             .addGroup(layout.createSequentialGroup()
 
  333                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, 
false)
 
  334                     .addGroup(layout.createSequentialGroup()
 
  335                         .addComponent(jButtonSelectAll, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 
  336                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  337                         .addComponent(jButtonDeselectAll, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 
  338                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  339                         .addComponent(pastJobsButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
 
  340                     .addComponent(modulesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 
  341                     .addComponent(fileIngestFilterLabel)
 
  342                     .addComponent(fileIngestFilterComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
 
  344                 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 284, Short.MAX_VALUE)
 
  348         layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, 
new java.awt.Component[] {jButtonDeselectAll, jButtonSelectAll, pastJobsButton});
 
  350         layout.setVerticalGroup(
 
  351             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  352             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
 
  354                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
 
  355                     .addGroup(layout.createSequentialGroup()
 
  356                         .addComponent(fileIngestFilterLabel)
 
  357                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  358                         .addComponent(fileIngestFilterComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  359                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  360                         .addComponent(modulesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 
  361                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  362                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  363                             .addComponent(jButtonSelectAll, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  364                             .addComponent(jButtonDeselectAll)
 
  365                             .addComponent(pastJobsButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
 
  366                     .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 426, Short.MAX_VALUE))
 
  375             if (selectedModule.hasGlobalSettingsPanel()) {
 
  376                 selectedModule.saveResourcesConfig();
 
  381         dialog.addWindowListener(
new WindowAdapter() {
 
  383             public void windowClosing(WindowEvent e) {
 
  388         dialog.
display(selectedModule.getGlobalSettingsPanel());
 
  392         SelectAllModules(
true);
 
  396         SelectAllModules(
false);
 
  398     @Messages({
"IngestJobSettingsPanel.pastJobsButton.action.frame.title=Ingest History"})
 
  400         JDialog topFrame = (JDialog) SwingUtilities.getWindowAncestor(
this);
 
  401         JDialog dialog = 
new JDialog(topFrame, Bundle.IngestJobSettingsPanel_pastJobsButton_action_frame_title(), 
false);
 
  403         dialog.add(ingestInfo);
 
  404         dialog.setLocationRelativeTo(topFrame);
 
  405         dialog.setResizable(
true);
 
  407         dialog.setVisible(
true);
 
  415             fileIngestFilterPanel.
load();
 
  417             final ArrayList<String> oldFilterList = 
new ArrayList<>(Arrays.asList(getComboBoxContents()));
 
  420                         fileIngestFilterPanel.
store();
 
  421                         ArrayList<FilesSet> newFilterList = 
new ArrayList<>();
 
  425                             logger.log(Level.SEVERE, 
"Failed to get user created file ingest filters, only default available for selection", ex); 
 
  428                         for (
FilesSet filter : newFilterList) {  
 
  429                             if (!oldFilterList.contains(filter.getName())) {
 
  431                                 filterToSelect = filter.getName();
 
  435                         fileIngestFilterComboBox.setModel(
new DefaultComboBoxModel<>(getComboBoxContents()));
 
  437                         fileIngestFilterComboBox.setSelectedItem(filterToSelect);
 
  440                         updateSelectedFilter(filterToSelect);
 
  444             dialog.
display(fileIngestFilterPanel);
 
  447         } 
else if (evt.getActionCommand().equals(
"comboBoxChanged")) {
 
  448             updateSelectedFilter(fileIngestFilterComboBox.getSelectedItem().toString());
 
  457                 fileIngestFilters.put(fSet.getName(), fSet);
 
  463             logger.log(Level.SEVERE, 
"Failed to get file ingest filter from combobox selection, default filter being used", ex); 
 
  478         ArrayList<String> nameList = 
new ArrayList<>();
 
  480             nameList.add(fSet.getName());
 
  484                 nameList.add(fSet.getName());
 
  487             logger.log(Level.SEVERE, 
"Failed to get user created file ingest filters for combo box, only default available for selection", ex); 
 
  490         return nameList.toArray(
new String[nameList.size()]);
 
  495             module.setEnabled(set);
 
  497         modulesTable.repaint();
 
  529             this.moduleTemplate = moduleTemplate;
 
  539             return moduleTemplate;
 
  546         String getDescription() {
 
  550         void setEnabled(
boolean enabled) {
 
  554         boolean isEnabled() {
 
  558         boolean hasModuleSettingsPanel() {
 
  562         IngestModuleIngestJobSettingsPanel getModuleSettingsPanel() {
 
  563             return moduleSettingsPanel;
 
  566         boolean hasGlobalSettingsPanel() {
 
  570         IngestModuleGlobalSettingsPanel getGlobalSettingsPanel() {
 
  571             return globalSettingsPanel;
 
  574         void saveResourcesConfig() {
 
  585         private static final long serialVersionUID = 1L;
 
  589             return modules.size();
 
  600             switch (columnIndex) {
 
  602                     return module.isEnabled();
 
  604                     return getIcon(module);
 
  606                     return module.getName();
 
  612             return columnIndex == 0;
 
  616         public void setValueAt(Object aValue, 
int rowIndex, 
int columnIndex) {
 
  617             if (columnIndex == 0) {
 
  618                 modules.get(rowIndex).setEnabled((
boolean) aValue);
 
  624             return getValueAt(0, c).getClass();
 
  628             if (dataSources.isEmpty() || ingestJobs.isEmpty()) {
 
  631             boolean previousVersionRun = 
false;
 
  632             for (IngestJobInfo ingestJob : ingestJobs) {
 
  633                 if (ingestJob.getStatus() != IngestJobInfo.IngestJobStatusType.COMPLETED) {
 
  636                 long objectId = ingestJob.getObjectId();
 
  637                 boolean isSameDataSource = 
false;
 
  638                 for (Content dataSource : dataSources) {
 
  639                     isSameDataSource = isSameDataSource || dataSource.getId() == objectId;
 
  641                 if (isSameDataSource) {
 
  644                         String uniqueName = FactoryClassNameNormalizer.normalize(factory.getClass().getCanonicalName()) + 
"-" 
  646                                 + IngestModuleInfo.IngestModuleType.DATA_SOURCE_LEVEL.toString() + 
"-" 
  648                         for (IngestModuleInfo ingestModuleInfo : ingestJob.getIngestModuleInfo()) {
 
  649                             boolean sameModule = ingestModuleInfo.getUniqueName().equals(uniqueName);
 
  655                             previousVersionRun = previousVersionRun || sameModule;
 
  659                         String uniqueName = FactoryClassNameNormalizer.normalize(factory.getClass().getCanonicalName()) + 
"-" 
  661                                 + IngestModuleInfo.IngestModuleType.FILE_LEVEL.toString() + 
"-" 
  663                         for (IngestModuleInfo ingestModuleInfo : ingestJob.getIngestModuleInfo()) {
 
  664                             boolean sameModule = ingestModuleInfo.getUniqueName().equals(uniqueName);
 
  670                             previousVersionRun = previousVersionRun || sameModule;
 
  675             if (previousVersionRun) {
 
  686     @Messages({
"IngestJobSettingsPanel.IngestModulesTableRenderer.warning.message=This ingest module has been run before on this data source.",
 
  687         "IngestJobSettingsPanel.IngestModulesTableRenderer.info.message=A previous version of this ingest module has been run before on this data source."})
 
  690         private static final long serialVersionUID = 1L;
 
  692         List<String> tooltips = 
new ArrayList<>();
 
  696                 tooltips.add(moduleTemplate.getDescription());
 
  702             super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
 
  705                 setToolTipText(tooltips.get(row));
 
  706             } 
else if (1 == column) {
 
  707                 setIcon((Icon) value);
 
  709                 if (warningIcon.equals(value)) {
 
  710                     setToolTipText(Bundle.IngestJobSettingsPanel_IngestModulesTableRenderer_warning_message());
 
  711                 } 
else if (infoIcon.equals(value)) {
 
  712                     setToolTipText(Bundle.IngestJobSettingsPanel_IngestModulesTableRenderer_info_message());
 
IngestJobSettingsPanel(IngestJobSettings settings, List< Content > dataSources)
IngestJobSettingsPanel(IngestJobSettings settings)
IngestModuleFactory getModuleFactory()
javax.swing.JSeparator jSeparator2
javax.swing.JLabel fileIngestFilterLabel
String getModuleVersionNumber()
void display(JPanel panel)
static List< FilesSet > getStandardFileIngestFilters()
boolean isFileIngestModuleFactory()
void setEnabled(boolean enabled)
IngestModulesTableRenderer()
void updateSelectedFilter(String filterName)
void pastJobsButtonActionPerformed(java.awt.event.ActionEvent evt)
static synchronized FilesSetsManager getInstance()
javax.swing.JLabel descriptionLabel
void SelectAllModules(boolean set)
void addApplyButtonListener(ActionListener l)
javax.swing.JTable modulesTable
void jButtonSelectAllActionPerformed(java.awt.event.ActionEvent evt)
Class<?> getColumnClass(int c)
Map< String, FilesSet > getCustomFileIngestFilters()
void setIngestModuleTemplates(List< IngestModuleTemplate > moduleTemplates)
void globalSettingsButtonActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JButton pastJobsButton
boolean hasGlobalSettingsPanel()
javax.swing.JComboBox< String > fileIngestFilterComboBox
ImageIcon getIcon(IngestModuleModel module)
abstract void saveSettings()
javax.swing.JButton jButtonSelectAll
String[] getComboBoxContents()
static String getCreateNewFileIngestFilterString()
IngestJobSettings getSettings()
void setFileFilter(FilesSet fileIngestFilter)
javax.swing.ButtonGroup timeGroup
static FilesSet getDefaultFilter()
SleuthkitCase getSleuthkitCase()
void setValueAt(Object aValue, int rowIndex, int columnIndex)
javax.swing.JScrollPane modulesScrollPane
void fileIngestFilterComboBoxActionPerformed(java.awt.event.ActionEvent evt)
boolean hasModuleSettingsPanel()
final IngestJobSettings settings
void jButtonDeselectAllActionPerformed(java.awt.event.ActionEvent evt)
List< IngestModuleTemplate > getIngestModuleTemplates()
Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
javax.swing.JPanel jPanel1
Object getValueAt(int rowIndex, int columnIndex)
synchronized static Logger getLogger(String name)
boolean isCellEditable(int rowIndex, int columnIndex)
javax.swing.JScrollPane jScrollPane1
static Case getCurrentCaseThrows()
IngestModuleModel selectedModule
String getModuleDisplayName()
String getModuleDescription()
javax.swing.JButton globalSettingsButton
final IngestModuleTemplate moduleTemplate
javax.swing.JPanel ingestSettingsPanel
IngestModuleGlobalSettingsPanel getGlobalSettingsPanel()
void setModuleSettings(IngestModuleIngestJobSettings settings)
IngestModuleIngestJobSettingsPanel getModuleSettingsPanel()
boolean isDataSourceIngestModuleFactory()
void customizeComponents()
javax.swing.JButton jButtonDeselectAll