19 package org.sleuthkit.autopsy.modules.encryptiondetection;
 
   21 import java.text.ParseException;
 
   22 import java.util.logging.Level;
 
   23 import javax.swing.text.DefaultFormatter;
 
   24 import javax.swing.text.DefaultFormatterFactory;
 
   32 final class EncryptionDetectionIngestJobSettingsPanel 
extends IngestModuleIngestJobSettingsPanel {
 
   34     private static final int MEGABYTE_SIZE = 1048576;
 
   35     private static final int INVALID_TEXT_FIELD_INPUT_RETURN = -1;
 
   37     private final Logger logger = Logger.getLogger(EncryptionDetectionIngestJobSettingsPanel.class.getName());
 
   39     private final DefaultFormatterFactory minimumFileSizeTextFormatterFactory = 
new DefaultFormatterFactory(
new StringIntegerFormatter());
 
   40     private final DefaultFormatterFactory minimumEntropyTextFormatterFactory = 
new DefaultFormatterFactory(
new StringDoubleFormatter());
 
   47     public EncryptionDetectionIngestJobSettingsPanel(EncryptionDetectionIngestJobSettings settings) {
 
   49         customizeComponents(settings);
 
   57     private void customizeComponents(EncryptionDetectionIngestJobSettings settings) {
 
   58         minimumEntropyTextbox.setText(String.valueOf(settings.getMinimumEntropy()));
 
   59         minimumFileSizeTextbox.setText(String.valueOf(settings.getMinimumFileSize() / MEGABYTE_SIZE));
 
   60         fileSizeMultiplesEnforcedCheckbox.setSelected(settings.isFileSizeMultipleEnforced());
 
   61         slackFilesAllowedCheckbox.setSelected(settings.isSlackFilesAllowed());
 
   65     public IngestModuleIngestJobSettings getSettings() {
 
   66         return new EncryptionDetectionIngestJobSettings(
 
   67                 Double.valueOf(minimumEntropyTextbox.getText()),
 
   68                 Integer.valueOf(minimumFileSizeTextbox.getText()) * MEGABYTE_SIZE,
 
   69                 fileSizeMultiplesEnforcedCheckbox.isSelected(),
 
   70                 slackFilesAllowedCheckbox.isSelected());
 
   81                 return Double.parseDouble(
string);
 
   82             } 
catch (NumberFormatException ex) {
 
   83                 logger.log(Level.WARNING, String.format(
"The String input '%s' is not valid for Double conversion.", 
string), ex);
 
   89                 return new Double(INVALID_TEXT_FIELD_INPUT_RETURN);
 
  102                 return Integer.parseInt(
string);
 
  103             } 
catch (NumberFormatException ex) {
 
  104                 logger.log(Level.WARNING, String.format(
"The String input '%s' is not valid for Integer conversion.", 
string), ex);
 
  110                 return INVALID_TEXT_FIELD_INPUT_RETURN;
 
  120     @SuppressWarnings(
"unchecked")
 
  122     private 
void initComponents() {
 
  124         fileSizeMultiplesEnforcedCheckbox = 
new javax.swing.JCheckBox();
 
  125         slackFilesAllowedCheckbox = 
new javax.swing.JCheckBox();
 
  126         minimumEntropyLabel = 
new javax.swing.JLabel();
 
  127         minimumFileSizeLabel = 
new javax.swing.JLabel();
 
  128         mbLabel = 
new javax.swing.JLabel();
 
  129         detectionSettingsLabel = 
new javax.swing.JLabel();
 
  130         minimumFileSizeTextbox = 
new javax.swing.JFormattedTextField();
 
  131         minimumEntropyTextbox = 
new javax.swing.JFormattedTextField();
 
  133         org.openide.awt.Mnemonics.setLocalizedText(fileSizeMultiplesEnforcedCheckbox, 
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class, 
"EncryptionDetectionIngestJobSettingsPanel.fileSizeMultiplesEnforcedCheckbox.text")); 
 
  135         org.openide.awt.Mnemonics.setLocalizedText(slackFilesAllowedCheckbox, 
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class, 
"EncryptionDetectionIngestJobSettingsPanel.slackFilesAllowedCheckbox.text")); 
 
  137         org.openide.awt.Mnemonics.setLocalizedText(minimumEntropyLabel, 
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class, 
"EncryptionDetectionIngestJobSettingsPanel.minimumEntropyLabel.text")); 
 
  139         org.openide.awt.Mnemonics.setLocalizedText(minimumFileSizeLabel, 
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class, 
"EncryptionDetectionIngestJobSettingsPanel.minimumFileSizeLabel.text")); 
 
  141         org.openide.awt.Mnemonics.setLocalizedText(mbLabel, 
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class, 
"EncryptionDetectionIngestJobSettingsPanel.mbLabel.text")); 
 
  143         detectionSettingsLabel.setFont(
new java.awt.Font(
"Tahoma", 1, 11)); 
 
  144         org.openide.awt.Mnemonics.setLocalizedText(detectionSettingsLabel, 
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class, 
"EncryptionDetectionIngestJobSettingsPanel.detectionSettingsLabel.text")); 
 
  146         minimumFileSizeTextbox.setFormatterFactory(minimumFileSizeTextFormatterFactory);
 
  147         minimumFileSizeTextbox.setText(
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class, 
"EncryptionDetectionIngestJobSettingsPanel.minimumFileSizeTextbox.text")); 
 
  148         minimumFileSizeTextbox.addActionListener(
new java.awt.event.ActionListener() {
 
  149             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  150                 minimumFileSizeTextboxActionPerformed(evt);
 
  154         minimumEntropyTextbox.setFormatterFactory(minimumEntropyTextFormatterFactory);
 
  155         minimumEntropyTextbox.setText(
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class, 
"EncryptionDetectionIngestJobSettingsPanel.minimumEntropyTextbox.text")); 
 
  157         javax.swing.GroupLayout layout = 
new javax.swing.GroupLayout(
this);
 
  158         this.setLayout(layout);
 
  159         layout.setHorizontalGroup(
 
  160             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  161             .addGroup(layout.createSequentialGroup()
 
  163                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  164                     .addComponent(slackFilesAllowedCheckbox)
 
  165                     .addComponent(detectionSettingsLabel)
 
  166                     .addComponent(fileSizeMultiplesEnforcedCheckbox)
 
  167                     .addGroup(layout.createSequentialGroup()
 
  168                         .addComponent(minimumFileSizeLabel)
 
  169                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
 
  170                         .addComponent(minimumFileSizeTextbox, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  171                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  172                         .addComponent(mbLabel))
 
  173                     .addGroup(layout.createSequentialGroup()
 
  174                         .addComponent(minimumEntropyLabel)
 
  175                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
 
  176                         .addComponent(minimumEntropyTextbox, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)))
 
  177                 .addContainerGap(33, Short.MAX_VALUE))
 
  179         layout.setVerticalGroup(
 
  180             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  181             .addGroup(layout.createSequentialGroup()
 
  183                 .addComponent(detectionSettingsLabel)
 
  185                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  186                     .addComponent(minimumEntropyLabel)
 
  187                     .addComponent(minimumEntropyTextbox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
 
  188                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  189                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  190                     .addComponent(mbLabel)
 
  191                     .addComponent(minimumFileSizeLabel)
 
  192                     .addComponent(minimumFileSizeTextbox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
 
  193                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
 
  194                 .addComponent(fileSizeMultiplesEnforcedCheckbox)
 
  195                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  196                 .addComponent(slackFilesAllowedCheckbox)
 
  197                 .addContainerGap(60, Short.MAX_VALUE))
 
  201     private void minimumFileSizeTextboxActionPerformed(java.awt.event.ActionEvent evt) {
 
  206     private javax.swing.JLabel detectionSettingsLabel;
 
  207     private javax.swing.JCheckBox fileSizeMultiplesEnforcedCheckbox;
 
  208     private javax.swing.JLabel mbLabel;
 
  209     private javax.swing.JLabel minimumEntropyLabel;
 
  210     private javax.swing.JFormattedTextField minimumEntropyTextbox;
 
  211     private javax.swing.JLabel minimumFileSizeLabel;
 
  212     private javax.swing.JFormattedTextField minimumFileSizeTextbox;
 
  213     private javax.swing.JCheckBox slackFilesAllowedCheckbox;
 
Object stringToValue(String string)
 
Object stringToValue(String string)