19 package org.sleuthkit.autopsy.modules.hashdatabase;
 
   21 import java.awt.Color;
 
   22 import java.awt.Component;
 
   23 import java.awt.EventQueue;
 
   24 import java.awt.Frame;
 
   25 import java.awt.event.KeyEvent;
 
   26 import java.beans.PropertyChangeEvent;
 
   27 import java.beans.PropertyChangeListener;
 
   29 import java.util.ArrayList;
 
   30 import java.util.List;
 
   31 import java.util.logging.Level;
 
   32 import javax.swing.JComponent;
 
   33 import javax.swing.JOptionPane;
 
   34 import javax.swing.JTable;
 
   35 import javax.swing.ListSelectionModel;
 
   36 import javax.swing.SwingUtilities;
 
   37 import javax.swing.event.ListSelectionEvent;
 
   38 import javax.swing.event.ListSelectionListener;
 
   39 import javax.swing.table.AbstractTableModel;
 
   40 import javax.swing.table.TableCellRenderer;
 
   41 import org.netbeans.spi.options.OptionsPanelController;
 
   42 import org.openide.util.NbBundle;
 
   43 import org.openide.util.NbBundle.Messages;
 
   61 @SuppressWarnings(
"PMD.SingularField") 
 
   64     private static final String NO_SELECTION_TEXT = NbBundle
 
   66     private static final String ERROR_GETTING_PATH_TEXT = NbBundle
 
   68     private static final String ERROR_GETTING_INDEX_STATUS_TEXT = NbBundle
 
   72     private final List<Integer> newReferenceSetIDs = 
