Autopsy  4.4.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
IngestSettingsPanel.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2013-2017 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.ingest;
20 
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;
29 
33 final class IngestSettingsPanel extends IngestModuleGlobalSettingsPanel {
34 
35  IngestSettingsPanel() {
36  initComponents();
37  int availableProcessors = Runtime.getRuntime().availableProcessors();
38  Integer fileIngestThreadCountChoices[];
39  int recommendedFileIngestThreadCount;
40 
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;
50  } else {
51  fileIngestThreadCountChoices = new Integer[]{1};
52  recommendedFileIngestThreadCount = 1;
53  }
54  numberOfFileIngestThreadsComboBox.setModel(new DefaultComboBoxModel<>(fileIngestThreadCountChoices));
55  restartRequiredLabel.setText(NbBundle.getMessage(IngestSettingsPanel.class, "IngestSettingsPanel.restartRequiredLabel.text", recommendedFileIngestThreadCount));
56  // TODO listen to changes in form fields and call controller.changed()
57  DocumentListener docListener = new DocumentListener() {
58 
59  @Override
60  public void insertUpdate(DocumentEvent e) {
61  firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
62  }
63 
64  @Override
65  public void removeUpdate(DocumentEvent e) {
66  firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
67  }
68 
69  @Override
70  public void changedUpdate(DocumentEvent e) {
71  firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
72  }
73  };
74  this.jFormattedTextFieldProcTimeOutHrs.getDocument().addDocumentListener(docListener);
75  this.ingestWarningLabel.setVisible(false);
76  }
77 
81  void load() {
82  numberOfFileIngestThreadsComboBox.setSelectedItem(UserPreferences.numberOfFileIngestThreads());
83  if (UserPreferences.getIsTimeOutEnabled()) {
84  // user specified time out
85  jCheckBoxEnableProcTimeout.setSelected(true);
86  jFormattedTextFieldProcTimeOutHrs.setEditable(true);
87  int timeOutHrs = UserPreferences.getProcessTimeOutHrs();
88  jFormattedTextFieldProcTimeOutHrs.setValue((long) timeOutHrs);
89  } else {
90  // never time out
91  jCheckBoxEnableProcTimeout.setSelected(false);
92  jFormattedTextFieldProcTimeOutHrs.setEditable(false);
93  int timeOutHrs = UserPreferences.getProcessTimeOutHrs();
94  jFormattedTextFieldProcTimeOutHrs.setValue((long) timeOutHrs);
95  }
96  }
97 
101  void store() {
102  UserPreferences.setNumberOfFileIngestThreads((Integer) numberOfFileIngestThreadsComboBox.getSelectedItem());
103 
104  UserPreferences.setIsTimeOutEnabled(jCheckBoxEnableProcTimeout.isSelected());
105  if (jCheckBoxEnableProcTimeout.isSelected()) {
106  // only store time out if it is enabled
107  long timeOutHrs = (long) jFormattedTextFieldProcTimeOutHrs.getValue();
108  UserPreferences.setProcessTimeOutHrs((int) timeOutHrs);
109  }
110  }
111 
112  boolean valid() {
113  return true;
114  }
115 
121  void enableButtons(boolean isEnabled) {
122  numberOfFileIngestThreadsComboBox.setEnabled(isEnabled);
123  jFormattedTextFieldProcTimeOutHrs.setEnabled(isEnabled);
124  jCheckBoxEnableProcTimeout.setEnabled(isEnabled);
125  ingestWarningLabel.setVisible(!isEnabled);
126  }
127 
133  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
134  private void initComponents() {
135 
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();
146 
147  setPreferredSize(new java.awt.Dimension(693, 413));
148 
149  jScrollPane1.setBorder(null);
150 
151  jPanel1.setPreferredSize(new java.awt.Dimension(664, 400));
152 
153  org.openide.awt.Mnemonics.setLocalizedText(jLabelNumThreads, org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class, "IngestSettingsPanel.jLabelNumThreads.text")); // NOI18N
154 
155  numberOfFileIngestThreadsComboBox.addActionListener(new java.awt.event.ActionListener() {
156  public void actionPerformed(java.awt.event.ActionEvent evt) {
157  numberOfFileIngestThreadsComboBoxActionPerformed(evt);
158  }
159  });
160 
161  restartRequiredLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/corecomponents/warning16.png"))); // NOI18N
162  org.openide.awt.Mnemonics.setLocalizedText(restartRequiredLabel, org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class, "IngestSettingsPanel.restartRequiredLabel.text")); // NOI18N
163 
164  org.openide.awt.Mnemonics.setLocalizedText(jLabelSetProcessTimeOut, org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class, "IngestSettingsPanel.jLabelSetProcessTimeOut.text")); // NOI18N
165 
166  org.openide.awt.Mnemonics.setLocalizedText(jCheckBoxEnableProcTimeout, org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class, "IngestSettingsPanel.jCheckBoxEnableProcTimeout.text")); // NOI18N
167  jCheckBoxEnableProcTimeout.addActionListener(new java.awt.event.ActionListener() {
168  public void actionPerformed(java.awt.event.ActionEvent evt) {
169  jCheckBoxEnableProcTimeoutActionPerformed(evt);
170  }
171  });
172 
173  jFormattedTextFieldProcTimeOutHrs.setText(org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class, "IngestSettingsPanel.jFormattedTextFieldProcTimeOutHrs.text")); // NOI18N
174  jFormattedTextFieldProcTimeOutHrs.addActionListener(new java.awt.event.ActionListener() {
175  public void actionPerformed(java.awt.event.ActionEvent evt) {
176  jFormattedTextFieldProcTimeOutHrsActionPerformed(evt);
177  }
178  });
179 
180  org.openide.awt.Mnemonics.setLocalizedText(jLabelProcessTimeOutUnits, org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class, "IngestSettingsPanel.jLabelProcessTimeOutUnits.text")); // NOI18N
181 
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"))); // NOI18N
184  org.openide.awt.Mnemonics.setLocalizedText(ingestWarningLabel, org.openide.util.NbBundle.getMessage(IngestSettingsPanel.class, "IngestSettingsPanel.ingestWarningLabel.text")); // NOI18N
185 
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()
191  .addContainerGap()
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()
196  .addGap(10, 10, 10)
197  .addComponent(numberOfFileIngestThreadsComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
198  .addGap(18, 18, 18)
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()
205  .addGap(10, 10, 10)
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))))
216  );
217  jPanel1Layout.setVerticalGroup(
218  jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
219  .addGroup(jPanel1Layout.createSequentialGroup()
220  .addGap(30, 30, 30)
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))
237  );
238 
239  jScrollPane1.setViewportView(jPanel1);
240 
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)
246  );
247  layout.setVerticalGroup(
248  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
249  .addComponent(jScrollPane1)
250  );
251  }// </editor-fold>//GEN-END:initComponents
252 
253  private void jFormattedTextFieldProcTimeOutHrsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jFormattedTextFieldProcTimeOutHrsActionPerformed
254  firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
255  }//GEN-LAST:event_jFormattedTextFieldProcTimeOutHrsActionPerformed
256 
257  private void jCheckBoxEnableProcTimeoutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxEnableProcTimeoutActionPerformed
258  jFormattedTextFieldProcTimeOutHrs.setEditable(jCheckBoxEnableProcTimeout.isSelected());
259  firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
260  }//GEN-LAST:event_jCheckBoxEnableProcTimeoutActionPerformed
261 
262  private void numberOfFileIngestThreadsComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_numberOfFileIngestThreadsComboBoxActionPerformed
263  firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
264  }//GEN-LAST:event_numberOfFileIngestThreadsComboBoxActionPerformed
265 
266  // Variables declaration - do not modify//GEN-BEGIN:variables
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;
277  // End of variables declaration//GEN-END:variables
278 
279  @Override
280  public void saveSettings() {
281  this.store();
282  }
283 }

Copyright © 2012-2016 Basis Technology. Generated on: Fri Sep 29 2017
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.