19 package org.sleuthkit.autopsy.ingest;
21 import java.text.NumberFormat;
22 import javax.swing.DefaultComboBoxModel;
23 import javax.swing.JFormattedTextField;
24 import javax.swing.event.DocumentEvent;
25 import javax.swing.event.DocumentListener;
26 import org.netbeans.spi.options.OptionsPanelController;
27 import org.openide.util.NbBundle;
33 final class IngestSettingsPanel
extends IngestModuleGlobalSettingsPanel {
35 IngestSettingsPanel() {
37 int availableProcessors = Runtime.getRuntime().availableProcessors();
38 Integer fileIngestThreadCountChoices[];
39 int recommendedFileIngestThreadCount;
41 if (availableProcessors >= 6) {
42 fileIngestThreadCountChoices =
new Integer[]{1, 2, 4, 6};
43 recommendedFileIngestThreadCount = 4;
44 }
else if (availableProcessors >= 4 && availableProcessors <= 5) {
45 fileIngestThreadCountChoices =
new Integer[]{1, 2, 4};
46 recommendedFileIngestThreadCount = 2;
47 }
else if (availableProcessors >= 2 && availableProcessors <= 3) {
48 fileIngestThreadCountChoices =
new Integer[]{1, 2};
49 recommendedFileIngestThreadCount = 1;
51 fileIngestThreadCountChoices =
new Integer[]{1};
52 recommendedFileIngestThreadCount = 1;
54 numberOfFileIngestThreadsComboBox.setModel(
new DefaultComboBoxModel<>(fileIngestThreadCountChoices));
55 restartRequiredLabel.setText(NbBundle.getMessage(IngestSettingsPanel.class,
"IngestSettingsPanel.restartRequiredLabel.text", recommendedFileIngestThreadCount));
57 DocumentListener docListener =
new DocumentListener() {
60 public void insertUpdate(DocumentEvent e) {
61 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
65 public void removeUpdate(DocumentEvent e) {
66 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
70 public void changedUpdate(DocumentEvent e) {
71 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
74 this.jFormattedTextFieldProcTimeOutHrs.getDocument().addDocumentListener(docListener);
75 this.ingestWarningLabel.setVisible(
false);
82 numberOfFileIngestThreadsComboBox.setSelectedItem(UserPreferences.numberOfFileIngestThreads());
83 if (UserPreferences.getIsTimeOutEnabled()) {
85 jCheckBoxEnableProcTimeout.setSelected(
true);
86 jFormattedTextFieldProcTimeOutHrs.setEditable(
true);
87 int timeOutHrs = UserPreferences.getProcessTimeOutHrs();
88 jFormattedTextFieldProcTimeOutHrs.setValue((
long) timeOutHrs);
91 jCheckBoxEnableProcTimeout.setSelected(
false);
92 jFormattedTextFieldProcTimeOutHrs.setEditable(
false);
93 int timeOutHrs = UserPreferences.getProcessTimeOutHrs();
94 jFormattedTextFieldProcTimeOutHrs.setValue((
long) timeOutHrs);
102 UserPreferences.setNumberOfFileIngestThreads((Integer) numberOfFileIngestThreadsComboBox.getSelectedItem());
104 UserPreferences.setIsTimeOutEnabled(jCheckBoxEnableProcTimeout.isSelected());
105 if (jCheckBoxEnableProcTimeout.isSelected()) {
107 long timeOutHrs = (long) jFormattedTextFieldProcTimeOutHrs.getValue();
108 UserPreferences.setProcessTimeOutHrs((
int) timeOutHrs);
121 void enableButtons(
boolean isEnabled) {
122 numberOfFileIngestThreadsComboBox.setEnabled(isEnabled);
123 jFormattedTextFieldProcTimeOutHrs.setEnabled(isEnabled);
124 jCheckBoxEnableProcTimeout.setEnabled(isEnabled);
125 ingestWarningLabel.setVisible(!isEnabled);
134 private void initComponents() {
136 jScrollPane1 =
new javax.swing.JScrollPane();
137 jPanel1 =
new javax.swing.JPanel();
138 jLabelNumThreads =
new javax.swing.JLabel();
139 numberOfFileIngestThreadsComboBox =
new javax.swing.JComboBox<>();
140 restartRequiredLabel =
new javax.swing.JLabel();
141 jLabelSetProcessTimeOut =
new javax.swing.JLabel();
142 jCheckBoxEnableProcTimeout =
new javax.swing.JCheckBox();
143 jFormattedTextFieldProcTimeOutHrs =
new JFormattedTextField(NumberFormat.getIntegerInstance());
144 jLabelProcessTimeOutUnits =
new javax.swing.JLabel();
145 ingestWarningLabel =
new javax.swing.JLabel();
147 setPreferredSize(
new java.awt.Dimension(693, 413));
149 jScrollPane1.setBorder(null);
151 jPanel1.setPreferredSize(
new java.awt.Dimension(664, 400));
153 org.openide.awt.Mnemonics.setLocalizedText(jLabelNumThreads,
org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class,
"IngestSettingsPanel.jLabelNumThreads.text"));
155 numberOfFileIngestThreadsComboBox.addActionListener(
new java.awt.event.ActionListener() {
156 public void actionPerformed(java.awt.event.ActionEvent evt) {
157 numberOfFileIngestThreadsComboBoxActionPerformed(evt);
161 restartRequiredLabel.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/corecomponents/warning16.png")));
162 org.openide.awt.Mnemonics.setLocalizedText(restartRequiredLabel,
org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class,
"IngestSettingsPanel.restartRequiredLabel.text"));
164 org.openide.awt.Mnemonics.setLocalizedText(jLabelSetProcessTimeOut,
org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class,
"IngestSettingsPanel.jLabelSetProcessTimeOut.text"));
166 org.openide.awt.Mnemonics.setLocalizedText(jCheckBoxEnableProcTimeout,
org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class,
"IngestSettingsPanel.jCheckBoxEnableProcTimeout.text"));
167 jCheckBoxEnableProcTimeout.addActionListener(
new java.awt.event.ActionListener() {
168 public void actionPerformed(java.awt.event.ActionEvent evt) {
169 jCheckBoxEnableProcTimeoutActionPerformed(evt);
173 jFormattedTextFieldProcTimeOutHrs.setText(
org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class,
"IngestSettingsPanel.jFormattedTextFieldProcTimeOutHrs.text"));
174 jFormattedTextFieldProcTimeOutHrs.addActionListener(
new java.awt.event.ActionListener() {
175 public void actionPerformed(java.awt.event.ActionEvent evt) {
176 jFormattedTextFieldProcTimeOutHrsActionPerformed(evt);
180 org.openide.awt.Mnemonics.setLocalizedText(jLabelProcessTimeOutUnits,
org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class,
"IngestSettingsPanel.jLabelProcessTimeOutUnits.text"));
182 ingestWarningLabel.setFont(ingestWarningLabel.getFont().deriveFont(ingestWarningLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
183 ingestWarningLabel.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/modules/hashdatabase/warning16.png")));
184 org.openide.awt.Mnemonics.setLocalizedText(ingestWarningLabel,
org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class,
"IngestSettingsPanel.ingestWarningLabel.text"));
186 javax.swing.GroupLayout jPanel1Layout =
new javax.swing.GroupLayout(jPanel1);
187 jPanel1.setLayout(jPanel1Layout);
188 jPanel1Layout.setHorizontalGroup(
189 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
190 .addGroup(jPanel1Layout.createSequentialGroup()
192 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
193 .addGroup(jPanel1Layout.createSequentialGroup()
194 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
195 .addGroup(jPanel1Layout.createSequentialGroup()
197 .addComponent(numberOfFileIngestThreadsComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
199 .addComponent(restartRequiredLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
200 .addGroup(jPanel1Layout.createSequentialGroup()
201 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
202 .addComponent(jLabelNumThreads)
203 .addComponent(jLabelSetProcessTimeOut)
204 .addGroup(jPanel1Layout.createSequentialGroup()
206 .addComponent(jCheckBoxEnableProcTimeout)
207 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
208 .addComponent(jFormattedTextFieldProcTimeOutHrs, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
209 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
210 .addComponent(jLabelProcessTimeOutUnits)))
211 .addGap(213, 213, 213)))
212 .addContainerGap(52, Short.MAX_VALUE))
213 .addGroup(jPanel1Layout.createSequentialGroup()
214 .addComponent(ingestWarningLabel)
215 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
217 jPanel1Layout.setVerticalGroup(
218 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
219 .addGroup(jPanel1Layout.createSequentialGroup()
221 .addComponent(jLabelNumThreads)
222 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
223 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
224 .addComponent(numberOfFileIngestThreadsComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
225 .addComponent(restartRequiredLabel))
226 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
227 .addComponent(jLabelSetProcessTimeOut)
228 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
229 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
230 .addComponent(jCheckBoxEnableProcTimeout)
231 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
232 .addComponent(jFormattedTextFieldProcTimeOutHrs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
233 .addComponent(jLabelProcessTimeOutUnits)))
234 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
235 .addComponent(ingestWarningLabel)
236 .addContainerGap(257, Short.MAX_VALUE))
239 jScrollPane1.setViewportView(jPanel1);
241 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
242 this.setLayout(layout);
243 layout.setHorizontalGroup(
244 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
245 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 691, Short.MAX_VALUE)
247 layout.setVerticalGroup(
248 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
249 .addComponent(jScrollPane1)
253 private void jFormattedTextFieldProcTimeOutHrsActionPerformed(java.awt.event.ActionEvent evt) {
254 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
257 private void jCheckBoxEnableProcTimeoutActionPerformed(java.awt.event.ActionEvent evt) {
258 jFormattedTextFieldProcTimeOutHrs.setEditable(jCheckBoxEnableProcTimeout.isSelected());
259 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
262 private void numberOfFileIngestThreadsComboBoxActionPerformed(java.awt.event.ActionEvent evt) {
263 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
267 private javax.swing.JLabel ingestWarningLabel;
268 private javax.swing.JCheckBox jCheckBoxEnableProcTimeout;
269 private javax.swing.JFormattedTextField jFormattedTextFieldProcTimeOutHrs;
270 private javax.swing.JLabel jLabelNumThreads;
271 private javax.swing.JLabel jLabelProcessTimeOutUnits;
272 private javax.swing.JLabel jLabelSetProcessTimeOut;
273 private javax.swing.JPanel jPanel1;
274 private javax.swing.JScrollPane jScrollPane1;
275 private javax.swing.JComboBox<Integer> numberOfFileIngestThreadsComboBox;
276 private javax.swing.JLabel restartRequiredLabel;
280 public void saveSettings() {