new ArrayList<>();
 
   76         customizeComponents();
 
   77         updateComponentsForNoSelection();
 
   83             public void propertyChange(PropertyChangeEvent evt) {
 
   84                 if (isLocalIngestJobEvent(evt)) {
 
   85                     EventQueue.invokeLater(
new Runnable() {
 
   96     @NbBundle.Messages({
"HashLookupSettingsPanel.Title=Global Hash Lookup Settings"})
 
   98         setName(Bundle.HashLookupSettingsPanel_Title());
 
   99         this.ingestWarningLabel.setVisible(
false);
 
  100         this.hashSetTable.setModel(hashSetTableModel);
 
  101         this.hashSetTable.setTableHeader(null);
 
  102         hashSetTable.getParent().setBackground(hashSetTable.getBackground());
 
  103         hashSetTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 
  104         hashSetTable.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
 
  106             public void valueChanged(ListSelectionEvent e) {
 
  107                 if (!e.getValueIsAdjusting()) {
 
  117             updateComponentsForSelection(db);
 
  119             updateComponentsForNoSelection();
 
  127         hashDbNameLabel.setText(NO_SELECTION_TEXT);
 
  128         hashDbTypeLabel.setText(NO_SELECTION_TEXT);
 
  129         hashDbLocationLabel.setText(NO_SELECTION_TEXT);
 
  130         hashDbVersionLabel.setText(NO_SELECTION_TEXT);
 
  131         hashDbOrgLabel.setText(NO_SELECTION_TEXT);
 
  132         hashDbReadOnlyLabel.setText(NO_SELECTION_TEXT);
 
  133         indexPathLabel.setText(NO_SELECTION_TEXT);
 
  136         hashDbIndexStatusLabel.setText(NO_SELECTION_TEXT);
 
  137         hashDbIndexStatusLabel.setForeground(Color.black);
 
  138         indexButton.setText(NbBundle.getMessage(
this.getClass(), 
"HashDbConfigPanel.indexButtonText.index"));
 
  139         indexButton.setEnabled(
false);
 
  140         addHashesToDatabaseButton.setEnabled(
false);
 
  143         sendIngestMessagesCheckBox.setSelected(
false);
 
  144         sendIngestMessagesCheckBox.setEnabled(
false);
 
  147         createDatabaseButton.setEnabled(
true);
 
  148         importDatabaseButton.setEnabled(
true);
 
  149         deleteDatabaseButton.setEnabled(
false);
 
  152         ingestWarningLabel.setVisible(ingestIsRunning);
 
  155     @NbBundle.Messages({
"HashLookupSettingsPanel.readOnly=Read only",
 
  156         "HashLookupSettingsPanel.editable=Editable",
 
  157         "HashLookupSettingsPanel.updateStatusError=Error reading status",
 
  158         "HashLookupSettingsPanel.notApplicable=N/A",
 
  159         "HashLookupSettingsPanel.centralRepo=Central Repository" 
  169                 hashDbReadOnlyLabel.setText(Bundle.HashLookupSettingsPanel_editable());
 
  171                 hashDbReadOnlyLabel.setText(Bundle.HashLookupSettingsPanel_readOnly());
 
  173         } 
catch (TskCoreException ex) {
 
  174             hashDbReadOnlyLabel.setText(Bundle.HashLookupSettingsPanel_updateStatusError());
 
  178             addHashesToDatabaseButton.setEnabled(!ingestIsRunning && db.
isUpdateable());
 
  179         } 
catch (TskCoreException ex) {
 
  181             addHashesToDatabaseButton.setEnabled(
false);
 
  184         if (db instanceof SleuthkitHashSet) {
 
  185             SleuthkitHashSet hashDb = (SleuthkitHashSet) db;
 
  188             hashDbVersionLabel.setText(Bundle.HashLookupSettingsPanel_notApplicable());
 
  189             hashDbOrgLabel.setText(Bundle.HashLookupSettingsPanel_notApplicable());
 
  192             deleteDatabaseButton.setEnabled(!ingestIsRunning);
 
  196             } 
catch (TskCoreException ex) {
 
  198                 hashDbLocationLabel.setText(ERROR_GETTING_PATH_TEXT);
 
  202                 indexPathLabel.setText(hashDb.getIndexPath());
 
  203             } 
catch (TskCoreException ex) {
 
  205                 indexPathLabel.setText(ERROR_GETTING_PATH_TEXT);
 
  210                 if (hashDb.isIndexing()) {
 
  212                             NbBundle.getMessage(
this.getClass(), 
"HashDbConfigPanel.indexButtonText.indexing"));
 
  213                     hashDbIndexStatusLabel.setText(
 
  214                             NbBundle.getMessage(
this.getClass(), 
"HashDbConfigPanel.indexStatusText.indexGen"));
 
  215                     hashDbIndexStatusLabel.setForeground(Color.black);
 
  216                     indexButton.setEnabled(
false);
 
  217                 } 
else if (hashDb.hasIndex()) {
 
  218                     if (hashDb.hasIndexOnly()) {
 
  219                         hashDbIndexStatusLabel.setText(
 
  220                                 NbBundle.getMessage(
this.getClass(), 
"HashDbConfigPanel.indexStatusText.indexOnly"));
 
  222                         hashDbIndexStatusLabel.setText(
 
  223                                 NbBundle.getMessage(
this.getClass(), 
"HashDbConfigPanel.indexStatusText.indexed"));
 
  225                     hashDbIndexStatusLabel.setForeground(Color.black);
 
  226                     if (hashDb.canBeReIndexed()) {
 
  228                                 NbBundle.getMessage(
this.getClass(), 
"HashDbConfigPanel.indexButtonText.reIndex"));
 
  229                         indexButton.setEnabled(
true);
 
  231                         indexButton.setText(NbBundle.getMessage(
this.getClass(), 
"HashDbConfigPanel.indexButtonText.index"));
 
  232                         indexButton.setEnabled(
false);
 
  235                     hashDbIndexStatusLabel.setText(
 
  236                             NbBundle.getMessage(
this.getClass(), 
"HashDbConfigPanel.indexStatusText.noIndex"));
 
  237                     hashDbIndexStatusLabel.setForeground(Color.red);
 
  238                     indexButton.setText(NbBundle.getMessage(
this.getClass(), 
"HashDbConfigPanel.indexButtonText.index"));
 
  239                     indexButton.setEnabled(
true);
 
  241             } 
catch (TskCoreException ex) {
 
  243                 hashDbIndexStatusLabel.setText(ERROR_GETTING_INDEX_STATUS_TEXT);
 
  244                 hashDbIndexStatusLabel.setForeground(Color.red);
 
  245                 indexButton.setText(NbBundle.getMessage(
this.getClass(), 
"HashDbConfigPanel.indexButtonText.index"));
 
  246                 indexButton.setEnabled(
false);
 
  251             indexPathLabel.setText(Bundle.HashLookupSettingsPanel_notApplicable());
 
  252             hashDbIndexStatusLabel.setText(Bundle.HashLookupSettingsPanel_notApplicable());
 
  253             hashDbLocationLabel.setText(Bundle.HashLookupSettingsPanel_centralRepo());
 
  254             indexButton.setEnabled(
false);
 
  255             deleteDatabaseButton.setEnabled(
false);
 
  257             CentralRepoHashSet crDb = (CentralRepoHashSet) db;
 
  259             hashDbVersionLabel.setText(crDb.getVersion());
 
  260             hashDbOrgLabel.setText(crDb.getOrgName());
 
  264         if (ingestIsRunning) {
 
  265             indexButton.setEnabled(
false);
 
  273         createDatabaseButton.setEnabled(
true);
 
  274         importDatabaseButton.setEnabled(
true);
 
  277         ingestWarningLabel.setVisible(ingestIsRunning);
 
  282             AutopsyEvent 
event = (AutopsyEvent) evt;
 
  283             if (event.getSourceType() == AutopsyEvent.SourceType.LOCAL) {
 
  284                 String eventType = 
event.getPropertyName();
 
  294     @Messages({
"HashLookupSettingsPanel.saveFail.message=Couldn't save hash set settings.",
 
  295         "HashLookupSettingsPanel.saveFail.title=Save Fail"})
 
  299         newReferenceSetIDs.clear();
 
  302         List<SleuthkitHashSet> unindexed = 
new ArrayList<>();
 
  304             if (db instanceof SleuthkitHashSet) {
 
  306                     SleuthkitHashSet hashDatabase = (SleuthkitHashSet) db;
 
  307                     if (!hashDatabase.hasIndex()) {
 
  308                         unindexed.add(hashDatabase);
 
  310                 } 
catch (TskCoreException ex) {
 
  318         if (!unindexed.isEmpty()) {
 
  319             SwingUtilities.invokeLater(
new Runnable() {
 
  323                     if (unindexed.size() == 1) {
 
  324                         showInvalidIndex(
false, unindexed);
 
  325                     } 
else if (unindexed.size() > 1) {
 
  326                         showInvalidIndex(
true, unindexed);
 
  332                 hashSetManager.save();
 
  334                 SwingUtilities.invokeLater(() -> {
 
  335                     JOptionPane.showMessageDialog(
this, Bundle.HashLookupSettingsPanel_saveFail_message(), Bundle.HashLookupSettingsPanel_saveFail_title(), JOptionPane.ERROR_MESSAGE);
 
  343         hashSetTable.clearSelection();
 
  344         hashSetTableModel.refreshModel();
 
  360             for (
int refID : newReferenceSetIDs) {
 
  377     @Messages({
"# {0} - hash lookup name", 
"HashLookupSettingsPanel.removeDatabaseFailure.message=Failed to remove hash lookup: {0}"})
 
  378     void removeThese(List<SleuthkitHashSet> toRemove) {
 
  379         for (SleuthkitHashSet hashDb : toRemove) {
 
  382             } 
catch (HashDbManager.HashDbManagerException ex) {
 
  383                 JOptionPane.showMessageDialog(
this, Bundle.HashLookupSettingsPanel_removeDatabaseFailure_message(hashDb.getHashSetName()));
 
  386         hashSetTableModel.refreshModel();
 
  400         for (
HashDb hdb : unindexed) {
 
  401             total += 
"\n" + hdb.getHashSetName();
 
  404             message = NbBundle.getMessage(this.getClass(), 
"HashDbConfigPanel.dbsNotIndexedMsg", total);
 
  406             message = NbBundle.getMessage(this.getClass(), 
"HashDbConfigPanel.dbNotIndexedMsg", total);
 
  408         int res = JOptionPane.showConfirmDialog(
this, message,
 
  409                 NbBundle.getMessage(
this.getClass(),
 
  410                         "HashDbConfigPanel.unindexedDbsMsg"),
 
  411                 JOptionPane.YES_NO_OPTION);
 
  412         if (res == JOptionPane.YES_OPTION) {
 
  413             ModalNoButtons indexingDialog = 
new ModalNoButtons(
this, 
new Frame(), unindexed);
 
  414             indexingDialog.setLocationRelativeTo(null);
 
  415             indexingDialog.setVisible(
true);
 
  416             indexingDialog.setModal(
true);
 
  417             hashSetTableModel.refreshModel();
 
  419         if (res == JOptionPane.NO_OPTION) {
 
  420             JOptionPane.showMessageDialog(
this, NbBundle.getMessage(
this.getClass(),
 
  421                     "HashDbConfigPanel.allUnindexedDbsRmFromListMsg"));
 
  422             removeThese(unindexed);
 
  425             hashSetManager.save();
 
  427             JOptionPane.showMessageDialog(
this, Bundle.HashLookupSettingsPanel_saveFail_message(), Bundle.HashLookupSettingsPanel_saveFail_title(), JOptionPane.ERROR_MESSAGE);
 
  443             JComponent cellRenderer = (JComponent) super.prepareRenderer(renderer, row, column);
 
  444             cellRenderer.setToolTipText((String) getValueAt(row, column));
 
  449             if (hashSetTableModel.
isValid(row)) {
 
  450                 cellRenderer.setForeground(Color.black);
 
  452                 cellRenderer.setForeground(Color.red);
 
  459             return hashSetTableModel.getHashSetAt(getSelectionModel().getMinSelectionIndex());
 
  463             if (index >= 0 && index < hashSetTable.getRowCount()) {
 
  464                 getSelectionModel().setSelectionInterval(index, index);
 
  469             setSelection(hashSetTableModel.getIndexByDatabase(db));
 
  474             setSelection(hashSetTableModel.getIndexByName(name));
 
  493             return hashSets.size();
 
  498             return NbBundle.getMessage(this.getClass(), 
"HashDbConfigPanel.nameColLbl");
 
  503             return hashSets.get(rowIndex).getDisplayName();
 
  508                 return hashSets.get(rowIndex).isValid();
 
  509             } 
catch (TskCoreException ex) {
 
  521         public void setValueAt(Object aValue, 
int rowIndex, 
int columnIndex) {
 
  522             throw new UnsupportedOperationException(
 
  523                     NbBundle.getMessage(
this.getClass(), 
"HashDbConfigPanel.editingCellsNotSupportedMsg"));
 
  528             return getValueAt(0, c).getClass();
 
  531         HashDb getHashSetAt(
int index) {
 
  532             if (!hashSets.isEmpty() && index >= 0 && index < hashSets.size()) {
 
  533                 return hashSets.get(index);
 
  539         int getIndexByDatabase(HashDb db) {
 
  540             for (
int i = 0; i < hashSets.size(); ++i) {
 
  541                 if (hashSets.get(i).equals(db)) {
 
  549         int getIndexByName(String name) {
 
  550             for (
int i = 0; i < hashSets.size(); ++i) {
 
  551                 if (hashSets.get(i).getHashSetName().equals(name)) {
 
  558         void refreshModel() {
 
  559             hashSets = HashDbManager.getInstance().getAllHashSets();
 
  563         void refreshDisplay() {
 
  564             fireTableDataChanged();
 
  576         jLabel2 = 
new javax.swing.JLabel();
 
  577         jLabel4 = 
new javax.swing.JLabel();
 
  578         jLabel6 = 
new javax.swing.JLabel();
 
  579         jButton3 = 
new javax.swing.JButton();
 
  580         jScrollPane2 = 
new javax.swing.JScrollPane();
 
  581         jPanel1 = 
new javax.swing.JPanel();
 
  582         hashDatabasesLabel = 
new javax.swing.JLabel();
 
  583         jScrollPane1 = 
new javax.swing.JScrollPane();
 
  585         createDatabaseButton = 
new javax.swing.JButton();
 
  586         importDatabaseButton = 
new javax.swing.JButton();
 
  587         deleteDatabaseButton = 
new javax.swing.JButton();
 
  588         informationLabel = 
new javax.swing.JLabel();
 
  589         informationScrollPanel = 
new javax.swing.JScrollPane();
 
  590         informationPanel = 
new javax.swing.JPanel();
 
  591         nameLabel = 
new javax.swing.JLabel();
 
  592         hashDbNameLabel = 
new javax.swing.JLabel();
 
  593         typeLabel = 
new javax.swing.JLabel();
 
  594         hashDbTypeLabel = 
new javax.swing.JLabel();
 
  595         locationLabel = 
new javax.swing.JLabel();
 
  596         hashDbLocationLabel = 
new javax.swing.JLabel();
 
  597         versionLabel = 
new javax.swing.JLabel();
 
  598         hashDbVersionLabel = 
new javax.swing.JLabel();
 
  599         orgLabel = 
new javax.swing.JLabel();
 
  600         hashDbOrgLabel = 
new javax.swing.JLabel();
 
  601         readOnlyLabel = 
new javax.swing.JLabel();
 
  602         hashDbReadOnlyLabel = 
new javax.swing.JLabel();
 
  603         indexPathLabelLabel = 
new javax.swing.JLabel();
 
  604         indexPathLabel = 
new javax.swing.JLabel();
 
  605         indexLabel = 
new javax.swing.JLabel();
 
  606         hashDbIndexStatusLabel = 
new javax.swing.JLabel();
 
  607         indexButton = 
new javax.swing.JButton();
 
  608         addHashesToDatabaseButton = 
new javax.swing.JButton();
 
  609         sendIngestMessagesCheckBox = 
new javax.swing.JCheckBox();
 
  610         ingestWarningLabel = 
new javax.swing.JLabel();
 
  612         jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  613         org.openide.awt.Mnemonics.setLocalizedText(jLabel2, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.jLabel2.text")); 
 
  615         jLabel4.setFont(jLabel4.getFont().deriveFont(jLabel4.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  616         org.openide.awt.Mnemonics.setLocalizedText(jLabel4, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.jLabel4.text")); 
 
  618         jLabel6.setFont(jLabel6.getFont().deriveFont(jLabel6.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  619         org.openide.awt.Mnemonics.setLocalizedText(jLabel6, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.jLabel6.text")); 
 
  621         jButton3.setFont(jButton3.getFont().deriveFont(jButton3.getFont().getStyle() & ~java.awt.Font.BOLD, 14));
 
  622         org.openide.awt.Mnemonics.setLocalizedText(jButton3, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.jButton3.text")); 
 
  624         hashDatabasesLabel.setFont(hashDatabasesLabel.getFont().deriveFont(hashDatabasesLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  625         org.openide.awt.Mnemonics.setLocalizedText(hashDatabasesLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.hashDatabasesLabel.text")); 
 
  627         hashSetTable.setFont(hashSetTable.getFont().deriveFont(hashSetTable.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  628         hashSetTable.setModel(
new javax.swing.table.DefaultTableModel(
 
  636         hashSetTable.setShowHorizontalLines(
false);
 
  637         hashSetTable.setShowVerticalLines(
false);
 
  638         hashSetTable.addKeyListener(
new java.awt.event.KeyAdapter() {
 
  639             public void keyPressed(java.awt.event.KeyEvent evt) {
 
  640                 hashSetTableKeyPressed(evt);
 
  643         jScrollPane1.setViewportView(hashSetTable);
 
  645         createDatabaseButton.setFont(createDatabaseButton.getFont().deriveFont(createDatabaseButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  646         createDatabaseButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/modules/hashdatabase/new16.png"))); 
 
  647         org.openide.awt.Mnemonics.setLocalizedText(createDatabaseButton, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.createDatabaseButton.text")); 
 
  648         createDatabaseButton.setToolTipText(
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.createDatabaseButton.toolTipText")); 
 
  649         createDatabaseButton.setMaximumSize(
new java.awt.Dimension(140, 25));
 
  650         createDatabaseButton.setMinimumSize(
new java.awt.Dimension(140, 25));
 
  651         createDatabaseButton.addActionListener(
new java.awt.event.ActionListener() {
 
  652             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  653                 createDatabaseButtonActionPerformed(evt);
 
  657         importDatabaseButton.setFont(importDatabaseButton.getFont().deriveFont(importDatabaseButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  658         importDatabaseButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/modules/hashdatabase/import16.png"))); 
 
  659         org.openide.awt.Mnemonics.setLocalizedText(importDatabaseButton, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.importDatabaseButton.text")); 
 
  660         importDatabaseButton.setToolTipText(
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.importDatabaseButton.toolTipText")); 
 
  661         importDatabaseButton.setMaximumSize(
new java.awt.Dimension(140, 25));
 
  662         importDatabaseButton.setMinimumSize(
new java.awt.Dimension(140, 25));
 
  663         importDatabaseButton.addActionListener(
new java.awt.event.ActionListener() {
 
  664             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  665                 importDatabaseButtonActionPerformed(evt);
 
  669         deleteDatabaseButton.setFont(deleteDatabaseButton.getFont().deriveFont(deleteDatabaseButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  670         deleteDatabaseButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/modules/hashdatabase/delete16.png"))); 
 
  671         org.openide.awt.Mnemonics.setLocalizedText(deleteDatabaseButton, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.deleteDatabaseButton.text")); 
 
  672         deleteDatabaseButton.setMaximumSize(
new java.awt.Dimension(140, 25));
 
  673         deleteDatabaseButton.setMinimumSize(
new java.awt.Dimension(140, 25));
 
  674         deleteDatabaseButton.addActionListener(
new java.awt.event.ActionListener() {
 
  675             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  676                 deleteDatabaseButtonActionPerformed(evt);
 
  680         informationLabel.setFont(informationLabel.getFont().deriveFont(informationLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  681         org.openide.awt.Mnemonics.setLocalizedText(informationLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.informationLabel.text")); 
 
  683         informationScrollPanel.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
 
  685         nameLabel.setFont(nameLabel.getFont().deriveFont(nameLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  686         org.openide.awt.Mnemonics.setLocalizedText(nameLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.nameLabel.text")); 
 
  688         hashDbNameLabel.setFont(hashDbNameLabel.getFont().deriveFont(hashDbNameLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  689         org.openide.awt.Mnemonics.setLocalizedText(hashDbNameLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.hashDbNameLabel.text")); 
 
  691         typeLabel.setFont(typeLabel.getFont().deriveFont(typeLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  692         org.openide.awt.Mnemonics.setLocalizedText(typeLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.typeLabel.text")); 
 
  694         hashDbTypeLabel.setFont(hashDbTypeLabel.getFont().deriveFont(hashDbTypeLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  695         org.openide.awt.Mnemonics.setLocalizedText(hashDbTypeLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.hashDbTypeLabel.text")); 
 
  697         locationLabel.setFont(locationLabel.getFont().deriveFont(locationLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  698         org.openide.awt.Mnemonics.setLocalizedText(locationLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.locationLabel.text")); 
 
  700         hashDbLocationLabel.setFont(hashDbLocationLabel.getFont().deriveFont(hashDbLocationLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  701         org.openide.awt.Mnemonics.setLocalizedText(hashDbLocationLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.hashDbLocationLabel.text")); 
 
  703         org.openide.awt.Mnemonics.setLocalizedText(versionLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.versionLabel.text_1")); 
 
  705         org.openide.awt.Mnemonics.setLocalizedText(hashDbVersionLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.hashDbVersionLabel.text_1")); 
 
  707         org.openide.awt.Mnemonics.setLocalizedText(orgLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.orgLabel.text_1")); 
 
  709         org.openide.awt.Mnemonics.setLocalizedText(hashDbOrgLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.hashDbOrgLabel.text_1")); 
 
  711         org.openide.awt.Mnemonics.setLocalizedText(readOnlyLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.readOnlyLabel.text_1")); 
 
  713         org.openide.awt.Mnemonics.setLocalizedText(hashDbReadOnlyLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.hashDbReadOnlyLabel.text_1")); 
 
  715         indexPathLabelLabel.setFont(indexPathLabelLabel.getFont().deriveFont(indexPathLabelLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  716         org.openide.awt.Mnemonics.setLocalizedText(indexPathLabelLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.indexPathLabelLabel.text")); 
 
  718         indexPathLabel.setFont(indexPathLabel.getFont().deriveFont(indexPathLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  719         org.openide.awt.Mnemonics.setLocalizedText(indexPathLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.indexPathLabel.text")); 
 
  721         indexLabel.setFont(indexLabel.getFont().deriveFont(indexLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  722         org.openide.awt.Mnemonics.setLocalizedText(indexLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.indexLabel.text")); 
 
  724         hashDbIndexStatusLabel.setFont(hashDbIndexStatusLabel.getFont().deriveFont(hashDbIndexStatusLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  725         org.openide.awt.Mnemonics.setLocalizedText(hashDbIndexStatusLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.hashDbIndexStatusLabel.text")); 
 
  727         javax.swing.GroupLayout informationPanelLayout = 
new javax.swing.GroupLayout(informationPanel);
 
  728         informationPanel.setLayout(informationPanelLayout);
 
  729         informationPanelLayout.setHorizontalGroup(
 
  730             informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  731             .addGroup(informationPanelLayout.createSequentialGroup()
 
  733                 .addGroup(informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  734                     .addGroup(informationPanelLayout.createSequentialGroup()
 
  735                         .addComponent(locationLabel)
 
  737                         .addComponent(hashDbLocationLabel))
 
  738                     .addGroup(informationPanelLayout.createSequentialGroup()
 
  739                         .addComponent(nameLabel)
 
  741                         .addComponent(hashDbNameLabel))
 
  742                     .addGroup(informationPanelLayout.createSequentialGroup()
 
  743                         .addComponent(typeLabel)
 
  745                         .addComponent(hashDbTypeLabel))
 
  746                     .addGroup(informationPanelLayout.createSequentialGroup()
 
  747                         .addComponent(versionLabel)
 
  749                         .addComponent(hashDbVersionLabel))
 
  750                     .addGroup(informationPanelLayout.createSequentialGroup()
 
  751                         .addComponent(orgLabel)
 
  753                         .addComponent(hashDbOrgLabel))
 
  754                     .addGroup(informationPanelLayout.createSequentialGroup()
 
  755                         .addComponent(readOnlyLabel)
 
  757                         .addComponent(hashDbReadOnlyLabel))
 
  758                     .addGroup(informationPanelLayout.createSequentialGroup()
 
  759                         .addComponent(indexLabel)
 
  761                         .addComponent(hashDbIndexStatusLabel))
 
  762                     .addGroup(informationPanelLayout.createSequentialGroup()
 
  763                         .addComponent(indexPathLabelLabel)
 
  765                         .addComponent(indexPathLabel)))
 
  766                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
 
  769         informationPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, 
new java.awt.Component[] {indexLabel, indexPathLabelLabel, locationLabel, nameLabel, orgLabel, readOnlyLabel, typeLabel, versionLabel});
 
  771         informationPanelLayout.setVerticalGroup(
 
  772             informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  773             .addGroup(informationPanelLayout.createSequentialGroup()
 
  774                 .addGroup(informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  775                     .addComponent(nameLabel)
 
  776                     .addComponent(hashDbNameLabel))
 
  777                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  778                 .addGroup(informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  779                     .addComponent(typeLabel)
 
  780                     .addComponent(hashDbTypeLabel))
 
  781                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  782                 .addGroup(informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  783                     .addComponent(locationLabel)
 
  784                     .addComponent(hashDbLocationLabel))
 
  785                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  786                 .addGroup(informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  787                     .addComponent(versionLabel)
 
  788                     .addComponent(hashDbVersionLabel))
 
  789                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  790                 .addGroup(informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  791                     .addComponent(orgLabel)
 
  792                     .addComponent(hashDbOrgLabel))
 
  793                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  794                 .addGroup(informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  795                     .addComponent(readOnlyLabel)
 
  796                     .addComponent(hashDbReadOnlyLabel))
 
  797                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  798                 .addGroup(informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  799                     .addComponent(indexPathLabelLabel)
 
  800                     .addComponent(indexPathLabel))
 
  801                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  802                 .addGroup(informationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  803                     .addComponent(indexLabel)
 
  804                     .addComponent(hashDbIndexStatusLabel))
 
  805                 .addGap(0, 49, Short.MAX_VALUE))
 
  808         informationScrollPanel.setViewportView(informationPanel);
 
  810         indexButton.setFont(indexButton.getFont().deriveFont(indexButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  811         org.openide.awt.Mnemonics.setLocalizedText(indexButton, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.indexButton.text")); 
 
  812         indexButton.setEnabled(
false);
 
  813         indexButton.addActionListener(
new java.awt.event.ActionListener() {
 
  814             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  815                 indexButtonActionPerformed(evt);
 
  819         addHashesToDatabaseButton.setFont(addHashesToDatabaseButton.getFont().deriveFont(addHashesToDatabaseButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  820         org.openide.awt.Mnemonics.setLocalizedText(addHashesToDatabaseButton, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.addHashesToDatabaseButton.text")); 
 
  821         addHashesToDatabaseButton.setEnabled(
false);
 
  822         addHashesToDatabaseButton.addActionListener(
new java.awt.event.ActionListener() {
 
  823             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  824                 addHashesToDatabaseButtonActionPerformed(evt);
 
  828         sendIngestMessagesCheckBox.setFont(sendIngestMessagesCheckBox.getFont().deriveFont(sendIngestMessagesCheckBox.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  829         org.openide.awt.Mnemonics.setLocalizedText(sendIngestMessagesCheckBox, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.sendIngestMessagesCheckBox.text")); 
 
  830         sendIngestMessagesCheckBox.addActionListener(
new java.awt.event.ActionListener() {
 
  831             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  832                 sendIngestMessagesCheckBoxActionPerformed(evt);
 
  836         ingestWarningLabel.setFont(ingestWarningLabel.getFont().deriveFont(ingestWarningLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
 
  837         ingestWarningLabel.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/modules/hashdatabase/warning16.png"))); 
 
  838         org.openide.awt.Mnemonics.setLocalizedText(ingestWarningLabel, 
org.openide.util.NbBundle.getMessage(
HashLookupSettingsPanel.class, 
"HashLookupSettingsPanel.ingestWarningLabel.text")); 
 
  840         javax.swing.GroupLayout jPanel1Layout = 
new javax.swing.GroupLayout(jPanel1);
 
  841         jPanel1.setLayout(jPanel1Layout);
 
  842         jPanel1Layout.setHorizontalGroup(
 
  843             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  844             .addGroup(jPanel1Layout.createSequentialGroup()
 
  846                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  847                     .addGroup(jPanel1Layout.createSequentialGroup()
 
  849                         .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  850                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  851                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  852                             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
 
  853                                 .addComponent(informationLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
 
  854                                 .addGap(356, 356, 356))
 
  855                             .addGroup(jPanel1Layout.createSequentialGroup()
 
  856                                 .addComponent(indexButton)
 
  857                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
 
  858                                 .addComponent(addHashesToDatabaseButton)
 
  859                                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
 
  860                             .addGroup(jPanel1Layout.createSequentialGroup()
 
  861                                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  862                                     .addComponent(informationScrollPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 420, Short.MAX_VALUE)
 
  863                                     .addGroup(jPanel1Layout.createSequentialGroup()
 
  864                                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  865                                             .addComponent(sendIngestMessagesCheckBox)
 
  866                                             .addComponent(ingestWarningLabel))
 
  867                                         .addGap(0, 0, Short.MAX_VALUE)))
 
  868                                 .addContainerGap())))
 
  869                     .addGroup(jPanel1Layout.createSequentialGroup()
 
  870                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  871                             .addComponent(hashDatabasesLabel)
 
  872                             .addGroup(jPanel1Layout.createSequentialGroup()
 
  873                                 .addComponent(createDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  874                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  875                                 .addComponent(importDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  876                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  877                                 .addComponent(deleteDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
 
  878                         .addGap(0, 0, Short.MAX_VALUE))))
 
  880         jPanel1Layout.setVerticalGroup(
 
  881             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  882             .addGroup(jPanel1Layout.createSequentialGroup()
 
  884                 .addComponent(hashDatabasesLabel)
 
  886                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  887                     .addGroup(jPanel1Layout.createSequentialGroup()
 
  888                         .addComponent(informationLabel)
 
  889                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
 
  890                         .addComponent(informationScrollPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 185, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  891                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
 
  892                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  893                             .addComponent(indexButton)
 
  894                             .addComponent(addHashesToDatabaseButton))
 
  896                         .addComponent(sendIngestMessagesCheckBox)
 
  898                         .addComponent(ingestWarningLabel)
 
  899                         .addGap(0, 0, Short.MAX_VALUE))
 
  900                     .addComponent(jScrollPane1))
 
  901                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  902                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  903                     .addComponent(createDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  904                     .addComponent(importDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  905                     .addComponent(deleteDatabaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
 
  909         jScrollPane2.setViewportView(jPanel1);
 
  911         javax.swing.GroupLayout layout = 
new javax.swing.GroupLayout(
this);
 
  912         this.setLayout(layout);
 
  913         layout.setHorizontalGroup(
 
  914             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  915             .addComponent(jScrollPane2)
 
  917         layout.setVerticalGroup(
 
  918             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  919             .addComponent(jScrollPane2)
 
  930         HashDb hashDb = 
new HashDbCreateDatabaseDialog().getHashDatabase();
 
  931         if (null != hashDb) {
 
  932             if (hashDb instanceof CentralRepoHashSet) {
 
  933                 int newDbIndex = ((CentralRepoHashSet) hashDb).getReferenceSetID();
 
  934                 newReferenceSetIDs.add(newDbIndex);
 
  937             hashSetTableModel.refreshModel();
 
  938             ((
HashSetTable) hashSetTable).selectRowByDatabase(hashDb);
 
  939             firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  945         if (hashDb != null) {
 
  946             hashDb.setSendIngestMessages(sendIngestMessagesCheckBox.isSelected());
 
  947             firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  953         assert hashDatabase != null;
 
  954         assert hashDatabase instanceof SleuthkitHashSet;
 
  958         SleuthkitHashSet hashDb = (SleuthkitHashSet) hashDatabase;
 
  961             public void propertyChange(PropertyChangeEvent evt) {
 
  962                 if (evt.getPropertyName().equals(SleuthkitHashSet.Event.INDEXING_DONE.toString())) {
 
  964                     if (selectedHashDb != null && hashDb != null && hashDb.equals(selectedHashDb)) {
 
  967                     hashSetTableModel.refreshDisplay();
 
  977         ModalNoButtons indexDialog = 
new ModalNoButtons(
this, 
new Frame(), hashDb);
 
  978         indexDialog.setLocationRelativeTo(null);
 
  979         indexDialog.setVisible(
true);
 
  980         indexDialog.setModal(
true);
 
  984         HashDb hashDb = 
new HashDbImportDatabaseDialog().getHashDatabase();
 
  985         if (null != hashDb) {
 
  986             if (hashDb instanceof CentralRepoHashSet) {
 
  987                 int newReferenceSetID = ((CentralRepoHashSet) hashDb).getReferenceSetID();
 
  988                 newReferenceSetIDs.add(newReferenceSetID);
 
  991             hashSetTableModel.refreshModel();
 
  992             ((
HashSetTable) hashSetTable).selectRowByDatabase(hashDb);
 
  993             firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  998         "HashLookupSettingsPanel.promptTitle.deleteHashDb=Delete Hash Database from Configuration",
 
  999         "HashLookupSettingsPanel.promptMessage.deleteHashDb=This will make the hash database unavailable for lookup. Do you want to proceed?\n\nNote: The hash database can still be re-imported later." 
 1002         if (JOptionPane.showConfirmDialog(
this,
 
 1003                 Bundle.HashLookupSettingsPanel_promptMessage_deleteHashDb(),
 
 1004                 Bundle.HashLookupSettingsPanel_promptTitle_deleteHashDb(),
 
 1005                 JOptionPane.YES_NO_OPTION,
 
 1006                 JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) {
 
 1008             if (hashDb != null) {
 
 1012                     JOptionPane.showMessageDialog(
this, Bundle.HashLookupSettingsPanel_removeDatabaseFailure_message(hashDb.
getHashSetName()));
 
 1014                 hashSetTableModel.refreshModel();
 
 1015                 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
 1021         if (evt.getKeyCode() == KeyEvent.VK_DELETE) {
 
 1023             if (hashDb != null) {
 
 1027                     JOptionPane.showMessageDialog(
this, Bundle.HashLookupSettingsPanel_removeDatabaseFailure_message(hashDb.
getHashSetName()));
 
 1029                 hashSetTableModel.refreshModel();
 
 1030                 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
abstract boolean getSendIngestMessages()
void importDatabaseButtonActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JLabel indexLabel
void showInvalidIndex(boolean plural, List< SleuthkitHashSet > unindexed)
static synchronized IngestManager getInstance()
javax.swing.JPanel informationPanel
boolean isCellEditable(int rowIndex, int columnIndex)
javax.swing.JLabel hashDbIndexStatusLabel
javax.swing.JLabel jLabel6
void setValueAt(Object aValue, int rowIndex, int columnIndex)
javax.swing.JLabel hashDbVersionLabel
void deleteReferenceSet(int referenceSetID)
javax.swing.JLabel hashDatabasesLabel
javax.swing.JLabel ingestWarningLabel
javax.swing.JLabel typeLabel
javax.swing.JLabel indexPathLabel
void updateComponentsForSelection(HashDb db)
javax.swing.JButton createDatabaseButton
void createDatabaseButtonActionPerformed(java.awt.event.ActionEvent evt)
abstract String getHashSetName()
javax.swing.JLabel hashDbOrgLabel
boolean isIngestRunning()
HashLookupSettingsPanel()
javax.swing.JButton jButton3
javax.swing.JScrollPane jScrollPane1
void updateComponentsForNoSelection()
javax.swing.JLabel readOnlyLabel
javax.swing.JLabel hashDbLocationLabel
javax.swing.JLabel nameLabel
javax.swing.JLabel locationLabel
javax.swing.JButton indexButton
void selectRowByDatabase(HashDb db)
javax.swing.JLabel informationLabel
void sendIngestMessagesCheckBoxActionPerformed(java.awt.event.ActionEvent evt)
Component prepareRenderer(TableCellRenderer renderer, int row, int column)
void indexButtonActionPerformed(java.awt.event.ActionEvent evt)
void customizeComponents()
static EamDb getInstance()
void addIngestJobEventListener(final PropertyChangeListener listener)
javax.swing.JLabel jLabel2
synchronized void removeHashDatabaseNoSave(HashDb hashDb)
javax.swing.JScrollPane jScrollPane2
static synchronized HashDbManager getInstance()
boolean isLocalIngestJobEvent(PropertyChangeEvent evt)
abstract HashDb.KnownFilesType getKnownFilesType()
javax.swing.JLabel indexPathLabelLabel
void hashSetTableKeyPressed(java.awt.event.KeyEvent evt)
void selectRowByName(String name)
javax.swing.JLabel versionLabel
javax.swing.JTable hashSetTable
static boolean isEnabled()
javax.swing.JLabel hashDbNameLabel
String getColumnName(int column)
javax.swing.JButton addHashesToDatabaseButton
javax.swing.JLabel jLabel4
synchronized List< HashDb > getAllHashSets()
javax.swing.JButton deleteDatabaseButton
Object getValueAt(int rowIndex, int columnIndex)
abstract boolean isUpdateable()
javax.swing.JScrollPane informationScrollPanel
abstract String getDatabasePath()
Class<?> getColumnClass(int c)
void setSelection(int index)
boolean isValid(int rowIndex)
synchronized void loadLastSavedConfiguration()
abstract void addPropertyChangeListener(PropertyChangeListener pcl)
synchronized static Logger getLogger(String name)
javax.swing.JLabel hashDbTypeLabel
void deleteDatabaseButtonActionPerformed(java.awt.event.ActionEvent evt)
javax.swing.JLabel hashDbReadOnlyLabel
javax.swing.JButton importDatabaseButton
javax.swing.JPanel jPanel1
javax.swing.JLabel orgLabel
javax.swing.JCheckBox sendIngestMessagesCheckBox
void addHashesToDatabaseButtonActionPerformed(java.awt.event.ActionEvent evt)