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)