19 package org.sleuthkit.autopsy.casemodule;
21 import org.openide.util.NbBundle;
25 import javax.swing.JFileChooser;
26 import javax.swing.JPanel;
27 import javax.swing.event.DocumentEvent;
28 import javax.swing.event.DocumentListener;
36 final class NewCaseVisualPanel1
extends JPanel implements DocumentListener {
38 private final JFileChooser fileChooser =
new JFileChooser();
39 private final NewCaseWizardPanel1 wizPanel;
46 NewCaseVisualPanel1(NewCaseWizardPanel1 wizPanel) {
47 this.wizPanel = wizPanel;
49 TextFieldListener listener =
new TextFieldListener();
50 caseNameTextField.getDocument().addDocumentListener(listener);
51 caseParentDirTextField.getDocument().addDocumentListener(listener);
52 caseParentDirWarningLabel.setVisible(
false);
61 caseNameTextField.setText(
"");
62 if (UserPreferences.getIsMultiUserModeEnabled()) {
63 multiUserCaseRadioButton.setEnabled(
true);
64 multiUserCaseRadioButton.setSelected(
true);
66 multiUserCaseRadioButton.setEnabled(
false);
67 singleUserCaseRadioButton.setSelected(
true);
79 public String getName() {
80 return NbBundle.getMessage(this.getClass(),
"NewCaseVisualPanel1.getName.text");
88 String getCaseName() {
89 return this.caseNameTextField.getText();
98 void setCaseParentDir(String caseParentDir) {
99 caseParentDirTextField.setText(caseParentDir);
109 String getCaseParentDir() {
110 String parentDir = this.caseParentDirTextField.getText();
111 if (parentDir.endsWith(File.separator) ==
false) {
112 parentDir = parentDir + File.separator;
122 CaseType getCaseType() {
123 CaseType value = CaseType.SINGLE_USER_CASE;
124 if (singleUserCaseRadioButton.isSelected()) {
125 value = CaseType.SINGLE_USER_CASE;
126 }
else if (multiUserCaseRadioButton.isSelected()) {
127 value = CaseType.MULTI_USER_CASE;
137 private void handleUpdate() {
138 wizPanel.fireChangeEvent();
146 private void validateSettings() {
151 caseParentDirWarningLabel.setVisible(
false);
152 String parentDir = getCaseParentDir();
153 if (!PathValidator.isValid(parentDir, getCaseType())) {
154 caseParentDirWarningLabel.setVisible(
true);
155 caseParentDirWarningLabel.setText(NbBundle.getMessage(
this.getClass(),
"NewCaseVisualPanel1.CaseFolderOnCDriveError.text"));
163 String caseName = getCaseName();
164 if (!caseName.equals(
"") && !parentDir.equals(
"")) {
165 caseDirTextField.setText(parentDir + caseName);
166 wizPanel.setIsFinish(
true);
168 caseDirTextField.setText(
"");
169 wizPanel.setIsFinish(
false);
202 private void initComponents() {
204 caseTypeButtonGroup =
new javax.swing.ButtonGroup();
205 jLabel1 =
new javax.swing.JLabel();
206 caseNameLabel =
new javax.swing.JLabel();
207 caseDirLabel =
new javax.swing.JLabel();
208 caseNameTextField =
new javax.swing.JTextField();
209 caseParentDirTextField =
new javax.swing.JTextField();
210 caseDirBrowseButton =
new javax.swing.JButton();
211 jLabel2 =
new javax.swing.JLabel();
212 caseDirTextField =
new javax.swing.JTextField();
213 singleUserCaseRadioButton =
new javax.swing.JRadioButton();
214 multiUserCaseRadioButton =
new javax.swing.JRadioButton();
215 caseParentDirWarningLabel =
new javax.swing.JLabel();
216 caseTypeLabel =
new javax.swing.JLabel();
218 jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() | java.awt.Font.BOLD, 14));
219 org.openide.awt.Mnemonics.setLocalizedText(jLabel1,
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.jLabel1.text_1"));
221 caseNameLabel.setFont(caseNameLabel.getFont().deriveFont(caseNameLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
222 org.openide.awt.Mnemonics.setLocalizedText(caseNameLabel,
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.caseNameLabel.text_1"));
224 caseDirLabel.setFont(caseDirLabel.getFont().deriveFont(caseDirLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
225 org.openide.awt.Mnemonics.setLocalizedText(caseDirLabel,
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.caseDirLabel.text"));
227 caseNameTextField.setFont(caseNameTextField.getFont().deriveFont(caseNameTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
228 caseNameTextField.setText(
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.caseNameTextField.text_1"));
230 caseParentDirTextField.setFont(caseParentDirTextField.getFont().deriveFont(caseParentDirTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
231 caseParentDirTextField.setText(
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.caseParentDirTextField.text"));
233 caseDirBrowseButton.setFont(caseDirBrowseButton.getFont().deriveFont(caseDirBrowseButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
234 org.openide.awt.Mnemonics.setLocalizedText(caseDirBrowseButton,
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.caseDirBrowseButton.text"));
235 caseDirBrowseButton.addActionListener(
new java.awt.event.ActionListener() {
236 public void actionPerformed(java.awt.event.ActionEvent evt) {
237 caseDirBrowseButtonActionPerformed(evt);
241 jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
242 org.openide.awt.Mnemonics.setLocalizedText(jLabel2,
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.jLabel2.text_1"));
244 caseDirTextField.setEditable(
false);
245 caseDirTextField.setFont(caseDirTextField.getFont().deriveFont(caseDirTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
246 caseDirTextField.setText(
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.caseDirTextField.text_1"));
248 caseTypeButtonGroup.add(singleUserCaseRadioButton);
249 singleUserCaseRadioButton.setFont(singleUserCaseRadioButton.getFont().deriveFont(singleUserCaseRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
250 org.openide.awt.Mnemonics.setLocalizedText(singleUserCaseRadioButton,
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.singleUserCaseRadioButton.text"));
251 singleUserCaseRadioButton.addActionListener(
new java.awt.event.ActionListener() {
252 public void actionPerformed(java.awt.event.ActionEvent evt) {
253 singleUserCaseRadioButtonActionPerformed(evt);
257 caseTypeButtonGroup.add(multiUserCaseRadioButton);
258 multiUserCaseRadioButton.setFont(multiUserCaseRadioButton.getFont().deriveFont(multiUserCaseRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
259 org.openide.awt.Mnemonics.setLocalizedText(multiUserCaseRadioButton,
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.multiUserCaseRadioButton.text"));
260 multiUserCaseRadioButton.addActionListener(
new java.awt.event.ActionListener() {
261 public void actionPerformed(java.awt.event.ActionEvent evt) {
262 multiUserCaseRadioButtonActionPerformed(evt);
266 caseParentDirWarningLabel.setFont(caseParentDirWarningLabel.getFont().deriveFont(caseParentDirWarningLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
267 caseParentDirWarningLabel.setForeground(
new java.awt.Color(255, 0, 0));
268 org.openide.awt.Mnemonics.setLocalizedText(caseParentDirWarningLabel,
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.caseParentDirWarningLabel.text"));
270 caseTypeLabel.setFont(caseTypeLabel.getFont().deriveFont(caseTypeLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
271 org.openide.awt.Mnemonics.setLocalizedText(caseTypeLabel,
org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class,
"NewCaseVisualPanel1.caseTypeLabel.text"));
273 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
274 this.setLayout(layout);
275 layout.setHorizontalGroup(
276 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
277 .addGroup(layout.createSequentialGroup()
279 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
280 .addGroup(layout.createSequentialGroup()
281 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
282 .addComponent(jLabel2)
283 .addGroup(layout.createSequentialGroup()
284 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
285 .addComponent(caseDirTextField, javax.swing.GroupLayout.Alignment.LEADING)
286 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
287 .addComponent(jLabel1)
288 .addGap(0, 227, Short.MAX_VALUE))
289 .addGroup(layout.createSequentialGroup()
290 .addComponent(caseNameLabel)
292 .addComponent(caseNameTextField))
293 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
294 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
295 .addComponent(caseDirLabel)
296 .addComponent(caseTypeLabel))
297 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
298 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
299 .addGroup(layout.createSequentialGroup()
300 .addComponent(singleUserCaseRadioButton)
301 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
302 .addComponent(multiUserCaseRadioButton)
303 .addGap(0, 0, Short.MAX_VALUE))
304 .addComponent(caseParentDirTextField))))
305 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
306 .addComponent(caseDirBrowseButton)))
308 .addGroup(layout.createSequentialGroup()
309 .addComponent(caseParentDirWarningLabel)
310 .addGap(0, 0, Short.MAX_VALUE))))
312 layout.setVerticalGroup(
313 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
314 .addGroup(layout.createSequentialGroup()
316 .addComponent(jLabel1)
318 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
319 .addComponent(caseNameLabel)
320 .addComponent(caseNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
321 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
322 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
323 .addComponent(caseDirLabel)
324 .addComponent(caseParentDirTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
325 .addComponent(caseDirBrowseButton))
326 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
327 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
328 .addComponent(singleUserCaseRadioButton)
329 .addComponent(multiUserCaseRadioButton)
330 .addComponent(caseTypeLabel))
331 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
332 .addComponent(jLabel2)
333 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
334 .addComponent(caseDirTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
336 .addComponent(caseParentDirWarningLabel)
337 .addContainerGap(21, Short.MAX_VALUE))
348 private void caseDirBrowseButtonActionPerformed(java.awt.event.ActionEvent evt) {
349 fileChooser.setDragEnabled(
false);
350 if (!caseParentDirTextField.getText().trim().equals(
"")) {
351 fileChooser.setCurrentDirectory(
new File(caseParentDirTextField.getText()));
353 fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
354 int choice = fileChooser.showDialog((Component) evt.getSource(), NbBundle.getMessage(this.getClass(),
355 "NewCaseVisualPanel1.caseDirBrowse.selectButton.text"));
356 if (JFileChooser.APPROVE_OPTION == choice) {
357 String path = fileChooser.getSelectedFile().getPath();
358 caseParentDirTextField.setText(path);
362 private void singleUserCaseRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {
366 private void multiUserCaseRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {
371 private javax.swing.JButton caseDirBrowseButton;
372 private javax.swing.JLabel caseDirLabel;
373 private javax.swing.JTextField caseDirTextField;
374 private javax.swing.JLabel caseNameLabel;
375 private javax.swing.JTextField caseNameTextField;
376 private javax.swing.JTextField caseParentDirTextField;
377 private javax.swing.JLabel caseParentDirWarningLabel;
378 private javax.swing.ButtonGroup caseTypeButtonGroup;
379 private javax.swing.JLabel caseTypeLabel;
380 private javax.swing.JLabel jLabel1;
381 private javax.swing.JLabel jLabel2;
382 private javax.swing.JRadioButton multiUserCaseRadioButton;
383 private javax.swing.JRadioButton singleUserCaseRadioButton;
393 public void insertUpdate(DocumentEvent e) {
394 this.wizPanel.fireChangeEvent();
406 public void removeUpdate(DocumentEvent e) {
407 this.wizPanel.fireChangeEvent();
417 public void changedUpdate(DocumentEvent e) {
418 this.wizPanel.fireChangeEvent();
429 public void updateUI(DocumentEvent e) {
431 String caseName = getCaseName();
432 String parentDir = getCaseParentDir();
434 if (!caseName.equals(
"") && !parentDir.equals(
"")) {
435 caseDirTextField.setText(parentDir + caseName);
436 wizPanel.setIsFinish(
true);
438 caseDirTextField.setText(
"");
439 wizPanel.setIsFinish(
false);
void insertUpdate(DocumentEvent e)
void removeUpdate(DocumentEvent e)
void changedUpdate(DocumentEvent e)