Autopsy  4.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
CasePropertiesForm.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2011 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 
20 /*
21  * CasePropertiesForm.java
22  *
23  * Created on Mar 14, 2011, 1:48:20 PM
24  */
25 package org.sleuthkit.autopsy.casemodule;
26 
27 import java.awt.*;
28 import java.nio.file.Paths;
29 import java.awt.event.ActionListener;
30 import java.io.File;
31 import java.util.Map;
32 import java.util.logging.Level;
33 import org.openide.util.NbBundle;
35 import javax.swing.JOptionPane;
36 import javax.swing.JPanel;
37 import javax.swing.table.DefaultTableModel;
38 import org.openide.DialogDescriptor;
39 import org.openide.DialogDisplayer;
40 import org.openide.NotifyDescriptor;
41 import org.openide.util.actions.CallableSystemAction;
42 
48 class CasePropertiesForm extends javax.swing.JPanel {
49 
50  private static final long serialVersionUID = 1L;
51 
52  private Case current = null;
53  private static JPanel caller; // panel for error
54 
55  // Shrink a path to fit in targetLength (if necessary), by replaceing part
56  // of the path with "...". Ex: "C:\Users\bob\...\folder\other\Image.img"
57  private String shrinkPath(String path, int targetLength) {
58  if (path.length() > targetLength) {
59  String fill = "...";
60 
61  int partsLength = targetLength - fill.length();
62 
63  String front = path.substring(0, partsLength / 4);
64  int frontSep = front.lastIndexOf(File.separatorChar);
65  if (frontSep != -1) {
66  front = front.substring(0, frontSep + 1);
67  }
68 
69  String back = path.substring(partsLength * 3 / 4);
70  int backSep = back.indexOf(File.separatorChar);
71  if (backSep != -1) {
72  back = back.substring(backSep);
73  }
74  return back + fill + front;
75  } else {
76  return path;
77  }
78  }
79 
83  CasePropertiesForm(Case currentCase, String crDate, String caseDir, Map<Long, String> imgPaths) throws CaseMetadata.CaseMetadataException {
84  initComponents();
85  caseNameTextField.setText(currentCase.getName());
86  caseNumberTextField.setText(currentCase.getNumber());
87  examinerTextField.setText(currentCase.getExaminer());
88  crDateTextField.setText(crDate);
89  caseDirTextArea.setText(caseDir);
90  current = currentCase;
91 
92  CaseMetadata caseMetadata = new CaseMetadata(Paths.get(currentCase.getConfigFilePath()));
93  tbDbName.setText(caseMetadata.getCaseDatabaseName());
94  Case.CaseType caseType = caseMetadata.getCaseType();
95  tbDbType.setText(caseType.getLocalizedDisplayName());
96  if (caseType == Case.CaseType.SINGLE_USER_CASE) {
97  deleteCaseButton.setEnabled(true);
98  } else {
99  deleteCaseButton.setEnabled(false);
100  }
101 
102  int totalImages = imgPaths.size();
103 
104  // create the headers and add all the rows
105  // Header names are internationalized via the generated code, do not overwrite.
106  String[] headers = {imagesTable.getColumnName(0),
107  imagesTable.getColumnName(1)};
108  String[][] rows = new String[totalImages][];
109 
110  int i = 0;
111  for (long key : imgPaths.keySet()) {
112  String path = imgPaths.get(key);
113  String shortenPath = shrinkPath(path, 70);
114  rows[i++] = new String[]{shortenPath};
115  }
116 
117  // create the table inside with the imgPaths information
118  DefaultTableModel model = new DefaultTableModel(rows, headers) {
119  @Override
120  // make the cells in the FileContentTable "read only"
121  public boolean isCellEditable(int row, int column) {
122  return false;
123  //return column == lastColumn; // make the last column (Remove button), only the editable
124  }
125  };
126  imagesTable.setModel(model);
127 
128 // // set the size of the remove column
129 // TableColumn removeCol = imagesTable.getColumnModel().getColumn(lastColumn);
130 // removeCol.setPreferredWidth(75);
131 // removeCol.setMaxWidth(75);
132 // removeCol.setMinWidth(75);
133 // removeCol.setResizable(false);
134 // // create the delete action to remove the image from the current case
135 // Action delete = new AbstractAction()
136 // {
137 // @Override
138 // public void actionPerformed(ActionEvent e)
139 // {
140 // // get the image path
141 // JTable table = (JTable)e.getSource();
142 // int modelRow = Integer.valueOf(e.getActionCommand());
143 // String removeColumn = table.getValueAt(modelRow, lastColumn).toString();
144 // // get the image ID
145 // int selectedID = Integer.parseInt(removeColumn.substring(0, removeColumn.indexOf('|')));
146 // String imagePath = removeColumn.substring(removeColumn.indexOf('|') + 1);
147 //
148 // // throw the confirmation first
149 // String confMsg = "Are you sure want to remove image \"" + imagePath + "\" from this case?";
150 // NotifyDescriptor d = new NotifyDescriptor.Confirmation(confMsg, "Create directory", NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
151 // d.setValue(NotifyDescriptor.NO_OPTION);
152 //
153 // Object res = DialogDisplayer.getDefault().notify(d);
154 // // if user select "Yes"
155 // if(res != null && res == DialogDescriptor.YES_OPTION){
156 // // remove the image in the case class and in the xml config file
157 // try {
158 // current.removeImage(selectedID, imagePath);
159 // } catch (Exception ex) {
160 // Logger.getLogger(CasePropertiesForm.class.getName()).log(Level.WARNING, "Error: couldn't remove image.", ex);
161 // }
162 // // remove the row of the image path
163 // ((DefaultTableModel)table.getModel()).removeRow(modelRow);
164 // }
165 // }
166 // };
167 //
168 // ButtonColumn buttonColumn = new ButtonColumn(imagesTable, delete, 1, "Remove");
169 // buttonColumn.setMnemonic(KeyEvent.VK_D);
170  }
171 
187  @SuppressWarnings("unchecked")
188  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
189  private void initComponents() {
190 
191  jScrollPane1 = new javax.swing.JScrollPane();
192  jTextArea1 = new javax.swing.JTextArea();
193  casePropLabel = new javax.swing.JLabel();
194  caseNameLabel = new javax.swing.JLabel();
195  crDateLabel = new javax.swing.JLabel();
196  caseDirLabel = new javax.swing.JLabel();
197  crDateTextField = new javax.swing.JTextField();
198  caseNameTextField = new javax.swing.JTextField();
199  updateCaseNameButton = new javax.swing.JButton();
200  genInfoLabel = new javax.swing.JLabel();
201  imgInfoLabel = new javax.swing.JLabel();
202  OKButton = new javax.swing.JButton();
203  imagesTableScrollPane = new javax.swing.JScrollPane();
204  imagesTable = new javax.swing.JTable();
205  jScrollPane2 = new javax.swing.JScrollPane();
206  caseDirTextArea = new javax.swing.JTextArea();
207  deleteCaseButton = new javax.swing.JButton();
208  caseNumberLabel = new javax.swing.JLabel();
209  examinerLabel = new javax.swing.JLabel();
210  caseNumberTextField = new javax.swing.JTextField();
211  examinerTextField = new javax.swing.JTextField();
212  lbDbType = new javax.swing.JLabel();
213  tbDbType = new javax.swing.JTextField();
214  lbDbName = new javax.swing.JLabel();
215  tbDbName = new javax.swing.JTextField();
216 
217  jTextArea1.setColumns(20);
218  jTextArea1.setRows(5);
219  jScrollPane1.setViewportView(jTextArea1);
220 
221  casePropLabel.setFont(casePropLabel.getFont().deriveFont(casePropLabel.getFont().getStyle() | java.awt.Font.BOLD, 24));
222  casePropLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
223  casePropLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.casePropLabel.text")); // NOI18N
224 
225  caseNameLabel.setFont(caseNameLabel.getFont().deriveFont(caseNameLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
226  caseNameLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.caseNameLabel.text")); // NOI18N
227 
228  crDateLabel.setFont(crDateLabel.getFont().deriveFont(crDateLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
229  crDateLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.crDateLabel.text")); // NOI18N
230 
231  caseDirLabel.setFont(caseDirLabel.getFont().deriveFont(caseDirLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
232  caseDirLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.caseDirLabel.text")); // NOI18N
233 
234  crDateTextField.setEditable(false);
235  crDateTextField.setFont(crDateTextField.getFont().deriveFont(crDateTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
236  crDateTextField.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.crDateTextField.text")); // NOI18N
237 
238  caseNameTextField.setFont(caseNameTextField.getFont().deriveFont(caseNameTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
239  caseNameTextField.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.caseNameTextField.text")); // NOI18N
240 
241  updateCaseNameButton.setFont(updateCaseNameButton.getFont().deriveFont(updateCaseNameButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
242  updateCaseNameButton.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.updateCaseNameButton.text")); // NOI18N
243  updateCaseNameButton.addActionListener(new java.awt.event.ActionListener() {
244  public void actionPerformed(java.awt.event.ActionEvent evt) {
245  updateCaseNameButtonActionPerformed(evt);
246  }
247  });
248 
249  genInfoLabel.setFont(genInfoLabel.getFont().deriveFont(genInfoLabel.getFont().getStyle() | java.awt.Font.BOLD, 14));
250  genInfoLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.genInfoLabel.text")); // NOI18N
251 
252  imgInfoLabel.setFont(imgInfoLabel.getFont().deriveFont(imgInfoLabel.getFont().getStyle() | java.awt.Font.BOLD, 14));
253  imgInfoLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.imgInfoLabel.text")); // NOI18N
254 
255  OKButton.setFont(OKButton.getFont().deriveFont(OKButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
256  OKButton.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.OKButton.text")); // NOI18N
257 
258  imagesTableScrollPane.setFont(imagesTableScrollPane.getFont().deriveFont(imagesTableScrollPane.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
259 
260  imagesTable.setFont(imagesTable.getFont().deriveFont(imagesTable.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
261  imagesTable.setModel(new javax.swing.table.DefaultTableModel(
262  new Object [][] {
263 
264  },
265  new String [] {
266  "Path", "Remove"
267  }
268  ) {
269  boolean[] canEdit = new boolean [] {
270  false, true
271  };
272 
273  public boolean isCellEditable(int rowIndex, int columnIndex) {
274  return canEdit [columnIndex];
275  }
276  });
277  imagesTable.setShowHorizontalLines(false);
278  imagesTable.setShowVerticalLines(false);
279  imagesTable.getTableHeader().setReorderingAllowed(false);
280  imagesTable.setUpdateSelectionOnSort(false);
281  imagesTableScrollPane.setViewportView(imagesTable);
282  if (imagesTable.getColumnModel().getColumnCount() > 0) {
283  imagesTable.getColumnModel().getColumn(0).setHeaderValue(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.imagesTable.columnModel.title0")); // NOI18N
284  imagesTable.getColumnModel().getColumn(1).setHeaderValue(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.imagesTable.columnModel.title1")); // NOI18N
285  }
286 
287  jScrollPane2.setFont(jScrollPane2.getFont().deriveFont(jScrollPane2.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
288 
289  caseDirTextArea.setEditable(false);
290  caseDirTextArea.setBackground(new java.awt.Color(240, 240, 240));
291  caseDirTextArea.setColumns(20);
292  caseDirTextArea.setRows(1);
293  caseDirTextArea.setRequestFocusEnabled(false);
294  jScrollPane2.setViewportView(caseDirTextArea);
295 
296  deleteCaseButton.setFont(deleteCaseButton.getFont().deriveFont(deleteCaseButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
297  deleteCaseButton.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.deleteCaseButton.text")); // NOI18N
298  deleteCaseButton.addActionListener(new java.awt.event.ActionListener() {
299  public void actionPerformed(java.awt.event.ActionEvent evt) {
300  deleteCaseButtonActionPerformed(evt);
301  }
302  });
303 
304  caseNumberLabel.setFont(caseNumberLabel.getFont().deriveFont(caseNumberLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
305  caseNumberLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.caseNumberLabel.text")); // NOI18N
306 
307  examinerLabel.setFont(examinerLabel.getFont().deriveFont(examinerLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
308  examinerLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.examinerLabel.text")); // NOI18N
309 
310  caseNumberTextField.setEditable(false);
311  caseNumberTextField.setFont(caseNumberTextField.getFont().deriveFont(caseNumberTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
312  caseNumberTextField.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.caseNumberTextField.text")); // NOI18N
313 
314  examinerTextField.setEditable(false);
315  examinerTextField.setFont(examinerTextField.getFont().deriveFont(examinerTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
316  examinerTextField.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.examinerTextField.text")); // NOI18N
317 
318  lbDbType.setFont(lbDbType.getFont().deriveFont(lbDbType.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
319  lbDbType.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.lbDbType.text")); // NOI18N
320 
321  tbDbType.setEditable(false);
322  tbDbType.setFont(tbDbType.getFont().deriveFont(tbDbType.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
323  tbDbType.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.tbDbType.text")); // NOI18N
324 
325  lbDbName.setFont(lbDbName.getFont().deriveFont(lbDbName.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
326  lbDbName.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.lbDbName.text")); // NOI18N
327 
328  tbDbName.setEditable(false);
329  tbDbName.setFont(tbDbName.getFont().deriveFont(tbDbName.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
330  tbDbName.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.tbDbName.text")); // NOI18N
331 
332  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
333  this.setLayout(layout);
334  layout.setHorizontalGroup(
335  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
336  .addGroup(layout.createSequentialGroup()
337  .addContainerGap()
338  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
339  .addComponent(casePropLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
340  .addComponent(imagesTableScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
341  .addGroup(layout.createSequentialGroup()
342  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
343  .addComponent(caseNameLabel)
344  .addComponent(caseNumberLabel)
345  .addComponent(examinerLabel)
346  .addComponent(caseDirLabel)
347  .addComponent(crDateLabel)
348  .addComponent(lbDbType))
349  .addGap(18, 18, 18)
350  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
351  .addComponent(caseNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 245, Short.MAX_VALUE)
352  .addComponent(caseNumberTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 245, Short.MAX_VALUE)
353  .addComponent(examinerTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 245, Short.MAX_VALUE)
354  .addComponent(crDateTextField)
355  .addComponent(jScrollPane2)
356  .addComponent(tbDbType)
357  .addComponent(tbDbName))
358  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
359  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
360  .addComponent(deleteCaseButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
361  .addComponent(updateCaseNameButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
362  .addGroup(layout.createSequentialGroup()
363  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
364  .addComponent(genInfoLabel)
365  .addComponent(imgInfoLabel)
366  .addGroup(layout.createSequentialGroup()
367  .addGap(181, 181, 181)
368  .addComponent(OKButton, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE))
369  .addComponent(lbDbName))
370  .addGap(0, 0, Short.MAX_VALUE)))
371  .addContainerGap())
372  );
373  layout.setVerticalGroup(
374  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
375  .addGroup(layout.createSequentialGroup()
376  .addContainerGap()
377  .addComponent(casePropLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
378  .addGap(18, 18, 18)
379  .addComponent(genInfoLabel)
380  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
381  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
382  .addComponent(caseNameLabel)
383  .addComponent(caseNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
384  .addComponent(updateCaseNameButton))
385  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
386  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
387  .addComponent(caseNumberLabel)
388  .addComponent(caseNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
389  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
390  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
391  .addComponent(examinerLabel)
392  .addComponent(examinerTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
393  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
394  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
395  .addComponent(crDateLabel)
396  .addComponent(crDateTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
397  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
398  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
399  .addGroup(layout.createSequentialGroup()
400  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
401  .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
402  .addComponent(caseDirLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
403  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
404  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
405  .addComponent(tbDbType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
406  .addComponent(lbDbType))
407  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
408  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
409  .addComponent(lbDbName)
410  .addComponent(tbDbName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
411  .addGap(18, 18, 18)
412  .addComponent(imgInfoLabel))
413  .addGroup(layout.createSequentialGroup()
414  .addGap(9, 9, 9)
415  .addComponent(deleteCaseButton)))
416  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
417  .addComponent(imagesTableScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
418  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
419  .addComponent(OKButton)
420  .addContainerGap())
421  );
422  }// </editor-fold>//GEN-END:initComponents
423 
429  private void updateCaseNameButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updateCaseNameButtonActionPerformed
430  String oldCaseName = Case.getCurrentCase().getName();
431  String newCaseName = caseNameTextField.getText();
432  //String oldPath = caseDirTextArea.getText() + File.separator + oldCaseName + ".aut";
433  //String newPath = caseDirTextArea.getText() + File.separator + newCaseName + ".aut";
434 
435  // check if the old and new case name is not equal
436  if (!oldCaseName.equals(newCaseName)) {
437 
438  // check if the case name is empty
439  if (newCaseName.trim().equals("")) {
440  JOptionPane.showMessageDialog(caller,
441  NbBundle.getMessage(this.getClass(),
442  "CasePropertiesForm.updateCaseName.msgDlg.empty.msg"),
443  NbBundle.getMessage(this.getClass(),
444  "CasePropertiesForm.updateCaseName.msgDlg.empty.title"),
445  JOptionPane.ERROR_MESSAGE);
446  } else {
447  // check if case Name contain one of this following symbol:
448  // \ / : * ? " < > |
449  if (newCaseName.contains("\\") || newCaseName.contains("/") || newCaseName.contains(":")
450  || newCaseName.contains("*") || newCaseName.contains("?") || newCaseName.contains("\"")
451  || newCaseName.contains("<") || newCaseName.contains(">") || newCaseName.contains("|")) {
452  String errorMsg = NbBundle
453  .getMessage(this.getClass(), "CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.msg");
454  JOptionPane.showMessageDialog(caller, errorMsg,
455  NbBundle.getMessage(this.getClass(),
456  "CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.title"),
457  JOptionPane.ERROR_MESSAGE);
458  } else {
459  // ask for the confirmation first
460  String confMsg = NbBundle
461  .getMessage(this.getClass(), "CasePropertiesForm.updateCaseName.confMsg.msg", oldCaseName,
462  newCaseName);
463  NotifyDescriptor d = new NotifyDescriptor.Confirmation(confMsg,
464  NbBundle.getMessage(this.getClass(),
465  "CasePropertiesForm.updateCaseName.confMsg.title"),
466  NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
467  d.setValue(NotifyDescriptor.NO_OPTION);
468 
469  Object res = DialogDisplayer.getDefault().notify(d);
470  if (res != null && res == DialogDescriptor.YES_OPTION) {
471  // if user select "Yes"
472  String oldPath = current.getConfigFilePath();
473  try {
474  current.updateCaseName(oldCaseName, oldPath, newCaseName, oldPath);
475  } catch (Exception ex) {
476  Logger.getLogger(CasePropertiesForm.class.getName()).log(Level.WARNING, "Error: problem updating case name.", ex); //NON-NLS
477  }
478  }
479  }
480  }
481  }
482  }//GEN-LAST:event_updateCaseNameButtonActionPerformed
483 
484  private void deleteCaseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteCaseButtonActionPerformed
485  CallableSystemAction.get(CaseDeleteAction.class).actionPerformed(evt);
486  }//GEN-LAST:event_deleteCaseButtonActionPerformed
487 
493  public void setOKButtonActionListener(ActionListener e) {
494  OKButton.addActionListener(e);
495  }
496 
497  // Variables declaration - do not modify//GEN-BEGIN:variables
498  private javax.swing.JButton OKButton;
499  private javax.swing.JLabel caseDirLabel;
500  private javax.swing.JTextArea caseDirTextArea;
501  private javax.swing.JLabel caseNameLabel;
502  private javax.swing.JTextField caseNameTextField;
503  private javax.swing.JLabel caseNumberLabel;
504  private javax.swing.JTextField caseNumberTextField;
505  private javax.swing.JLabel casePropLabel;
506  private javax.swing.JLabel crDateLabel;
507  private javax.swing.JTextField crDateTextField;
508  private javax.swing.JButton deleteCaseButton;
509  private javax.swing.JLabel examinerLabel;
510  private javax.swing.JTextField examinerTextField;
511  private javax.swing.JLabel genInfoLabel;
512  private javax.swing.JTable imagesTable;
513  private javax.swing.JScrollPane imagesTableScrollPane;
514  private javax.swing.JLabel imgInfoLabel;
515  private javax.swing.JScrollPane jScrollPane1;
516  private javax.swing.JScrollPane jScrollPane2;
517  private javax.swing.JTextArea jTextArea1;
518  private javax.swing.JLabel lbDbName;
519  private javax.swing.JLabel lbDbType;
520  private javax.swing.JTextField tbDbName;
521  private javax.swing.JTextField tbDbType;
522  private javax.swing.JButton updateCaseNameButton;
523  // End of variables declaration//GEN-END:variables
524 
525 }

Copyright © 2012-2015 Basis Technology. Generated on: Wed Apr 6 2016
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.