Autopsy  4.4
Graphical digital forensics platform for The Sleuth Kit and other tools.
CasePropertiesPanel.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2011-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.casemodule;
20 
21 import java.nio.file.Paths;
22 import java.util.logging.Level;
23 import org.openide.util.NbBundle;
26 
31 class CasePropertiesPanel extends javax.swing.JPanel {
32 
33  private static final long serialVersionUID = 1L;
34  private static final Logger LOGGER = Logger.getLogger(CasePropertiesPanel.class.getName());
35  private final Case theCase;
36 
43  CasePropertiesPanel(Case aCase) {
44  initComponents();
45  theCase = aCase;
46  caseNameTextField.setText(theCase.getDisplayName());
47  String caseNumber = theCase.getNumber();
48  if (!caseNumber.isEmpty()) {
49  caseNumberField.setText(caseNumber);
50  } else {
51  caseNumberField.setText("N/A");
52  }
53  String examiner = theCase.getExaminer();
54  if (!examiner.isEmpty()) {
55  examinerField.setText(examiner);
56  } else {
57  examinerField.setText("N/A");
58  }
59  crDateField.setText(theCase.getCreatedDate());
60  caseDirField.setText(theCase.getCaseDirectory());
61  if (Case.CaseType.SINGLE_USER_CASE == theCase.getCaseType()) {
62  dbNameField.setText(Paths.get(theCase.getCaseDirectory(), theCase.getMetadata().getCaseDatabaseName()).toString());
63  } else {
64  dbNameField.setText(theCase.getMetadata().getCaseDatabaseName());
65  }
66  Case.CaseType caseType = theCase.getCaseType();
67  caseTypeField.setText(caseType.getLocalizedDisplayName());
68  }
69 
84  @SuppressWarnings("unchecked")
85  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
86  private void initComponents() {
87 
88  jScrollPane1 = new javax.swing.JScrollPane();
89  jTextArea1 = new javax.swing.JTextArea();
90  jPanel1 = new javax.swing.JPanel();
91  caseNameLabel = new javax.swing.JLabel();
92  crDateLabel = new javax.swing.JLabel();
93  caseDirLabel = new javax.swing.JLabel();
94  caseNameTextField = new javax.swing.JTextField();
95  updateCaseNameButton = new javax.swing.JButton();
96  caseNumberLabel = new javax.swing.JLabel();
97  examinerLabel = new javax.swing.JLabel();
98  lbDbType = new javax.swing.JLabel();
99  lbDbName = new javax.swing.JLabel();
100  caseNumberField = new javax.swing.JLabel();
101  examinerField = new javax.swing.JLabel();
102  crDateField = new javax.swing.JLabel();
103  caseDirField = new javax.swing.JLabel();
104  dbNameField = new javax.swing.JLabel();
105  caseTypeField = new javax.swing.JLabel();
106 
107  jTextArea1.setColumns(20);
108  jTextArea1.setRows(5);
109  jScrollPane1.setViewportView(jTextArea1);
110 
111  caseNameLabel.setFont(caseNameLabel.getFont().deriveFont(caseNameLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
112  caseNameLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseNameLabel.text")); // NOI18N
113 
114  crDateLabel.setFont(crDateLabel.getFont().deriveFont(crDateLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
115  crDateLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.crDateLabel.text")); // NOI18N
116 
117  caseDirLabel.setFont(caseDirLabel.getFont().deriveFont(caseDirLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
118  caseDirLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseDirLabel.text")); // NOI18N
119 
120  caseNameTextField.setFont(caseNameTextField.getFont().deriveFont(caseNameTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
121  caseNameTextField.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseNameTextField.text")); // NOI18N
122 
123  updateCaseNameButton.setFont(updateCaseNameButton.getFont().deriveFont(updateCaseNameButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
124  updateCaseNameButton.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.updateCaseNameButton.text")); // NOI18N
125  updateCaseNameButton.addActionListener(new java.awt.event.ActionListener() {
126  public void actionPerformed(java.awt.event.ActionEvent evt) {
127  updateCaseNameButtonActionPerformed(evt);
128  }
129  });
130 
131  caseNumberLabel.setFont(caseNumberLabel.getFont().deriveFont(caseNumberLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
132  caseNumberLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseNumberLabel.text")); // NOI18N
133 
134  examinerLabel.setFont(examinerLabel.getFont().deriveFont(examinerLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
135  examinerLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.examinerLabel.text")); // NOI18N
136 
137  lbDbType.setFont(lbDbType.getFont().deriveFont(lbDbType.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
138  lbDbType.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbDbType.text")); // NOI18N
139 
140  lbDbName.setFont(lbDbName.getFont().deriveFont(lbDbName.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
141  lbDbName.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbDbName.text")); // NOI18N
142 
143  caseDirField.setMinimumSize(new java.awt.Dimension(25, 14));
144 
145  dbNameField.setMinimumSize(new java.awt.Dimension(25, 14));
146 
147  caseTypeField.setMaximumSize(new java.awt.Dimension(1, 0));
148 
149  javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
150  jPanel1.setLayout(jPanel1Layout);
151  jPanel1Layout.setHorizontalGroup(
152  jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
153  .addGroup(jPanel1Layout.createSequentialGroup()
154  .addContainerGap()
155  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
156  .addGroup(jPanel1Layout.createSequentialGroup()
157  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
158  .addComponent(lbDbName)
159  .addComponent(lbDbType)
160  .addComponent(caseDirLabel))
161  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
162  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
163  .addComponent(caseDirField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
164  .addComponent(caseTypeField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
165  .addComponent(dbNameField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
166  .addGroup(jPanel1Layout.createSequentialGroup()
167  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
168  .addComponent(crDateLabel)
169  .addComponent(examinerLabel)
170  .addComponent(caseNumberLabel))
171  .addGap(18, 18, 18)
172  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
173  .addComponent(examinerField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
174  .addComponent(caseNumberField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
175  .addGroup(jPanel1Layout.createSequentialGroup()
176  .addComponent(caseNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE)
177  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
178  .addComponent(updateCaseNameButton, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE))
179  .addComponent(crDateField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
180  .addContainerGap())
181  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
182  .addGroup(jPanel1Layout.createSequentialGroup()
183  .addContainerGap()
184  .addComponent(caseNameLabel)
185  .addContainerGap(392, Short.MAX_VALUE)))
186  );
187  jPanel1Layout.setVerticalGroup(
188  jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
189  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
190  .addContainerGap()
191  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
192  .addComponent(caseNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
193  .addComponent(updateCaseNameButton))
194  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
195  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
196  .addGroup(jPanel1Layout.createSequentialGroup()
197  .addComponent(caseNumberField, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
198  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
199  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
200  .addComponent(examinerField, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
201  .addComponent(examinerLabel))
202  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
203  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
204  .addComponent(crDateField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
205  .addComponent(crDateLabel, javax.swing.GroupLayout.Alignment.TRAILING))
206  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
207  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
208  .addComponent(caseDirLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
209  .addComponent(caseDirField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
210  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
211  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
212  .addComponent(caseTypeField, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
213  .addComponent(lbDbType))
214  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
215  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
216  .addComponent(lbDbName)
217  .addComponent(dbNameField, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)))
218  .addComponent(caseNumberLabel))
219  .addGap(44, 44, 44))
220  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
221  .addGroup(jPanel1Layout.createSequentialGroup()
222  .addContainerGap()
223  .addComponent(caseNameLabel)
224  .addContainerGap(173, Short.MAX_VALUE)))
225  );
226 
227  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
228  this.setLayout(layout);
229  layout.setHorizontalGroup(
230  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
231  .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
232  );
233  layout.setVerticalGroup(
234  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
235  .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE)
236  );
237  }// </editor-fold>//GEN-END:initComponents
238 
244  @NbBundle.Messages({
245  "CasePropertiesPanel.errorDialog.emptyCaseNameMessage=No case name entered.",
246  "CasePropertiesPanel.errorDialog.invalidCaseNameMessage=Case names cannot include the following symbols: \\, /, :, *, ?, \", <, >, |"
247  })
248  private void updateCaseNameButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updateCaseNameButtonActionPerformed
249  String newCaseDisplayName = caseNameTextField.getText();
250  if (newCaseDisplayName.equals(theCase.getDisplayName())) {
251  return;
252  }
253 
254  if (newCaseDisplayName.trim().isEmpty()) {
255  MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_emptyCaseNameMessage());
256  return;
257  }
258 
259  if (!Case.isValidName(newCaseDisplayName)) {
260  MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_invalidCaseNameMessage());
261  return;
262  }
263 
264  try {
265  theCase.updateDisplayName(newCaseDisplayName);
266  } catch (CaseActionException ex) {
267  MessageNotifyUtil.Message.error(ex.getLocalizedMessage());
268  LOGGER.log(Level.SEVERE, "Failed to update case display name", ex); //NON-NLS
269  }
270  }//GEN-LAST:event_updateCaseNameButtonActionPerformed
271 
272 
273  // Variables declaration - do not modify//GEN-BEGIN:variables
274  private javax.swing.JLabel caseDirField;
275  private javax.swing.JLabel caseDirLabel;
276  private javax.swing.JLabel caseNameLabel;
277  private javax.swing.JTextField caseNameTextField;
278  private javax.swing.JLabel caseNumberField;
279  private javax.swing.JLabel caseNumberLabel;
280  private javax.swing.JLabel caseTypeField;
281  private javax.swing.JLabel crDateField;
282  private javax.swing.JLabel crDateLabel;
283  private javax.swing.JLabel dbNameField;
284  private javax.swing.JLabel examinerField;
285  private javax.swing.JLabel examinerLabel;
286  private javax.swing.JPanel jPanel1;
287  private javax.swing.JScrollPane jScrollPane1;
288  private javax.swing.JTextArea jTextArea1;
289  private javax.swing.JLabel lbDbName;
290  private javax.swing.JLabel lbDbType;
291  private javax.swing.JButton updateCaseNameButton;
292  // End of variables declaration//GEN-END:variables
293 
294 }

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