diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties
index a5ed64dc8b..ddfd37cce6 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties
@@ -26,10 +26,6 @@ CueBannerPanel.openCaseButton.text=
CueBannerPanel.openRecentButton.text=
OpenRecentCasePanel.cancelButton.text=Cancel
OpenRecentCasePanel.jLabel1.text=Recent Cases
-NewCaseVisualPanel2.caseNumberTextField.text=
-NewCaseVisualPanel2.examinerLabel.text=Examiner:
-NewCaseVisualPanel2.caseNumberLabel.text=Case Number:
-NewCaseVisualPanel2.examinerTextField.text=
NewCaseVisualPanel2.optionalLabel.text=Enter Optional Information:
AddImageErrorsDialog.title=Add Image Log
AddImageErrorsDialog.copyButton.toolTipText=Copy errors to clipboard
@@ -215,21 +211,52 @@ LocalDiskPanel.imageWriterErrorLabel.text=Error Label
LocalDiskPanel.jLabel1.text=Note that at least one ingest module must be run to create a complete copy
LocalDiskPanel.pathTextField.text=
LocalDiskPanel.browseButton.text=Browse
-CasePropertiesPanel.caseNameTextField.text=
CasePropertiesPanel.caseDirLabel.text=Case Directory:
CasePropertiesPanel.crDateLabel.text=Created Date:
CasePropertiesPanel.caseNameLabel.text=Case Name:
CasePropertiesPanel.lbDbName.text=Database Name:
CasePropertiesPanel.lbDbType.text=Case Type:
-CasePropertiesPanel.examinerLabel.text=Examiner:
CasePropertiesPanel.caseNumberLabel.text=Case Number:
LocalDiskPanel.changeDatabasePathCheckbox.text=Update case to use VHD file upon completion
CasePropertiesPanel.lbCaseUUIDLabel.text=Case UUID:
-CaseInformationPanel.centralRepoDetailsLabel.text=The Central Repository Details tab is only available when using a central repository.
-CasePropertiesPanel.caseNumberTextField.text=jTextField1
-CasePropertiesPanel.examinerTextField.text=jTextField2
-NewCaseVisualPanel2.bnNewOrganization.text=New Organization
-NewCaseVisualPanel2.lbOrganizationNameLabel.text=Organization:
-NewCaseVisualPanel2.lbPointOfContactEmailLabel.text=Email:
-NewCaseVisualPanel2.lbPointOfContactNameLabel.text=Point of Contact:
-NewCaseVisualPanel2.lbPointOfContactPhoneLabel.text=Phone:
+CentralRepoCaseOptionsPanel.pnOrganization.border.title=Organization
+CentralRepoCaseOptionsPanel.pnExaminer.border.title=Examiner Details
+CentralRepoCaseOptionsPanel.bnNewOrganization.text=Manage Organizations
+CentralRepoCaseOptionsPanel.lbNotesLabel.text=Notes:
+CentralRepoCaseOptionsPanel.lbPointOfContactPhoneLabel.text=Phone:
+CentralRepoCaseOptionsPanel.lbExaminerPhoneLabel.text=Phone:
+CentralRepoCaseOptionsPanel.lbPointOfContactEmailLabel.text=Email:
+CentralRepoCaseOptionsPanel.lbPointOfContactNameLabel.text=Point of Contact:
+CentralRepoCaseOptionsPanel.lbExaminerEmailLabel.text=Email:
+CentralRepoCaseOptionsPanel.lbOrganizationNameLabel.text=Organization Name:
+CentralRepoCaseOptionsPanel.lbExaminerNameLabel.text=Name:
+CasePropertiesPanel.casePanel.border.title=Case
+CasePropertiesPanel.examinerLabel.text=Name:
+CasePropertiesPanel.lbExaminerPhoneLabel.text=Phone:
+CasePropertiesPanel.lbExaminerEmailLabel.text=Email:
+CasePropertiesPanel.lbNotesLabel.text=Notes:
+CasePropertiesPanel.examinerPanel.border.title=Examiner
+CasePropertiesPanel.lbOrganizationNameLabel1.text=Name:
+CasePropertiesPanel.pnOrganization1.border.title=Organization
+CasePropertiesPanel.lbPointOfContactPhoneLabel1.text=Phone:
+CasePropertiesPanel.lbPointOfContactEmailLabel1.text=Email:
+CasePropertiesPanel.lbPointOfContactNameLabel1.text=Point of Contact:
+CaseInformationPanel.jButton1.text=Edit
+OptionalCasePropertiesPanel.lbPointOfContactEmailLabel.text=Email:
+OptionalCasePropertiesPanel.lbOrganizationNameLabel.text=Name:
+OptionalCasePropertiesPanel.bnNewOrganization.text=Manage Organizations
+OptionalCasePropertiesPanel.lbPointOfContactNameLabel.text=Point of Contact:
+OptionalCasePropertiesPanel.lbPointOfContactPhoneLabel.text=Phone:
+OptionalCasePropertiesPanel.orgainizationPanel.border.title=Organization
+OptionalCasePropertiesPanel.lbNotesLabel.text=Notes:
+OptionalCasePropertiesPanel.examinerLabel.text=Name:
+OptionalCasePropertiesPanel.lbExaminerEmailLabel.text=Email:
+OptionalCasePropertiesPanel.examinerTextField.text=
+OptionalCasePropertiesPanel.lbExaminerPhoneLabel.text=Phone:
+OptionalCasePropertiesPanel.examinerPanel.border.title=Examiner
+OptionalCasePropertiesPanel.caseNumberTextField.text=
+OptionalCasePropertiesPanel.caseNumberLabel.text=Number:
+OptionalCasePropertiesPanel.casePanel.border.title=Case
+EditOptionalCasePropertiesPanel.saveButton.text=Save
+EditOptionalCasePropertiesPanel.cancelButton.text=Cancel
+OptionalCasePropertiesPanel.caseDisplayNameLabel.text=Name:
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties
index f7b805a032..6a7deb4da7 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties
@@ -18,8 +18,6 @@ CueBannerPanel.closeButton.text=\u9589\u3058\u308b
CueBannerPanel.openRecentLabel.text=\u6700\u8fd1\u958b\u3044\u305f\u30b1\u30fc\u30b9\u3092\u958b\u304f
OpenRecentCasePanel.cancelButton.text=\u30ad\u30e3\u30f3\u30bb\u30eb
OpenRecentCasePanel.jLabel1.text=\u6700\u8fd1\u958b\u3044\u305f\u30d5\u30a1\u30a4\u30eb
-NewCaseVisualPanel2.examinerLabel.text=\u8abf\u67fb\u62c5\u5f53\u8005\uff1a
-NewCaseVisualPanel2.caseNumberLabel.text=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a
NewCaseVisualPanel2.optionalLabel.text=\u30aa\u30d7\u30b7\u30e7\u30ca\u30eb\uff1a\u30b1\u30fc\u30b9\u756a\u53f7\u304a\u3088\u3073\u8abf\u67fb\u62c5\u5f53\u8005\u3092\u8a2d\u5b9a
AddImageErrorsDialog.title=\u30a4\u30e1\u30fc\u30b8\u30ed\u30b0\u3092\u8ffd\u52a0
AddImageErrorsDialog.copyButton.toolTipText=\u30a8\u30e9\u30fc\u3092\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059
@@ -193,5 +191,8 @@ CasePropertiesPanel.crDateLabel.text=\u4f5c\u6210\u65e5\uff1a
CasePropertiesPanel.caseNameLabel.text=\u30b1\u30fc\u30b9\u540d\uff1a
CasePropertiesPanel.lbDbName.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\uff1a
CasePropertiesPanel.lbDbType.text=\u30b1\u30fc\u30b9\u30bf\u30a4\u30d7\uff1a
-CasePropertiesPanel.examinerLabel.text=\u8abf\u67fb\u62c5\u5f53\u8005\uff1a
CasePropertiesPanel.caseNumberLabel.text=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a
+CasePropertiesPanel.examinerLabel.text=\u8abf\u67fb\u62c5\u5f53\u8005\uff1a
+OptionalCasePropertiesPanel.caseNumberLabel.text=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a
+OptionalCasePropertiesPanel.examinerLabel.text=\u8abf\u67fb\u62c5\u5f53\u8005\uff1a
+OptionalCasePropertiesPanel.caseDisplayNameLabel.text=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java
index e8ca021a00..a9f7187f0c 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java
@@ -478,11 +478,35 @@ public class Case {
* case.
* @throws CaseActionCancelledException If creating the case is cancelled.
*/
+ public static void createAsCurrentCase(String caseDir, String caseDisplayName, String caseNumber, String examiner, CaseType caseType) throws CaseActionException, CaseActionCancelledException {
+ createAsCurrentCase(caseDir, caseDisplayName, caseNumber, new Examiner(examiner, "", "", ""), caseType);
+ }
+
+ /**
+ * Creates a new case and makes it the current case.
+ *
+ * IMPORTANT: This method should not be called in the event dispatch thread
+ * (EDT).
+ *
+ * @param caseDir The full path of the case directory. The directory
+ * will be created if it doesn't already exist; if it
+ * exists, it is ASSUMED it was created by calling
+ * createCaseDirectory.
+ * @param caseDisplayName The display name of case, which may be changed
+ * later by the user.
+ * @param caseNumber The case number, can be the empty string.
+ * @param examiner The examiner to associate with the case.
+ * @param caseType The type of case (single-user or multi-user).
+ *
+ * @throws CaseActionException If there is a problem creating the
+ * case.
+ * @throws CaseActionCancelledException If creating the case is cancelled.
+ */
@Messages({
"Case.exceptionMessage.emptyCaseName=Must specify a case name.",
"Case.exceptionMessage.emptyCaseDir=Must specify a case directory path."
})
- public static void createAsCurrentCase(String caseDir, String caseDisplayName, String caseNumber, String examiner, CaseType caseType) throws CaseActionException, CaseActionCancelledException {
+ public static void createAsCurrentCase(String caseDir, String caseDisplayName, String caseNumber, Examiner examiner, CaseType caseType) throws CaseActionException, CaseActionCancelledException {
if (caseDisplayName.isEmpty()) {
throw new CaseActionException(Bundle.Case_exceptionMessage_emptyCaseName());
}
@@ -1164,7 +1188,34 @@ public class Case {
* @return The examiner name.
*/
public String getExaminer() {
- return metadata.getExaminer();
+ return metadata.getExaminer().getName();
+ }
+
+ /**
+ * Gets the examiner phone number.
+ *
+ * @return The examiner phone number.
+ */
+ public String getExaminerPhone() {
+ return metadata.getExaminer().getPhone();
+ }
+
+ /**
+ * Gets the examiner email address.
+ *
+ * @return The examiner email address.
+ */
+ public String getExaminerEmail() {
+ return metadata.getExaminer().getEmail();
+ }
+
+ /**
+ * Gets the examiner notes.
+ *
+ * @return The examiner notes.
+ */
+ public String getExaminerNotes() {
+ return metadata.getExaminer().getNotes();
}
/**
@@ -1484,7 +1535,11 @@ public class Case {
}
/**
- * Updates the case display name name.
+ * Updates the case display name.
+ *
+ * @param newDisplayName the new display name for the case
+ *
+ * @throws org.sleuthkit.autopsy.casemodule.CaseActionException
*/
@Messages({
"Case.exceptionMessage.metadataUpdateError=Failed to update case metadata, cannot change case display name."
@@ -1516,17 +1571,22 @@ public class Case {
} catch (CaseMetadataException ex) {
throw new CaseActionException(Bundle.Case_exceptionMessage_metadataUpdateError());
}
- eventPublisher.publish(new AutopsyEvent(Events.NUMBER.toString(), oldCaseNumber, newCaseNumber));
}
- void updateExaminer(String newExaminer) throws CaseActionException {
- String oldExaminer = metadata.getExaminer();
+ /**
+ * Update the examiner details associated with the case.
+ *
+ * @param newExaminer the new examiner for the case
+ *
+ * @throws CaseActionException
+ */
+ void updateExaminer(Examiner newExaminer) throws CaseActionException {
+ Examiner oldExaminer = metadata.getExaminer();
try {
metadata.setExaminer(newExaminer);
} catch (CaseMetadataException ex) {
throw new CaseActionException(Bundle.Case_exceptionMessage_metadataUpdateError());
}
- eventPublisher.publish(new AutopsyEvent(Events.EXAMINER.toString(), oldExaminer, newExaminer));
}
/**
@@ -1543,7 +1603,7 @@ public class Case {
* @param examiner The examiner to associate with the case, can be
* the empty string.
*/
- private Case(CaseType caseType, String caseDir, String caseDisplayName, String caseNumber, String examiner) {
+ private Case(CaseType caseType, String caseDir, String caseDisplayName, String caseNumber, Examiner examiner) {
metadata = new CaseMetadata(caseDir, caseType, displayNameToUniqueName(caseDisplayName), caseDisplayName, caseNumber, examiner);
}
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseInformationPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/CaseInformationPanel.form
index bea5e54d2f..58550c6604 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseInformationPanel.form
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseInformationPanel.form
@@ -35,22 +35,14 @@
-
-
-
-
+
-
+
+
+
-
-
-
-
-
-
-
@@ -58,15 +50,11 @@
-
-
-
-
-
-
-
-
+
+
+
+
@@ -87,16 +75,16 @@
-
-
-
-
+
-
+
+
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseInformationPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseInformationPanel.java
index 4a1ed7325a..4a26158d7b 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseInformationPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseInformationPanel.java
@@ -18,13 +18,15 @@
*/
package org.sleuthkit.autopsy.casemodule;
+import java.awt.Dimension;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import javax.swing.JDialog;
import javax.swing.event.ChangeEvent;
-import org.openide.util.Exceptions;
+import javax.swing.event.ChangeListener;
import org.openide.util.NbBundle.Messages;
-import org.sleuthkit.autopsy.centralrepository.datamodel.EamDb;
-import org.sleuthkit.autopsy.centralrepository.datamodel.EamDbException;
-import org.sleuthkit.autopsy.centralrepository.optionspanel.CentralRepoCaseOptionsPanel;
+import org.openide.windows.WindowManager;
/**
* Panel for displaying the case information, including both case details and
@@ -34,7 +36,6 @@ class CaseInformationPanel extends javax.swing.JPanel {
private static final long serialVersionUID = 1L;
CasePropertiesPanel propertiesPanel;
- CentralRepoCaseOptionsPanel centralRepoPanel;
/**
* Constructs a panel for displaying the case information, including both
@@ -54,22 +55,11 @@ class CaseInformationPanel extends javax.swing.JPanel {
propertiesPanel.setSize(propertiesPanel.getPreferredSize());
this.tabbedPane.addTab(Bundle.CaseInformationPanel_caseDetails_header(), propertiesPanel);
this.tabbedPane.addTab(Bundle.CaseInformationPanel_ingestJobInfo_header(), new IngestJobInfoPanel());
- centralRepoPanel = new CentralRepoCaseOptionsPanel();
- this.tabbedPane.addTab("Central Repository Details", centralRepoPanel);
- tabbedPane.setEnabledAt(tabbedPane.indexOfComponent(centralRepoPanel), false);
- centralRepoDetailsLabel.setVisible(true);
- try {
- if (EamDb.getInstance() != null) {
- tabbedPane.setEnabledAt(tabbedPane.indexOfComponent(centralRepoPanel), true);
- centralRepoDetailsLabel.setVisible(false);
+ this.tabbedPane.addChangeListener(new ChangeListener() {
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ tabbedPane.getSelectedComponent().setSize(tabbedPane.getSelectedComponent().getPreferredSize());
}
- } catch (EamDbException ex) {
- Exceptions.printStackTrace(ex);
- }
-// this.tabbedPane.addTab("Organization", new CaseOrganizationPanel());
-// this.tabbedPane.addTab("Examiner Details", new ExaminerDetailsPanel());
- this.tabbedPane.addChangeListener((ChangeEvent e) -> {
- tabbedPane.getSelectedComponent().setSize(tabbedPane.getSelectedComponent().getPreferredSize());
});
}
@@ -94,48 +84,43 @@ class CaseInformationPanel extends javax.swing.JPanel {
outerDetailsPanel = new javax.swing.JPanel();
tabbedPane = new javax.swing.JTabbedPane();
closeButton = new javax.swing.JButton();
- centralRepoDetailsLabel = new javax.swing.JLabel();
+ jButton1 = new javax.swing.JButton();
tabbedPane.setPreferredSize(new java.awt.Dimension(420, 200));
org.openide.awt.Mnemonics.setLocalizedText(closeButton, org.openide.util.NbBundle.getMessage(CaseInformationPanel.class, "CaseInformationPanel.closeButton.text")); // NOI18N
- closeButton.addActionListener(new java.awt.event.ActionListener() {
+
+ org.openide.awt.Mnemonics.setLocalizedText(jButton1, org.openide.util.NbBundle.getMessage(CaseInformationPanel.class, "CaseInformationPanel.jButton1.text")); // NOI18N
+ jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- closeButtonActionPerformed(evt);
+ jButton1ActionPerformed(evt);
}
});
- org.openide.awt.Mnemonics.setLocalizedText(centralRepoDetailsLabel, org.openide.util.NbBundle.getMessage(CaseInformationPanel.class, "CaseInformationPanel.centralRepoDetailsLabel.text")); // NOI18N
-
javax.swing.GroupLayout outerDetailsPanelLayout = new javax.swing.GroupLayout(outerDetailsPanel);
outerDetailsPanel.setLayout(outerDetailsPanelLayout);
outerDetailsPanelLayout.setHorizontalGroup(
outerDetailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(outerDetailsPanelLayout.createSequentialGroup()
- .addComponent(tabbedPane, javax.swing.GroupLayout.PREFERRED_SIZE, 709, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 0, Short.MAX_VALUE))
+ .addComponent(tabbedPane, javax.swing.GroupLayout.DEFAULT_SIZE, 709, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, outerDetailsPanelLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(closeButton)
.addGap(5, 5, 5))
- .addGroup(outerDetailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(outerDetailsPanelLayout.createSequentialGroup()
- .addContainerGap()
- .addComponent(centralRepoDetailsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 633, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(66, Short.MAX_VALUE)))
);
+
+ outerDetailsPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {closeButton, jButton1});
+
outerDetailsPanelLayout.setVerticalGroup(
outerDetailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(outerDetailsPanelLayout.createSequentialGroup()
.addComponent(tabbedPane, javax.swing.GroupLayout.DEFAULT_SIZE, 234, Short.MAX_VALUE)
.addGap(0, 0, 0)
- .addComponent(closeButton)
+ .addGroup(outerDetailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(closeButton)
+ .addComponent(jButton1))
.addGap(5, 5, 5))
- .addGroup(outerDetailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, outerDetailsPanelLayout.createSequentialGroup()
- .addContainerGap(237, Short.MAX_VALUE)
- .addComponent(centralRepoDetailsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap()))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
@@ -153,21 +138,31 @@ class CaseInformationPanel extends javax.swing.JPanel {
);
}// //GEN-END:initComponents
- private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeButtonActionPerformed
- try {
- if (EamDb.getInstance() != null) {
- centralRepoPanel.saveChanges();
- }
- } catch (EamDbException ex) {
- Exceptions.printStackTrace(ex);
- }
- propertiesPanel.saveChanges();
- }//GEN-LAST:event_closeButtonActionPerformed
+ private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+ JDialog editCasePropertiesDialog = new JDialog(WindowManager.getDefault().getMainWindow(), "Edit Case Details", true);
+ EditOptionalCasePropertiesPanel casePropertiesPanel = new EditOptionalCasePropertiesPanel();
+ casePropertiesPanel.addCancelButtonAction((ActionEvent e) -> {
+ editCasePropertiesDialog.setVisible(false);
+ });
+ casePropertiesPanel.addSaveButtonAction((ActionEvent e) -> {
+ editCasePropertiesDialog.setVisible(false);
+ });
+ editCasePropertiesDialog.add(casePropertiesPanel);
+ editCasePropertiesDialog.setResizable(true);
+ editCasePropertiesDialog.pack();
+
+ Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
+ double w = editCasePropertiesDialog.getSize().getWidth();
+ double h = editCasePropertiesDialog.getSize().getHeight();
+ editCasePropertiesDialog.setLocation((int) ((screenDimension.getWidth() - w) / 2), (int) ((screenDimension.getHeight() - h) / 2));
+ editCasePropertiesDialog.setVisible(true);
+ editCasePropertiesDialog.toFront();
+ }//GEN-LAST:event_jButton1ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JLabel centralRepoDetailsLabel;
private javax.swing.JButton closeButton;
+ private javax.swing.JButton jButton1;
private javax.swing.JPanel outerDetailsPanel;
private javax.swing.JTabbedPane tabbedPane;
// End of variables declaration//GEN-END:variables
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseMetadata.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseMetadata.java
index b130929b93..a7c21c4830 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseMetadata.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseMetadata.java
@@ -66,6 +66,9 @@ public final class CaseMetadata {
private final static String CASE_NAME_ELEMENT_NAME = "Name"; //NON-NLS
private final static String CASE_NUMBER_ELEMENT_NAME = "Number"; //NON-NLS
private final static String EXAMINER_ELEMENT_NAME = "Examiner"; //NON-NLS
+ private final static String EXAMINER_ELEMENT_PHONE = "ExaminerPhone"; //NON-NLS
+ private final static String EXAMINER_ELEMENT_EMAIL = "ExaminerEmail"; //NON-NLS
+ private final static String EXAMINER_ELEMENT_NOTES = "ExaminerNotes"; //NON-NLS
private final static String CASE_TYPE_ELEMENT_NAME = "CaseType"; //NON-NLS
private final static String CASE_DATABASE_NAME_ELEMENT_NAME = "DatabaseName"; //NON-NLS
private final static String TEXT_INDEX_NAME_ELEMENT = "TextIndexName"; //NON-NLS
@@ -98,7 +101,7 @@ public final class CaseMetadata {
private String caseName;
private String caseDisplayName;
private String caseNumber;
- private String examiner;
+ private Examiner examiner;
private String caseDatabaseName;
private String caseDatabasePath; // Legacy
private String textIndexName; // Legacy
@@ -127,7 +130,7 @@ public final class CaseMetadata {
* @param caseNumber The case number.
* @param examiner The name of the case examiner.
*/
- CaseMetadata(String caseDirectory, Case.CaseType caseType, String caseName, String caseDisplayName, String caseNumber, String examiner) {
+ CaseMetadata(String caseDirectory, Case.CaseType caseType, String caseName, String caseDisplayName, String caseNumber, Examiner examiner) {
metadataFilePath = Paths.get(caseDirectory, caseDisplayName + FILE_EXTENSION);
this.caseType = caseType;
this.caseName = caseName;
@@ -243,12 +246,12 @@ public final class CaseMetadata {
*
* @return The examiner, may be empty.
*/
- public String getExaminer() {
+ public Examiner getExaminer() {
return examiner;
}
-
- void setExaminer(String newExaminer) throws CaseMetadataException {
- String oldExaminer = this.examiner;
+
+ void setExaminer(Examiner newExaminer) throws CaseMetadataException {
+ Examiner oldExaminer = this.examiner;
this.examiner = newExaminer;
try {
writeToFile();
@@ -413,7 +416,10 @@ public final class CaseMetadata {
createChildElement(doc, caseElement, CASE_NAME_ELEMENT_NAME, caseName);
createChildElement(doc, caseElement, CASE_DISPLAY_NAME_ELEMENT_NAME, caseDisplayName);
createChildElement(doc, caseElement, CASE_NUMBER_ELEMENT_NAME, caseNumber);
- createChildElement(doc, caseElement, EXAMINER_ELEMENT_NAME, examiner);
+ createChildElement(doc, caseElement, EXAMINER_ELEMENT_NAME, examiner.getName());
+ createChildElement(doc, caseElement, EXAMINER_ELEMENT_PHONE, examiner.getPhone());
+ createChildElement(doc, caseElement, EXAMINER_ELEMENT_EMAIL, examiner.getEmail());
+ createChildElement(doc, caseElement, EXAMINER_ELEMENT_NOTES, examiner.getNotes());
createChildElement(doc, caseElement, CASE_TYPE_ELEMENT_NAME, caseType.toString());
createChildElement(doc, caseElement, CASE_DB_ABSOLUTE_PATH_ELEMENT_NAME, caseDatabasePath);
createChildElement(doc, caseElement, CASE_DB_NAME_RELATIVE_ELEMENT_NAME, caseDatabaseName);
@@ -480,7 +486,20 @@ public final class CaseMetadata {
this.caseDisplayName = getElementTextContent(caseElement, CASE_DISPLAY_NAME_ELEMENT_NAME, true);
}
this.caseNumber = getElementTextContent(caseElement, CASE_NUMBER_ELEMENT_NAME, false);
- this.examiner = getElementTextContent(caseElement, EXAMINER_ELEMENT_NAME, false);
+ String examinerName = getElementTextContent(caseElement, EXAMINER_ELEMENT_NAME, false);
+ String examinerPhone;
+ String examinerEmail;
+ String examinerNotes;
+ try {
+ examinerPhone = getElementTextContent(caseElement, EXAMINER_ELEMENT_PHONE, false);
+ examinerEmail = getElementTextContent(caseElement, EXAMINER_ELEMENT_EMAIL, false);
+ examinerNotes = getElementTextContent(caseElement, EXAMINER_ELEMENT_NOTES, false);
+ } catch (CaseMetadataException ex) {
+ examinerPhone = ""; //case had metadata file written before additional examiner details were included
+ examinerEmail = "";
+ examinerNotes = "";
+ }
+ this.examiner = new Examiner(examinerName, examinerPhone, examinerEmail, examinerNotes);
this.caseType = Case.CaseType.fromString(getElementTextContent(caseElement, CASE_TYPE_ELEMENT_NAME, true));
if (null == this.caseType) {
throw new CaseMetadataException("Case metadata file corrupted");
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form
index 514b832672..50f83be13c 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form
@@ -33,25 +33,25 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
@@ -59,39 +59,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -100,193 +70,610 @@
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java
index 2319bbb9fd..3c0c82564f 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java
@@ -19,10 +19,7 @@
package org.sleuthkit.autopsy.casemodule;
import java.nio.file.Paths;
-import java.util.logging.Level;
-import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
-import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
/**
* A panel that allows the user to view various properties of a case and change
@@ -32,7 +29,7 @@ class CasePropertiesPanel extends javax.swing.JPanel {
private static final long serialVersionUID = 1L;
private static final Logger LOGGER = Logger.getLogger(CasePropertiesPanel.class.getName());
- private final Case theCase;
+ private Case theCase;
/**
* Constructs a panel that allows the user to view various properties of the
@@ -40,22 +37,19 @@ class CasePropertiesPanel extends javax.swing.JPanel {
*
* @param aCase A case.
*/
- CasePropertiesPanel(Case aCase) {
+ CasePropertiesPanel(Case caseInfo) {
initComponents();
- theCase = aCase;
- caseNameTextField.setText(theCase.getDisplayName());
- String caseNumber = theCase.getNumber();
- if (!caseNumber.isEmpty()) {
- caseNumberTextField.setText(caseNumber);
- } else {
- caseNumberTextField.setText("");
- }
- String examiner = theCase.getExaminer();
- if (!examiner.isEmpty()) {
- examinerTextField.setText(examiner);
- } else {
- examinerTextField.setText("");
- }
+ updateCaseInfo(caseInfo);
+ }
+
+ void updateCaseInfo(Case caseInfo) {
+ theCase = Case.getCurrentCase();
+ lbCaseNameText.setText(theCase.getDisplayName());
+ lbCaseNumberText.setText(theCase.getNumber());
+ lbExaminerNameText.setText(theCase.getExaminer());
+ lbExaminerPhoneText.setText(theCase.getExaminerPhone());
+ lbExaminerEmailText.setText(theCase.getExaminerEmail());
+ taNotesText.setText(theCase.getExaminerNotes());
crDateField.setText(theCase.getCreatedDate());
caseDirField.setText(theCase.getCaseDirectory());
if (Case.CaseType.SINGLE_USER_CASE == theCase.getCaseType()) {
@@ -66,6 +60,9 @@ class CasePropertiesPanel extends javax.swing.JPanel {
Case.CaseType caseType = theCase.getCaseType();
caseTypeField.setText(caseType.getLocalizedDisplayName());
lbCaseUIDText.setText(theCase.getName());
+ validate();
+ repaint();
+ System.out.println("repainged CASE PROPS");
}
/**
@@ -88,258 +85,468 @@ class CasePropertiesPanel extends javax.swing.JPanel {
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
- jPanel1 = new javax.swing.JPanel();
+ detailsPanel = new javax.swing.JPanel();
+ casePanel = new javax.swing.JPanel();
caseNameLabel = new javax.swing.JLabel();
- crDateLabel = new javax.swing.JLabel();
- caseDirLabel = new javax.swing.JLabel();
- caseNameTextField = new javax.swing.JTextField();
- caseNumberLabel = new javax.swing.JLabel();
- examinerLabel = new javax.swing.JLabel();
lbDbType = new javax.swing.JLabel();
- lbDbName = new javax.swing.JLabel();
- crDateField = new javax.swing.JLabel();
- caseDirField = new javax.swing.JLabel();
- dbNameField = new javax.swing.JLabel();
- caseTypeField = new javax.swing.JLabel();
lbCaseUUIDLabel = new javax.swing.JLabel();
+ caseTypeField = new javax.swing.JLabel();
+ dbNameField = new javax.swing.JLabel();
+ lbDbName = new javax.swing.JLabel();
+ caseNumberLabel = new javax.swing.JLabel();
+ caseDirLabel = new javax.swing.JLabel();
+ caseDirField = new javax.swing.JLabel();
+ crDateLabel = new javax.swing.JLabel();
+ crDateField = new javax.swing.JLabel();
lbCaseUIDText = new javax.swing.JLabel();
- caseNumberTextField = new javax.swing.JTextField();
- examinerTextField = new javax.swing.JTextField();
+ lbCaseNameText = new javax.swing.JLabel();
+ lbCaseNumberText = new javax.swing.JLabel();
+ examinerPanel = new javax.swing.JPanel();
+ lbExaminerNameText = new javax.swing.JLabel();
+ lbNotesLabel = new javax.swing.JLabel();
+ examinerLabel = new javax.swing.JLabel();
+ examinerNotesScrollPane = new javax.swing.JScrollPane();
+ taNotesText = new javax.swing.JTextArea();
+ lbExaminerEmailLabel = new javax.swing.JLabel();
+ lbExaminerPhoneLabel = new javax.swing.JLabel();
+ lbExaminerPhoneText = new javax.swing.JLabel();
+ lbExaminerEmailText = new javax.swing.JLabel();
+ pnOrganization1 = new javax.swing.JPanel();
+ lbOrganizationNameLabel1 = new javax.swing.JLabel();
+ lbPointOfContactNameLabel1 = new javax.swing.JLabel();
+ lbPointOfContactEmailLabel1 = new javax.swing.JLabel();
+ lbPointOfContactPhoneLabel1 = new javax.swing.JLabel();
+ lbPointOfContactNameText1 = new javax.swing.JLabel();
+ lbPointOfContactEmailText1 = new javax.swing.JLabel();
+ lbPointOfContactPhoneText1 = new javax.swing.JLabel();
+ lbOrganizationNameText = new javax.swing.JLabel();
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
+ casePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.casePanel.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 12))); // NOI18N
+
caseNameLabel.setFont(caseNameLabel.getFont().deriveFont(caseNameLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
caseNameLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseNameLabel.text")); // NOI18N
-
- crDateLabel.setFont(crDateLabel.getFont().deriveFont(crDateLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
- crDateLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.crDateLabel.text")); // NOI18N
-
- caseDirLabel.setFont(caseDirLabel.getFont().deriveFont(caseDirLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
- caseDirLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseDirLabel.text")); // NOI18N
-
- caseNameTextField.setFont(caseNameTextField.getFont().deriveFont(caseNameTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
- caseNameTextField.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseNameTextField.text")); // NOI18N
-
- caseNumberLabel.setFont(caseNumberLabel.getFont().deriveFont(caseNumberLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
- caseNumberLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseNumberLabel.text")); // NOI18N
-
- examinerLabel.setFont(examinerLabel.getFont().deriveFont(examinerLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
- examinerLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.examinerLabel.text")); // NOI18N
+ caseNameLabel.setMaximumSize(new java.awt.Dimension(82, 14));
+ caseNameLabel.setMinimumSize(new java.awt.Dimension(82, 14));
+ caseNameLabel.setPreferredSize(new java.awt.Dimension(82, 14));
lbDbType.setFont(lbDbType.getFont().deriveFont(lbDbType.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
lbDbType.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbDbType.text")); // NOI18N
+ lbDbType.setMaximumSize(new java.awt.Dimension(82, 14));
+ lbDbType.setMinimumSize(new java.awt.Dimension(82, 14));
+ lbDbType.setPreferredSize(new java.awt.Dimension(82, 14));
- lbDbName.setFont(lbDbName.getFont().deriveFont(lbDbName.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
- lbDbName.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbDbName.text")); // NOI18N
-
- caseDirField.setMinimumSize(new java.awt.Dimension(25, 14));
-
- dbNameField.setMinimumSize(new java.awt.Dimension(25, 14));
+ lbCaseUUIDLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbCaseUUIDLabel.text")); // NOI18N
+ lbCaseUUIDLabel.setMaximumSize(new java.awt.Dimension(82, 14));
+ lbCaseUUIDLabel.setMinimumSize(new java.awt.Dimension(82, 14));
+ lbCaseUUIDLabel.setPreferredSize(new java.awt.Dimension(82, 14));
caseTypeField.setMaximumSize(new java.awt.Dimension(1, 0));
- lbCaseUUIDLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbCaseUUIDLabel.text")); // NOI18N
+ dbNameField.setMinimumSize(new java.awt.Dimension(25, 14));
- caseNumberTextField.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseNumberTextField.text")); // NOI18N
+ lbDbName.setFont(lbDbName.getFont().deriveFont(lbDbName.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
+ lbDbName.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbDbName.text")); // NOI18N
+ lbDbName.setMaximumSize(new java.awt.Dimension(82, 14));
+ lbDbName.setMinimumSize(new java.awt.Dimension(82, 14));
+ lbDbName.setPreferredSize(new java.awt.Dimension(82, 14));
- examinerTextField.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.examinerTextField.text")); // NOI18N
+ caseNumberLabel.setFont(caseNumberLabel.getFont().deriveFont(caseNumberLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
+ caseNumberLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseNumberLabel.text")); // NOI18N
+ caseNumberLabel.setMaximumSize(new java.awt.Dimension(82, 14));
+ caseNumberLabel.setMinimumSize(new java.awt.Dimension(82, 14));
+ caseNumberLabel.setPreferredSize(new java.awt.Dimension(82, 14));
- javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
- jPanel1.setLayout(jPanel1Layout);
- jPanel1Layout.setHorizontalGroup(
- jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(jPanel1Layout.createSequentialGroup()
+ caseDirLabel.setFont(caseDirLabel.getFont().deriveFont(caseDirLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
+ caseDirLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseDirLabel.text")); // NOI18N
+ caseDirLabel.setMaximumSize(new java.awt.Dimension(82, 14));
+ caseDirLabel.setMinimumSize(new java.awt.Dimension(82, 14));
+ caseDirLabel.setPreferredSize(new java.awt.Dimension(82, 14));
+
+ caseDirField.setMinimumSize(new java.awt.Dimension(25, 14));
+
+ crDateLabel.setFont(crDateLabel.getFont().deriveFont(crDateLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
+ crDateLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.crDateLabel.text")); // NOI18N
+ crDateLabel.setMaximumSize(new java.awt.Dimension(82, 14));
+ crDateLabel.setMinimumSize(new java.awt.Dimension(82, 14));
+ crDateLabel.setPreferredSize(new java.awt.Dimension(82, 14));
+
+ lbCaseNameText.setMinimumSize(new java.awt.Dimension(25, 14));
+
+ lbCaseNumberText.setMinimumSize(new java.awt.Dimension(25, 14));
+
+ javax.swing.GroupLayout casePanelLayout = new javax.swing.GroupLayout(casePanel);
+ casePanel.setLayout(casePanelLayout);
+ casePanelLayout.setHorizontalGroup(
+ casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(casePanelLayout.createSequentialGroup()
.addContainerGap()
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(jPanel1Layout.createSequentialGroup()
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(caseNumberLabel)
- .addComponent(caseNameLabel)
- .addComponent(examinerLabel))
- .addGap(19, 19, 19)
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(caseNameTextField)
- .addComponent(caseNumberTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE)
- .addComponent(examinerTextField)))
- .addGroup(jPanel1Layout.createSequentialGroup()
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
- .addComponent(lbCaseUUIDLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbDbName)
- .addComponent(lbDbType, javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(caseDirLabel, javax.swing.GroupLayout.Alignment.LEADING))
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(casePanelLayout.createSequentialGroup()
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(caseNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(caseNumberLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(6, 6, 6)
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lbCaseNumberText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbCaseNameText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+ .addGroup(casePanelLayout.createSequentialGroup()
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+ .addComponent(lbCaseUUIDLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbDbName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lbDbType, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(caseDirLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(crDateLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(crDateField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(caseDirField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(caseTypeField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(dbNameField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbCaseUIDText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
- .addGroup(jPanel1Layout.createSequentialGroup()
- .addComponent(crDateLabel)
- .addGap(18, 18, 18)
- .addComponent(crDateField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+ .addComponent(lbCaseUIDText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addContainerGap())
);
- jPanel1Layout.setVerticalGroup(
- jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(caseNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(caseNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ casePanelLayout.setVerticalGroup(
+ casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(casePanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(caseNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lbCaseNameText, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(caseNumberLabel)
- .addComponent(caseNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(caseNumberLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lbCaseNumberText, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(examinerTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(examinerLabel))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(crDateLabel)
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(crDateLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(crDateField, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(caseDirLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(caseDirField, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(caseTypeField, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lbDbType))
+ .addComponent(lbDbType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(lbDbName)
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(lbDbName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(dbNameField, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(lbCaseUUIDLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lbCaseUIDText, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addContainerGap(20, Short.MAX_VALUE))
+ .addGap(6, 6, 6))
+ );
+
+ examinerPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.examinerPanel.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 12))); // NOI18N
+
+ lbNotesLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbNotesLabel.text")); // NOI18N
+ lbNotesLabel.setMaximumSize(new java.awt.Dimension(82, 14));
+ lbNotesLabel.setMinimumSize(new java.awt.Dimension(82, 14));
+ lbNotesLabel.setPreferredSize(new java.awt.Dimension(82, 14));
+ lbNotesLabel.setRequestFocusEnabled(false);
+
+ examinerLabel.setFont(examinerLabel.getFont().deriveFont(examinerLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
+ examinerLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.examinerLabel.text")); // NOI18N
+ examinerLabel.setMaximumSize(new java.awt.Dimension(82, 14));
+ examinerLabel.setMinimumSize(new java.awt.Dimension(82, 14));
+ examinerLabel.setPreferredSize(new java.awt.Dimension(82, 14));
+
+ examinerNotesScrollPane.setBorder(null);
+
+ taNotesText.setBackground(new java.awt.Color(240, 240, 240));
+ taNotesText.setColumns(20);
+ taNotesText.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
+ taNotesText.setLineWrap(true);
+ taNotesText.setRows(2);
+ taNotesText.setWrapStyleWord(true);
+ taNotesText.setBorder(null);
+ examinerNotesScrollPane.setViewportView(taNotesText);
+
+ lbExaminerEmailLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbExaminerEmailLabel.text")); // NOI18N
+ lbExaminerEmailLabel.setMaximumSize(new java.awt.Dimension(82, 14));
+ lbExaminerEmailLabel.setMinimumSize(new java.awt.Dimension(82, 14));
+ lbExaminerEmailLabel.setPreferredSize(new java.awt.Dimension(82, 14));
+
+ lbExaminerPhoneLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbExaminerPhoneLabel.text")); // NOI18N
+ lbExaminerPhoneLabel.setMaximumSize(new java.awt.Dimension(82, 14));
+ lbExaminerPhoneLabel.setMinimumSize(new java.awt.Dimension(82, 14));
+ lbExaminerPhoneLabel.setPreferredSize(new java.awt.Dimension(82, 14));
+
+ javax.swing.GroupLayout examinerPanelLayout = new javax.swing.GroupLayout(examinerPanel);
+ examinerPanel.setLayout(examinerPanelLayout);
+ examinerPanelLayout.setHorizontalGroup(
+ examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(examinerPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(examinerPanelLayout.createSequentialGroup()
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(lbExaminerPhoneLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbNotesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lbExaminerPhoneText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(examinerNotesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 411, Short.MAX_VALUE)))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, examinerPanelLayout.createSequentialGroup()
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(lbExaminerEmailLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(examinerLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lbExaminerNameText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbExaminerEmailText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
+ .addContainerGap())
+ );
+ examinerPanelLayout.setVerticalGroup(
+ examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(examinerPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(examinerLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lbExaminerNameText, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(lbExaminerEmailLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbExaminerEmailText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(lbExaminerPhoneLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbExaminerPhoneText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lbNotesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(examinerNotesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(6, 6, 6))
+ );
+
+ pnOrganization1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.pnOrganization1.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 12))); // NOI18N
+
+ lbOrganizationNameLabel1.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbOrganizationNameLabel1.text")); // NOI18N
+ lbOrganizationNameLabel1.setMaximumSize(new java.awt.Dimension(82, 14));
+ lbOrganizationNameLabel1.setMinimumSize(new java.awt.Dimension(82, 14));
+ lbOrganizationNameLabel1.setPreferredSize(new java.awt.Dimension(82, 14));
+
+ lbPointOfContactNameLabel1.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbPointOfContactNameLabel1.text")); // NOI18N
+
+ lbPointOfContactEmailLabel1.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbPointOfContactEmailLabel1.text")); // NOI18N
+ lbPointOfContactEmailLabel1.setMaximumSize(new java.awt.Dimension(82, 14));
+ lbPointOfContactEmailLabel1.setMinimumSize(new java.awt.Dimension(82, 14));
+ lbPointOfContactEmailLabel1.setPreferredSize(new java.awt.Dimension(82, 14));
+
+ lbPointOfContactPhoneLabel1.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.lbPointOfContactPhoneLabel1.text")); // NOI18N
+ lbPointOfContactPhoneLabel1.setMaximumSize(new java.awt.Dimension(82, 14));
+ lbPointOfContactPhoneLabel1.setMinimumSize(new java.awt.Dimension(82, 14));
+ lbPointOfContactPhoneLabel1.setPreferredSize(new java.awt.Dimension(82, 14));
+
+ javax.swing.GroupLayout pnOrganization1Layout = new javax.swing.GroupLayout(pnOrganization1);
+ pnOrganization1.setLayout(pnOrganization1Layout);
+ pnOrganization1Layout.setHorizontalGroup(
+ pnOrganization1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(pnOrganization1Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(pnOrganization1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(pnOrganization1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(lbPointOfContactEmailLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lbPointOfContactPhoneLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lbPointOfContactNameLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(lbOrganizationNameLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(pnOrganization1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addComponent(lbPointOfContactNameText1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbOrganizationNameText, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbPointOfContactPhoneText1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbPointOfContactEmailText1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+ pnOrganization1Layout.setVerticalGroup(
+ pnOrganization1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(pnOrganization1Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(pnOrganization1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(lbOrganizationNameLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbOrganizationNameText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(pnOrganization1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(lbPointOfContactNameLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbPointOfContactNameText1, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(pnOrganization1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(lbPointOfContactEmailLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbPointOfContactEmailText1, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(pnOrganization1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lbPointOfContactPhoneLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lbPointOfContactPhoneText1, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(6, 6, 6))
+ );
+
+ javax.swing.GroupLayout detailsPanelLayout = new javax.swing.GroupLayout(detailsPanel);
+ detailsPanel.setLayout(detailsPanelLayout);
+ detailsPanelLayout.setHorizontalGroup(
+ detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(detailsPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(casePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(examinerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(pnOrganization1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+ detailsPanelLayout.setVerticalGroup(
+ detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, detailsPanelLayout.createSequentialGroup()
+ .addComponent(casePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, 0)
+ .addComponent(examinerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, 0)
+ .addComponent(pnOrganization1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addContainerGap())
+ .addGroup(layout.createSequentialGroup()
+ .addGap(0, 0, 0)
+ .addComponent(detailsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addGap(0, 0, 0))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addContainerGap())
+ .addGap(0, 0, 0)
+ .addComponent(detailsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addGap(0, 0, 0))
);
}// //GEN-END:initComponents
- @NbBundle.Messages({
- "CasePropertiesPanel.errorDialog.emptyCaseNameMessage=No case name entered.",
- "CasePropertiesPanel.errorDialog.invalidCaseNameMessage=Case names cannot include the following symbols: \\, /, :, *, ?, \", <, >, |"
- })
- void saveChanges() {
- saveCaseName();
- saveCaseNumber();
- saveExaminerName();
- }
-
- private void saveCaseName() {
- String newCaseDisplayName = caseNameTextField.getText();
-
- if (newCaseDisplayName.equals(theCase.getDisplayName())) {
- return;
- }
-
- if (newCaseDisplayName.trim().isEmpty()) {
- MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_emptyCaseNameMessage());
- return;
- }
-
- if (!Case.isValidName(newCaseDisplayName)) {
- MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_invalidCaseNameMessage());
- return;
- }
-
- try {
- theCase.updateDisplayName(newCaseDisplayName);
- } catch (CaseActionException ex) {
- MessageNotifyUtil.Message.error(ex.getLocalizedMessage());
- LOGGER.log(Level.SEVERE, "Failed to update case display name", ex); //NON-NLS
- }
- }
-
- private void saveCaseNumber() {
- String newCaseNumber = caseNumberTextField.getText();
-
- if (newCaseNumber.equals(theCase.getNumber())) {
- return;
- }
-
- if (newCaseNumber.trim().isEmpty()) {
- MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_emptyCaseNameMessage());
- return;
- }
-
- if (!Case.isValidName(newCaseNumber)) {
- MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_invalidCaseNameMessage());
- return;
- }
-
- try {
- theCase.updateCaseNumber(newCaseNumber);
- } catch (CaseActionException ex) {
- MessageNotifyUtil.Message.error(ex.getLocalizedMessage());
- LOGGER.log(Level.SEVERE, "Failed to update case display name", ex); //NON-NLS
- }
- }
-
- private void saveExaminerName() {
- String newExaminerName = examinerTextField.getText();
-
- if (newExaminerName.equals(theCase.getExaminer())) {
- return;
- }
-
- if (newExaminerName.trim().isEmpty()) {
- MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_emptyCaseNameMessage());
- return;
- }
-
- if (!Case.isValidName(newExaminerName)) {
- MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_invalidCaseNameMessage());
- return;
- }
-
- try {
- theCase.updateExaminer(newExaminerName);
- } catch (CaseActionException ex) {
- MessageNotifyUtil.Message.error(ex.getLocalizedMessage());
- LOGGER.log(Level.SEVERE, "Failed to update case display name", ex); //NON-NLS
- }
- }
+// @NbBundle.Messages({
+// "CasePropertiesPanel.errorDialog.emptyCaseNameMessage=No case name entered.",
+// "CasePropertiesPanel.errorDialog.invalidCaseNameMessage=Case names cannot include the following symbols: \\, /, :, *, ?, \", <, >, |"
+// })
+// void saveChanges() {
+// saveCaseName();
+// saveCaseNumber();
+// saveExaminerName();
+// }
+// private void saveCaseName() {
+// String newCaseDisplayName = caseNameTextField.getText();
+//
+// if (newCaseDisplayName.equals(theCase.getDisplayName())) {
+// return;
+// }
+//
+// if (newCaseDisplayName.trim().isEmpty()) {
+// MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_emptyCaseNameMessage());
+// return;
+// }
+//
+// if (!Case.isValidName(newCaseDisplayName)) {
+// MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_invalidCaseNameMessage());
+// return;
+// }
+//
+// try {
+// theCase.updateDisplayName(newCaseDisplayName);
+// } catch (CaseActionException ex) {
+// MessageNotifyUtil.Message.error(ex.getLocalizedMessage());
+// LOGGER.log(Level.SEVERE, "Failed to update case display name", ex); //NON-NLS
+// }
+// }
+// private void saveCaseNumber() {
+// String newCaseNumber = caseNumberTextField.getText();
+//
+// if (newCaseNumber.equals(theCase.getNumber())) {
+// return;
+// }
+//
+// if (newCaseNumber.trim().isEmpty()) {
+// MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_emptyCaseNameMessage());
+// return;
+// }
+//
+// if (!Case.isValidName(newCaseNumber)) {
+// MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_invalidCaseNameMessage());
+// return;
+// }
+//
+// try {
+// theCase.updateCaseNumber(newCaseNumber);
+// } catch (CaseActionException ex) {
+// MessageNotifyUtil.Message.error(ex.getLocalizedMessage());
+// LOGGER.log(Level.SEVERE, "Failed to update case display name", ex); //NON-NLS
+// }
+// }
+// private void saveExaminerName() {
+// String newExaminerName = examinerTextField.getText();
+//
+// if (newExaminerName.equals(theCase.getExaminer())) {
+// return;
+// }
+//
+// if (newExaminerName.trim().isEmpty()) {
+// MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_emptyCaseNameMessage());
+// return;
+// }
+//
+// if (!Case.isValidName(newExaminerName)) {
+// MessageNotifyUtil.Message.error(Bundle.CasePropertiesPanel_errorDialog_invalidCaseNameMessage());
+// return;
+// }
+//
+// try {
+// theCase.updateExaminer(newExaminerName);
+// } catch (CaseActionException ex) {
+// MessageNotifyUtil.Message.error(ex.getLocalizedMessage());
+// LOGGER.log(Level.SEVERE, "Failed to update case display name", ex); //NON-NLS
+// }
+// }
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel caseDirField;
private javax.swing.JLabel caseDirLabel;
private javax.swing.JLabel caseNameLabel;
- private javax.swing.JTextField caseNameTextField;
private javax.swing.JLabel caseNumberLabel;
- private javax.swing.JTextField caseNumberTextField;
+ private javax.swing.JPanel casePanel;
private javax.swing.JLabel caseTypeField;
private javax.swing.JLabel crDateField;
private javax.swing.JLabel crDateLabel;
private javax.swing.JLabel dbNameField;
+ private javax.swing.JPanel detailsPanel;
private javax.swing.JLabel examinerLabel;
- private javax.swing.JTextField examinerTextField;
- private javax.swing.JPanel jPanel1;
+ private javax.swing.JScrollPane examinerNotesScrollPane;
+ private javax.swing.JPanel examinerPanel;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
+ private javax.swing.JLabel lbCaseNameText;
+ private javax.swing.JLabel lbCaseNumberText;
private javax.swing.JLabel lbCaseUIDText;
private javax.swing.JLabel lbCaseUUIDLabel;
private javax.swing.JLabel lbDbName;
private javax.swing.JLabel lbDbType;
+ private javax.swing.JLabel lbExaminerEmailLabel;
+ private javax.swing.JLabel lbExaminerEmailText;
+ private javax.swing.JLabel lbExaminerNameText;
+ private javax.swing.JLabel lbExaminerPhoneLabel;
+ private javax.swing.JLabel lbExaminerPhoneText;
+ private javax.swing.JLabel lbNotesLabel;
+ private javax.swing.JLabel lbOrganizationNameLabel1;
+ private javax.swing.JLabel lbOrganizationNameText;
+ private javax.swing.JLabel lbPointOfContactEmailLabel1;
+ private javax.swing.JLabel lbPointOfContactEmailText1;
+ private javax.swing.JLabel lbPointOfContactNameLabel1;
+ private javax.swing.JLabel lbPointOfContactNameText1;
+ private javax.swing.JLabel lbPointOfContactPhoneLabel1;
+ private javax.swing.JLabel lbPointOfContactPhoneText1;
+ private javax.swing.JPanel pnOrganization1;
+ private javax.swing.JTextArea taNotesText;
// End of variables declaration//GEN-END:variables
}
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/EditOptionalCasePropertiesPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/EditOptionalCasePropertiesPanel.form
new file mode 100644
index 0000000000..a19cf1605f
--- /dev/null
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/EditOptionalCasePropertiesPanel.form
@@ -0,0 +1,73 @@
+
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/EditOptionalCasePropertiesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/EditOptionalCasePropertiesPanel.java
new file mode 100644
index 0000000000..08ca101536
--- /dev/null
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/EditOptionalCasePropertiesPanel.java
@@ -0,0 +1,128 @@
+/*
+ * Autopsy Forensic Browser
+ *
+ * Copyright 2011-2017 Basis Technology Corp.
+ * Contact: carrier sleuthkit org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.sleuthkit.autopsy.casemodule;
+
+import java.awt.event.ActionListener;
+
+/**
+ *
+ * @author wschaefer
+ */
+class EditOptionalCasePropertiesPanel extends javax.swing.JPanel {
+
+ private static final long serialVersionUID = 1L;
+
+ private final OptionalCasePropertiesPanel propertiesPanel;
+
+ /**
+ * Creates new form EditOptionalCasePropertiesPanel
+ */
+ EditOptionalCasePropertiesPanel() {
+ initComponents();
+ propertiesPanel = new OptionalCasePropertiesPanel(true);
+ optionsPanel.add(propertiesPanel);
+ optionsPanel.setVisible(true);
+ propertiesPanel.setVisible(true);
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ optionsPanel = new javax.swing.JPanel();
+ cancelButton = new javax.swing.JButton();
+ saveButton = new javax.swing.JButton();
+
+ optionsPanel.setLayout(new java.awt.BorderLayout());
+
+ org.openide.awt.Mnemonics.setLocalizedText(cancelButton, org.openide.util.NbBundle.getMessage(EditOptionalCasePropertiesPanel.class, "EditOptionalCasePropertiesPanel.cancelButton.text")); // NOI18N
+
+ org.openide.awt.Mnemonics.setLocalizedText(saveButton, org.openide.util.NbBundle.getMessage(EditOptionalCasePropertiesPanel.class, "EditOptionalCasePropertiesPanel.saveButton.text")); // NOI18N
+ saveButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ saveButtonActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addContainerGap(254, Short.MAX_VALUE)
+ .addComponent(cancelButton)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(saveButton)
+ .addContainerGap())
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(optionsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+
+ layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {cancelButton, saveButton});
+
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap(266, Short.MAX_VALUE)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(cancelButton)
+ .addComponent(saveButton))
+ .addContainerGap())
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(optionsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
+ .addGap(38, 38, 38)))
+ );
+ }// //GEN-END:initComponents
+
+ private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveButtonActionPerformed
+ this.propertiesPanel.saveUpdatedCaseDetails();
+ }//GEN-LAST:event_saveButtonActionPerformed
+
+ /**
+ * Adds an action listener to the Save button of the panel.
+ *
+ * @param action
+ */
+ void addSaveButtonAction(ActionListener action) {
+ this.saveButton.addActionListener(action);
+ }
+
+ /**
+ * Adds an action listener to the Cancel button of the panel.
+ *
+ * @param action
+ */
+ void addCancelButtonAction(ActionListener action) {
+ this.cancelButton.addActionListener(action);
+ }
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton cancelButton;
+ private javax.swing.JPanel optionsPanel;
+ private javax.swing.JButton saveButton;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Examiner.java b/Core/src/org/sleuthkit/autopsy/casemodule/Examiner.java
new file mode 100644
index 0000000000..97d53f340c
--- /dev/null
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/Examiner.java
@@ -0,0 +1,72 @@
+/*
+ * Autopsy Forensic Browser
+ *
+ * Copyright 2017 Basis Technology Corp.
+ * Contact: carrier sleuthkit org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.sleuthkit.autopsy.casemodule;
+
+/**
+ * Wrapper to contain the details associated with an Examiner
+ */
+class Examiner {
+ private final String name;
+ private final String phone;
+ private final String email;
+ private final String notes;
+
+ Examiner(String exName, String exPhone, String exEmail, String exNotes){
+ name = exName;
+ phone = exPhone;
+ email = exEmail;
+ notes = exNotes;
+ }
+
+ /**
+ * Get the examiner name
+ *
+ * @return name - the name associated with the examiner
+ */
+ String getName() {
+ return name;
+ }
+
+ /**
+ * Get the examiner phone number
+ *
+ * @return phone - the phone number associated with the examiner
+ */
+ String getPhone() {
+ return phone;
+ }
+
+ /**
+ * Get the examiner email address
+ *
+ * @return email - the email address associated with the examiner
+ */
+ String getEmail() {
+ return email;
+ }
+
+ /**
+ * Get the examiner notes
+ *
+ * @return notes - the note asssociated with the examiner
+ */
+ String getNotes() {
+ return notes;
+ }
+}
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.form b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.form
index b866695be3..73c1406f93 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.form
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.form
@@ -19,42 +19,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
@@ -63,92 +33,14 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -161,62 +53,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.java b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.java
index 937d9cc526..6009b20cee 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.java
@@ -1,7 +1,7 @@
/*
* Autopsy Forensic Browser
*
- * Copyright 2011 Basis Technology Corp.
+ * Copyright 2011-2017 Basis Technology Corp.
* Contact: carrier sleuthkit org
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,28 +26,23 @@ package org.sleuthkit.autopsy.casemodule;
import org.openide.util.NbBundle;
-import java.awt.*;
-import javax.swing.JComboBox;
-import org.sleuthkit.autopsy.centralrepository.datamodel.EamDb;
-import org.sleuthkit.autopsy.centralrepository.datamodel.EamDbException;
-import org.sleuthkit.autopsy.centralrepository.datamodel.EamOrganization;
-import org.sleuthkit.autopsy.centralrepository.optionspanel.ManageOrganizationsDialog;
-
/**
*
* @author dfickling
*/
class NewCaseVisualPanel2 extends javax.swing.JPanel {
- private EamOrganization selectedOrg = null;
- private java.util.List orgs = null;
- private EamDb dbManager;
-
+ OptionalCasePropertiesPanel propertiesPanel;
/**
* Creates new form NewCaseVisualPanel2
*/
public NewCaseVisualPanel2() {
initComponents();
+ propertiesPanel = new OptionalCasePropertiesPanel();
+ optionalPanel.add(propertiesPanel);
+ optionalPanel.setVisible(true);
+ propertiesPanel.setVisible(true);
+
}
/**
@@ -61,29 +56,7 @@ class NewCaseVisualPanel2 extends javax.swing.JPanel {
return NbBundle.getMessage(this.getClass(), "NewCaseVisualPanel2.getName.text");
}
- void setUpOrganization() {
- try {
- this.dbManager = EamDb.getInstance();
- } catch (EamDbException ex) {
- dbManager = null;
- }
- boolean cREnabled = (dbManager != null);
- comboBoxOrgName.setEnabled(cREnabled);
- bnNewOrganization.setEnabled(cREnabled);
- lbPointOfContactNameText.setEnabled(cREnabled);
- lbPointOfContactEmailText.setEnabled(cREnabled);
- lbPointOfContactPhoneText.setEnabled(cREnabled);
- lbOrganizationNameLabel.setEnabled(cREnabled);
- lbPointOfContactNameLabel.setEnabled(cREnabled);
- lbPointOfContactEmailLabel.setEnabled(cREnabled);
- lbPointOfContactPhoneLabel.setEnabled(cREnabled);
- if (cREnabled) {
- loadOrganizationData();
- } else {
- selectedOrg = null;
- clearOrganization();
- }
- }
+
/**
* This method is called from within the constructor to initialize the form.
@@ -94,56 +67,13 @@ class NewCaseVisualPanel2 extends javax.swing.JPanel {
// //GEN-BEGIN:initComponents
private void initComponents() {
- caseNumberTextField = new javax.swing.JTextField();
- examinerTextField = new javax.swing.JTextField();
- caseNumberLabel = new javax.swing.JLabel();
- examinerLabel = new javax.swing.JLabel();
optionalLabel = new javax.swing.JLabel();
- lbOrganizationNameLabel = new javax.swing.JLabel();
- comboBoxOrgName = new javax.swing.JComboBox<>();
- bnNewOrganization = new javax.swing.JButton();
- lbPointOfContactNameLabel = new javax.swing.JLabel();
- lbPointOfContactNameText = new javax.swing.JLabel();
- lbPointOfContactEmailLabel = new javax.swing.JLabel();
- lbPointOfContactEmailText = new javax.swing.JLabel();
- lbPointOfContactPhoneLabel = new javax.swing.JLabel();
- lbPointOfContactPhoneText = new javax.swing.JLabel();
-
- caseNumberTextField.setFont(caseNumberTextField.getFont().deriveFont(caseNumberTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
- caseNumberTextField.setText(org.openide.util.NbBundle.getMessage(NewCaseVisualPanel2.class, "NewCaseVisualPanel2.caseNumberTextField.text")); // NOI18N
-
- examinerTextField.setFont(examinerTextField.getFont().deriveFont(examinerTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
- examinerTextField.setText(org.openide.util.NbBundle.getMessage(NewCaseVisualPanel2.class, "NewCaseVisualPanel2.examinerTextField.text")); // NOI18N
-
- caseNumberLabel.setFont(caseNumberLabel.getFont().deriveFont(caseNumberLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
- caseNumberLabel.setText(org.openide.util.NbBundle.getMessage(NewCaseVisualPanel2.class, "NewCaseVisualPanel2.caseNumberLabel.text")); // NOI18N
-
- examinerLabel.setFont(examinerLabel.getFont().deriveFont(examinerLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
- examinerLabel.setText(org.openide.util.NbBundle.getMessage(NewCaseVisualPanel2.class, "NewCaseVisualPanel2.examinerLabel.text")); // NOI18N
+ optionalPanel = new javax.swing.JPanel();
optionalLabel.setFont(optionalLabel.getFont().deriveFont(optionalLabel.getFont().getStyle() | java.awt.Font.BOLD, 14));
optionalLabel.setText(org.openide.util.NbBundle.getMessage(NewCaseVisualPanel2.class, "NewCaseVisualPanel2.optionalLabel.text")); // NOI18N
- lbOrganizationNameLabel.setText(org.openide.util.NbBundle.getMessage(NewCaseVisualPanel2.class, "NewCaseVisualPanel2.lbOrganizationNameLabel.text")); // NOI18N
-
- comboBoxOrgName.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- comboBoxOrgNameActionPerformed(evt);
- }
- });
-
- bnNewOrganization.setText(org.openide.util.NbBundle.getMessage(NewCaseVisualPanel2.class, "NewCaseVisualPanel2.bnNewOrganization.text")); // NOI18N
- bnNewOrganization.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- bnNewOrganizationActionPerformed(evt);
- }
- });
-
- lbPointOfContactNameLabel.setText(org.openide.util.NbBundle.getMessage(NewCaseVisualPanel2.class, "NewCaseVisualPanel2.lbPointOfContactNameLabel.text")); // NOI18N
-
- lbPointOfContactEmailLabel.setText(org.openide.util.NbBundle.getMessage(NewCaseVisualPanel2.class, "NewCaseVisualPanel2.lbPointOfContactEmailLabel.text")); // NOI18N
-
- lbPointOfContactPhoneLabel.setText(org.openide.util.NbBundle.getMessage(NewCaseVisualPanel2.class, "NewCaseVisualPanel2.lbPointOfContactPhoneLabel.text")); // NOI18N
+ optionalPanel.setLayout(new java.awt.BorderLayout());
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
@@ -152,163 +82,41 @@ class NewCaseVisualPanel2 extends javax.swing.JPanel {
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addComponent(optionalLabel)
- .addGap(0, 150, Short.MAX_VALUE))
- .addGroup(layout.createSequentialGroup()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(examinerLabel)
- .addComponent(lbOrganizationNameLabel)
- .addComponent(caseNumberLabel))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(caseNumberTextField)
- .addComponent(examinerTextField)
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
- .addGap(0, 0, Short.MAX_VALUE)
- .addComponent(bnNewOrganization))
- .addComponent(comboBoxOrgName, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGroup(layout.createSequentialGroup()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(lbPointOfContactPhoneLabel)
- .addComponent(lbPointOfContactEmailLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lbPointOfContactNameLabel))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(lbPointOfContactNameText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbPointOfContactEmailText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbPointOfContactPhoneText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))))
- .addContainerGap())
+ .addComponent(optionalLabel)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addComponent(optionalPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(optionalLabel)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(caseNumberLabel)
- .addComponent(caseNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(18, 18, 18)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(examinerLabel)
- .addComponent(examinerTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(lbOrganizationNameLabel)
- .addComponent(comboBoxOrgName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(bnNewOrganization)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(lbPointOfContactNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbPointOfContactNameText, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(lbPointOfContactEmailLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbPointOfContactEmailText, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(lbPointOfContactPhoneLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbPointOfContactPhoneText, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addContainerGap(40, Short.MAX_VALUE))
+ .addComponent(optionalPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())
);
}// //GEN-END:initComponents
-
- private void comboBoxOrgNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboBoxOrgNameActionPerformed
- JComboBox cb = (JComboBox) evt.getSource();
- String orgName = (String) cb.getSelectedItem();
- if (null == orgName) {
- return;
- }
-
- if ("".equals(orgName)) {
- clearOrganization();
- return;
- }
-
- for (EamOrganization org : orgs) {
- if (org.getName().equals(orgName)) {
- selectedOrg = org;
- lbPointOfContactNameText.setText(selectedOrg.getPocName());
- lbPointOfContactEmailText.setText(selectedOrg.getPocEmail());
- lbPointOfContactPhoneText.setText(selectedOrg.getPocPhone());
- return;
- }
- }
- }//GEN-LAST:event_comboBoxOrgNameActionPerformed
-
- private void bnNewOrganizationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnNewOrganizationActionPerformed
- ManageOrganizationsDialog dialog = new ManageOrganizationsDialog();
- // update the combobox options and org data fields
- if (dialog.isChanged()) {
- selectedOrg = dialog.getNewOrg();
- loadOrganizationData();
- validate();
- repaint();
- }
- }//GEN-LAST:event_bnNewOrganizationActionPerformed
- private void loadOrganizationData() {
-
- comboBoxOrgName.removeAllItems();
- try {
- orgs = dbManager.getOrganizations();
- comboBoxOrgName.addItem(""); // for when a case has a null Org
- orgs.forEach((org) -> {
- comboBoxOrgName.addItem(org.getName());
- });
- } catch (EamDbException ex) {
- selectedOrg = null;
- }
-
- if (null != selectedOrg) {
- comboBoxOrgName.setSelectedItem(selectedOrg.getName());
- lbPointOfContactNameText.setText(selectedOrg.getPocName());
- lbPointOfContactEmailText.setText(selectedOrg.getPocEmail());
- lbPointOfContactPhoneText.setText(selectedOrg.getPocPhone());
- } else {
- clearOrganization();
- }
- }
+
// Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JButton bnNewOrganization;
- private javax.swing.JLabel caseNumberLabel;
- private javax.swing.JTextField caseNumberTextField;
- private javax.swing.JComboBox comboBoxOrgName;
- private javax.swing.JLabel examinerLabel;
- private javax.swing.JTextField examinerTextField;
- private javax.swing.JLabel lbOrganizationNameLabel;
- private javax.swing.JLabel lbPointOfContactEmailLabel;
- private javax.swing.JLabel lbPointOfContactEmailText;
- private javax.swing.JLabel lbPointOfContactNameLabel;
- private javax.swing.JLabel lbPointOfContactNameText;
- private javax.swing.JLabel lbPointOfContactPhoneLabel;
- private javax.swing.JLabel lbPointOfContactPhoneText;
private javax.swing.JLabel optionalLabel;
+ private javax.swing.JPanel optionalPanel;
// End of variables declaration//GEN-END:variables
- private void clearOrganization() {
- comboBoxOrgName.setSelectedItem("");
- lbPointOfContactNameText.setText("");
- lbPointOfContactEmailText.setText("");
- lbPointOfContactPhoneText.setText("");
- }
-
String getCaseNumber() {
- return caseNumberTextField.getText();
+ return propertiesPanel.getCaseNumber();
}
- String getExaminer() {
- return examinerTextField.getText();
+ Examiner getExaminer() {
+ return propertiesPanel.getExaminer();
}
String getOrganization() {
- if (selectedOrg != null) {
- return selectedOrg.getName();
- }
- else {
- return "";
- }
+ return propertiesPanel.getOrganization();
+ }
+
+ void refreshCentralRepoFields() {
+ propertiesPanel.setUpCentralRepoFields();
}
}
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java
index 3679587491..f21b40b092 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java
@@ -37,6 +37,10 @@ import org.openide.util.actions.SystemAction;
import org.openide.windows.WindowManager;
import org.sleuthkit.autopsy.actions.IngestRunningCheck;
import org.sleuthkit.autopsy.casemodule.Case.CaseType;
+import org.sleuthkit.autopsy.centralrepository.datamodel.CorrelationCase;
+import org.sleuthkit.autopsy.centralrepository.datamodel.EamDb;
+import org.sleuthkit.autopsy.centralrepository.datamodel.EamDbException;
+import org.sleuthkit.autopsy.centralrepository.datamodel.EamOrganization;
import org.sleuthkit.autopsy.coreutils.FileUtil;
import org.sleuthkit.autopsy.coreutils.Logger;
@@ -75,11 +79,33 @@ final class NewCaseWizardAction extends CallableSystemAction {
@Override
protected Void doInBackground() throws Exception {
String caseNumber = (String) wizardDescriptor.getProperty("caseNumber"); //NON-NLS
- String examiner = (String) wizardDescriptor.getProperty("caseExaminer"); //NON-NLS
+ Examiner examiner = (Examiner) wizardDescriptor.getProperty("caseExaminer"); //NON-NLS
+ String organizationName = (String) wizardDescriptor.getProperty("caseOrganization"); //NON-NLS
final String caseName = (String) wizardDescriptor.getProperty("caseName"); //NON-NLS
String createdDirectory = (String) wizardDescriptor.getProperty("createdDirectory"); //NON-NLS
CaseType caseType = CaseType.values()[(int) wizardDescriptor.getProperty("caseType")]; //NON-NLS
Case.createAsCurrentCase(createdDirectory, caseName, caseNumber, examiner, caseType);
+ if (EamDb.isEnabled()) {
+ try {
+ EamDb dbManager = EamDb.getInstance();
+ if (dbManager != null) {
+ CorrelationCase cRCase = dbManager.getCaseByUUID(Case.getCurrentCase().getName());
+ if (cRCase == null) {
+ cRCase = dbManager.newCase(Case.getCurrentCase());
+ }
+ if (!organizationName.isEmpty()) {
+ for (EamOrganization org : dbManager.getOrganizations()) {
+ if (org.getName().equals(organizationName)) {
+ cRCase.setOrg(org);
+ dbManager.updateCase(cRCase);
+ }
+ }
+ }
+ }
+ } catch (EamDbException ex) {
+
+ }
+ }
return null;
}
@@ -118,6 +144,10 @@ final class NewCaseWizardAction extends CallableSystemAction {
}
}
+ private void updateCentralRepoCase() {
+
+ }
+
private void doFailedCaseCleanup(WizardDescriptor wizardDescriptor) {
String createdDirectory = (String) wizardDescriptor.getProperty("createdDirectory"); //NON-NLS
if (createdDirectory != null) {
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel2.java b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel2.java
index 6490c9e20e..13d2105271 100755
--- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel2.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel2.java
@@ -47,7 +47,7 @@ class NewCaseWizardPanel2 implements WizardDescriptor.ValidatingPanel
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/OptionalCasePropertiesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/OptionalCasePropertiesPanel.java
new file mode 100644
index 0000000000..5c026afc23
--- /dev/null
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/OptionalCasePropertiesPanel.java
@@ -0,0 +1,538 @@
+/*
+ * Autopsy Forensic Browser
+ *
+ * Copyright 2011-2017 Basis Technology Corp.
+ * Contact: carrier sleuthkit org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.sleuthkit.autopsy.casemodule;
+
+import java.awt.Cursor;
+import java.util.logging.Level;
+import javax.swing.JComboBox;
+import org.openide.util.Exceptions;
+import org.sleuthkit.autopsy.centralrepository.actions.EamCaseEditDetailsDialog;
+import org.sleuthkit.autopsy.centralrepository.datamodel.CorrelationCase;
+import org.sleuthkit.autopsy.centralrepository.datamodel.EamDb;
+import org.sleuthkit.autopsy.centralrepository.datamodel.EamDbException;
+import org.sleuthkit.autopsy.centralrepository.datamodel.EamOrganization;
+import org.sleuthkit.autopsy.centralrepository.optionspanel.ManageOrganizationsDialog;
+import org.sleuthkit.autopsy.coreutils.Logger;
+import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
+
+/**
+ *
+ * @author wschaefer
+ */
+class OptionalCasePropertiesPanel extends javax.swing.JPanel {
+
+ private final static Logger LOGGER = Logger.getLogger(EamCaseEditDetailsDialog.class.getName());
+ private static final long serialVersionUID = 1L;
+ private EamOrganization selectedOrg = null;
+ private java.util.List orgs = null;
+ private EamDb dbManager;
+
+ /**
+ * Creates new form OptionalCasePropertiesPanel
+ */
+ OptionalCasePropertiesPanel() {
+ initComponents();
+ caseDisplayNameLabel.setVisible(false);
+ caseDisplayNameTextField.setVisible(false);
+ }
+
+ OptionalCasePropertiesPanel(boolean editCurrentCase) {
+ initComponents();
+ if (editCurrentCase) {
+ caseDisplayNameTextField.setText(Case.getCurrentCase().getDisplayName());
+ caseNumberTextField.setText(Case.getCurrentCase().getNumber());
+ examinerTextField.setText(Case.getCurrentCase().getExaminer());
+ tfExaminerEmailText.setText(Case.getCurrentCase().getExaminerEmail());
+ tfExaminerPhoneText.setText(Case.getCurrentCase().getExaminerPhone());
+ taNotesText.setText(Case.getCurrentCase().getExaminerNotes());
+ try {
+ this.dbManager = EamDb.getInstance();
+ if (dbManager != null) {
+ selectedOrg = dbManager.getCaseByUUID(Case.getCurrentCase().getName()).getOrg();
+ }
+ } catch (EamDbException ex) {
+ dbManager = null;
+ }
+
+ }
+
+ }
+
+ void setUpCentralRepoFields() {
+ try {
+ this.dbManager = EamDb.getInstance();
+ } catch (EamDbException ex) {
+ dbManager = null;
+ }
+ boolean cREnabled = (dbManager != null);
+ comboBoxOrgName.setEnabled(cREnabled);
+ bnNewOrganization.setEnabled(cREnabled);
+ lbPointOfContactNameText.setEnabled(cREnabled);
+ lbPointOfContactEmailText.setEnabled(cREnabled);
+ lbPointOfContactPhoneText.setEnabled(cREnabled);
+ lbOrganizationNameLabel.setEnabled(cREnabled);
+ lbPointOfContactNameLabel.setEnabled(cREnabled);
+ lbPointOfContactEmailLabel.setEnabled(cREnabled);
+ lbPointOfContactPhoneLabel.setEnabled(cREnabled);
+ orgainizationPanel.setEnabled(cREnabled);
+
+ if (cREnabled) {
+ loadOrganizationData();
+ } else {
+ selectedOrg = null;
+ clearOrganization();
+ }
+ }
+
+ private void loadOrganizationData() {
+
+ comboBoxOrgName.removeAllItems();
+ try {
+ orgs = dbManager.getOrganizations();
+ comboBoxOrgName.addItem(""); // for when a case has a null Org
+ orgs.forEach((org) -> {
+ comboBoxOrgName.addItem(org.getName());
+ });
+ } catch (EamDbException ex) {
+ selectedOrg = null;
+ }
+
+ if (null != selectedOrg) {
+ comboBoxOrgName.setSelectedItem(selectedOrg.getName());
+ lbPointOfContactNameText.setText(selectedOrg.getPocName());
+ lbPointOfContactEmailText.setText(selectedOrg.getPocEmail());
+ lbPointOfContactPhoneText.setText(selectedOrg.getPocPhone());
+ } else {
+ clearOrganization();
+ }
+ }
+
+ private void clearOrganization() {
+ comboBoxOrgName.setSelectedItem("");
+ lbPointOfContactNameText.setText("");
+ lbPointOfContactEmailText.setText("");
+ lbPointOfContactPhoneText.setText("");
+ }
+
+ String getCaseNumber() {
+ return caseNumberTextField.getText();
+ }
+
+ Examiner getExaminer() {
+ return new Examiner(examinerTextField.getText(), tfExaminerPhoneText.getText(), tfExaminerEmailText.getText(), taNotesText.getText());
+ }
+
+ String getOrganization() {
+ if (selectedOrg != null) {
+ return selectedOrg.getName();
+ } else {
+ return "";
+ }
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ casePanel = new javax.swing.JPanel();
+ caseNumberLabel = new javax.swing.JLabel();
+ caseNumberTextField = new javax.swing.JTextField();
+ caseDisplayNameLabel = new javax.swing.JLabel();
+ caseDisplayNameTextField = new javax.swing.JTextField();
+ examinerPanel = new javax.swing.JPanel();
+ tfExaminerPhoneText = new javax.swing.JTextField();
+ lbExaminerPhoneLabel = new javax.swing.JLabel();
+ examinerNotesScrollPane = new javax.swing.JScrollPane();
+ taNotesText = new javax.swing.JTextArea();
+ tfExaminerEmailText = new javax.swing.JTextField();
+ examinerTextField = new javax.swing.JTextField();
+ lbExaminerEmailLabel = new javax.swing.JLabel();
+ examinerLabel = new javax.swing.JLabel();
+ lbNotesLabel = new javax.swing.JLabel();
+ orgainizationPanel = new javax.swing.JPanel();
+ lbPointOfContactPhoneLabel = new javax.swing.JLabel();
+ comboBoxOrgName = new javax.swing.JComboBox<>();
+ lbPointOfContactNameLabel = new javax.swing.JLabel();
+ bnNewOrganization = new javax.swing.JButton();
+ lbPointOfContactEmailText = new javax.swing.JLabel();
+ lbPointOfContactNameText = new javax.swing.JLabel();
+ lbOrganizationNameLabel = new javax.swing.JLabel();
+ lbPointOfContactEmailLabel = new javax.swing.JLabel();
+ lbPointOfContactPhoneText = new javax.swing.JLabel();
+
+ casePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.casePanel.border.title"))); // NOI18N
+
+ caseNumberLabel.setFont(caseNumberLabel.getFont().deriveFont(caseNumberLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
+ org.openide.awt.Mnemonics.setLocalizedText(caseNumberLabel, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.caseNumberLabel.text")); // NOI18N
+
+ caseNumberTextField.setFont(caseNumberTextField.getFont().deriveFont(caseNumberTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
+ caseNumberTextField.setText(org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.caseNumberTextField.text")); // NOI18N
+
+ caseDisplayNameLabel.setFont(caseDisplayNameLabel.getFont().deriveFont(caseDisplayNameLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
+ org.openide.awt.Mnemonics.setLocalizedText(caseDisplayNameLabel, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.caseDisplayNameLabel.text")); // NOI18N
+ caseDisplayNameLabel.setMaximumSize(new java.awt.Dimension(41, 14));
+ caseDisplayNameLabel.setMinimumSize(new java.awt.Dimension(41, 14));
+ caseDisplayNameLabel.setPreferredSize(new java.awt.Dimension(41, 14));
+
+ caseDisplayNameTextField.setFont(caseDisplayNameTextField.getFont().deriveFont(caseDisplayNameTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
+
+ javax.swing.GroupLayout casePanelLayout = new javax.swing.GroupLayout(casePanel);
+ casePanel.setLayout(casePanelLayout);
+ casePanelLayout.setHorizontalGroup(
+ casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(casePanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(caseNumberLabel)
+ .addComponent(caseDisplayNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(caseDisplayNameTextField)
+ .addComponent(caseNumberTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 458, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+ casePanelLayout.setVerticalGroup(
+ casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(casePanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(caseDisplayNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(caseDisplayNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(caseNumberLabel)
+ .addComponent(caseNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addContainerGap())
+ );
+
+ examinerPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.examinerPanel.border.title"))); // NOI18N
+
+ org.openide.awt.Mnemonics.setLocalizedText(lbExaminerPhoneLabel, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.lbExaminerPhoneLabel.text")); // NOI18N
+ lbExaminerPhoneLabel.setMaximumSize(new java.awt.Dimension(41, 14));
+ lbExaminerPhoneLabel.setMinimumSize(new java.awt.Dimension(41, 14));
+ lbExaminerPhoneLabel.setPreferredSize(new java.awt.Dimension(41, 14));
+
+ examinerNotesScrollPane.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+
+ taNotesText.setColumns(20);
+ taNotesText.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
+ taNotesText.setLineWrap(true);
+ taNotesText.setRows(2);
+ taNotesText.setWrapStyleWord(true);
+ taNotesText.setBorder(null);
+ examinerNotesScrollPane.setViewportView(taNotesText);
+
+ examinerTextField.setFont(examinerTextField.getFont().deriveFont(examinerTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
+ examinerTextField.setText(org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.examinerTextField.text")); // NOI18N
+
+ org.openide.awt.Mnemonics.setLocalizedText(lbExaminerEmailLabel, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.lbExaminerEmailLabel.text")); // NOI18N
+ lbExaminerEmailLabel.setMaximumSize(new java.awt.Dimension(41, 14));
+ lbExaminerEmailLabel.setMinimumSize(new java.awt.Dimension(41, 14));
+ lbExaminerEmailLabel.setPreferredSize(new java.awt.Dimension(41, 14));
+
+ examinerLabel.setFont(examinerLabel.getFont().deriveFont(examinerLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
+ org.openide.awt.Mnemonics.setLocalizedText(examinerLabel, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.examinerLabel.text")); // NOI18N
+ examinerLabel.setMaximumSize(new java.awt.Dimension(41, 14));
+ examinerLabel.setMinimumSize(new java.awt.Dimension(41, 14));
+ examinerLabel.setPreferredSize(new java.awt.Dimension(41, 14));
+
+ org.openide.awt.Mnemonics.setLocalizedText(lbNotesLabel, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.lbNotesLabel.text")); // NOI18N
+ lbNotesLabel.setMaximumSize(new java.awt.Dimension(41, 14));
+ lbNotesLabel.setMinimumSize(new java.awt.Dimension(41, 14));
+ lbNotesLabel.setPreferredSize(new java.awt.Dimension(41, 14));
+
+ javax.swing.GroupLayout examinerPanelLayout = new javax.swing.GroupLayout(examinerPanel);
+ examinerPanel.setLayout(examinerPanelLayout);
+ examinerPanelLayout.setHorizontalGroup(
+ examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(examinerPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(examinerPanelLayout.createSequentialGroup()
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lbNotesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lbExaminerPhoneLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(10, 10, 10)
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(tfExaminerPhoneText)
+ .addComponent(examinerNotesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 458, Short.MAX_VALUE)))
+ .addGroup(examinerPanelLayout.createSequentialGroup()
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+ .addComponent(lbExaminerEmailLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(examinerLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(examinerTextField)
+ .addComponent(tfExaminerEmailText))))
+ .addContainerGap())
+ );
+ examinerPanelLayout.setVerticalGroup(
+ examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(examinerPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(examinerLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(examinerTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(tfExaminerEmailText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lbExaminerEmailLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(tfExaminerPhoneText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lbExaminerPhoneLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lbNotesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(examinerNotesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addContainerGap())
+ );
+
+ orgainizationPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.orgainizationPanel.border.title"))); // NOI18N
+
+ org.openide.awt.Mnemonics.setLocalizedText(lbPointOfContactPhoneLabel, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.lbPointOfContactPhoneLabel.text")); // NOI18N
+
+ comboBoxOrgName.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ comboBoxOrgNameActionPerformed(evt);
+ }
+ });
+
+ org.openide.awt.Mnemonics.setLocalizedText(lbPointOfContactNameLabel, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.lbPointOfContactNameLabel.text")); // NOI18N
+
+ org.openide.awt.Mnemonics.setLocalizedText(bnNewOrganization, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.bnNewOrganization.text")); // NOI18N
+ bnNewOrganization.setMargin(new java.awt.Insets(2, 6, 2, 6));
+ bnNewOrganization.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ bnNewOrganizationActionPerformed(evt);
+ }
+ });
+
+ org.openide.awt.Mnemonics.setLocalizedText(lbOrganizationNameLabel, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.lbOrganizationNameLabel.text")); // NOI18N
+ lbOrganizationNameLabel.setMaximumSize(new java.awt.Dimension(41, 14));
+ lbOrganizationNameLabel.setMinimumSize(new java.awt.Dimension(41, 14));
+ lbOrganizationNameLabel.setPreferredSize(new java.awt.Dimension(41, 14));
+
+ org.openide.awt.Mnemonics.setLocalizedText(lbPointOfContactEmailLabel, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.lbPointOfContactEmailLabel.text")); // NOI18N
+
+ javax.swing.GroupLayout orgainizationPanelLayout = new javax.swing.GroupLayout(orgainizationPanel);
+ orgainizationPanel.setLayout(orgainizationPanelLayout);
+ orgainizationPanelLayout.setHorizontalGroup(
+ orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(orgainizationPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(lbOrganizationNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(orgainizationPanelLayout.createSequentialGroup()
+ .addGroup(orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lbPointOfContactPhoneLabel)
+ .addComponent(lbPointOfContactEmailLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lbPointOfContactNameLabel))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lbPointOfContactNameText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbPointOfContactEmailText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbPointOfContactPhoneText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+ .addGroup(orgainizationPanelLayout.createSequentialGroup()
+ .addComponent(comboBoxOrgName, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(bnNewOrganization)))
+ .addContainerGap())
+ );
+ orgainizationPanelLayout.setVerticalGroup(
+ orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(orgainizationPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(lbOrganizationNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(comboBoxOrgName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(bnNewOrganization))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(lbPointOfContactNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbPointOfContactNameText, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(lbPointOfContactEmailLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbPointOfContactEmailText, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(lbPointOfContactPhoneLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lbPointOfContactPhoneText, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addContainerGap())
+ );
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGap(0, 561, Short.MAX_VALUE)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(orgainizationPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(examinerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(casePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap()))
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGap(0, 413, Short.MAX_VALUE)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(casePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(examinerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(orgainizationPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addContainerGap()))
+ );
+ }// //GEN-END:initComponents
+
+ private void comboBoxOrgNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboBoxOrgNameActionPerformed
+ @SuppressWarnings("unchecked")
+ JComboBox cb = (JComboBox) evt.getSource();
+ String orgName = (String) cb.getSelectedItem();
+ if (null == orgName) {
+ return;
+ }
+
+ if ("".equals(orgName)) {
+ clearOrganization();
+ return;
+ }
+
+ for (EamOrganization org : orgs) {
+ if (org.getName().equals(orgName)) {
+ selectedOrg = org;
+ lbPointOfContactNameText.setText(selectedOrg.getPocName());
+ lbPointOfContactEmailText.setText(selectedOrg.getPocEmail());
+ lbPointOfContactPhoneText.setText(selectedOrg.getPocPhone());
+ return;
+ }
+ }
+ }//GEN-LAST:event_comboBoxOrgNameActionPerformed
+
+ private void bnNewOrganizationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnNewOrganizationActionPerformed
+ ManageOrganizationsDialog dialog = new ManageOrganizationsDialog();
+ // update the combobox options and org data fields
+ if (dialog.isChanged()) {
+ selectedOrg = dialog.getNewOrg();
+ loadOrganizationData();
+ validate();
+ repaint();
+ }
+ }//GEN-LAST:event_bnNewOrganizationActionPerformed
+
+ private void updateCaseNumber() {
+ try {
+ Case.getCurrentCase().updateCaseNumber(caseNumberTextField.getText());
+ } catch (CaseActionException ex) {
+ Exceptions.printStackTrace(ex);
+ }
+ }
+
+ void saveUpdatedCaseDetails() {
+ updateCaseName();
+ updateCaseNumber();
+ updateExaminer();
+ updateCorrelationCase();
+ }
+
+ private void updateCaseName() {
+ if (caseDisplayNameTextField.isVisible()) {
+ try {
+ Case.getCurrentCase().updateDisplayName(caseDisplayNameTextField.getText());
+ } catch (CaseActionException ex) {
+ Exceptions.printStackTrace(ex);
+ }
+ }
+ }
+
+ private void updateExaminer() {
+ try {
+ Case.getCurrentCase().updateExaminer(new Examiner(examinerTextField.getText(), tfExaminerPhoneText.getText(), tfExaminerEmailText.getText(), taNotesText.getText()));
+ } catch (CaseActionException ex) {
+ MessageNotifyUtil.Message.error(ex.getLocalizedMessage());
+ LOGGER.log(Level.SEVERE, "Failed to update case display name", ex); //NON-NLS
+ }
+ }
+
+ /**
+ * Save changed value from text fields and text areas into the EamCase
+ * object.
+ */
+ private void updateCorrelationCase() {
+ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ if (EamDb.isEnabled()) {
+ try {
+ CorrelationCase correlationCase = dbManager.getCaseByUUID(Case.getCurrentCase().getName());
+ if (caseDisplayNameTextField.isVisible()) {
+ correlationCase.setDisplayName(caseDisplayNameTextField.getText());
+ }
+ correlationCase.setOrg(selectedOrg);
+ correlationCase.setCaseNumber(caseNumberTextField.getText());
+ correlationCase.setExaminerName(examinerTextField.getText());
+ correlationCase.setExaminerEmail(tfExaminerEmailText.getText());
+ correlationCase.setExaminerPhone(tfExaminerPhoneText.getText());
+ correlationCase.setNotes(taNotesText.getText());
+ dbManager.updateCase(correlationCase);
+ } catch (EamDbException ex) {
+ LOGGER.log(Level.SEVERE, "Error connecting to central repository database", ex); // NON-NLS
+ } finally {
+ setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ }
+ }
+ }
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton bnNewOrganization;
+ private javax.swing.JLabel caseDisplayNameLabel;
+ private javax.swing.JTextField caseDisplayNameTextField;
+ private javax.swing.JLabel caseNumberLabel;
+ private javax.swing.JTextField caseNumberTextField;
+ private javax.swing.JPanel casePanel;
+ private javax.swing.JComboBox comboBoxOrgName;
+ private javax.swing.JLabel examinerLabel;
+ private javax.swing.JScrollPane examinerNotesScrollPane;
+ private javax.swing.JPanel examinerPanel;
+ private javax.swing.JTextField examinerTextField;
+ private javax.swing.JLabel lbExaminerEmailLabel;
+ private javax.swing.JLabel lbExaminerPhoneLabel;
+ private javax.swing.JLabel lbNotesLabel;
+ private javax.swing.JLabel lbOrganizationNameLabel;
+ private javax.swing.JLabel lbPointOfContactEmailLabel;
+ private javax.swing.JLabel lbPointOfContactEmailText;
+ private javax.swing.JLabel lbPointOfContactNameLabel;
+ private javax.swing.JLabel lbPointOfContactNameText;
+ private javax.swing.JLabel lbPointOfContactPhoneLabel;
+ private javax.swing.JLabel lbPointOfContactPhoneText;
+ private javax.swing.JPanel orgainizationPanel;
+ private javax.swing.JTextArea taNotesText;
+ private javax.swing.JTextField tfExaminerEmailText;
+ private javax.swing.JTextField tfExaminerPhoneText;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/actions/Bundle.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/actions/Bundle.properties
index 18fad5033f..51bcbbd01c 100755
--- a/Core/src/org/sleuthkit/autopsy/centralrepository/actions/Bundle.properties
+++ b/Core/src/org/sleuthkit/autopsy/centralrepository/actions/Bundle.properties
@@ -19,7 +19,7 @@
EamCaseEditDetailsDialog.lbExaminerEmailLabel.text=Email:
EamCaseEditDetailsDialog.lbExaminerNameLabel.text=Name:
EamCaseEditDetailsDialog.bnOk.text=OK
-EamCaseEditDetailsDialog.bnNewOrganization.text=New Organization
+EamCaseEditDetailsDialog.bnNewOrganization.text=Manage Organizations
EamCaseEditDetailsDialog.lbPointOfContactPhoneLabel.text=Phone:
EamCaseEditDetailsDialog.lbPointOfContactEmailLabel.text=Email:
EamCaseEditDetailsDialog.lbPointOfContactNameLabel.text=Name:
diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java
index ed3388ce0a..98f80f96aa 100644
--- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java
+++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/AbstractSqlEamDb.java
@@ -274,9 +274,9 @@ public abstract class AbstractSqlEamDb implements EamDb {
autopsyCase.getCreatedDate(),
autopsyCase.getNumber(),
autopsyCase.getExaminer(),
- null,
- null,
- null);
+ autopsyCase.getExaminerEmail(),
+ autopsyCase.getExaminerPhone(),
+ autopsyCase.getExaminerNotes());
newCase(curCeCase);
return curCeCase;
}
diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CaseEventListener.java b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CaseEventListener.java
index 68fe306585..9c4c971f51 100644
--- a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CaseEventListener.java
+++ b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/CaseEventListener.java
@@ -292,9 +292,9 @@ public class CaseEventListener implements PropertyChangeListener {
curCase.getCreatedDate(),
curCase.getNumber(),
curCase.getExaminer(),
- null,
- null,
- null);
+ curCase.getExaminerEmail(),
+ curCase.getExaminerPhone(),
+ curCase.getExaminerNotes());
if (!EamDb.isEnabled()) {
break;
@@ -313,77 +313,77 @@ public class CaseEventListener implements PropertyChangeListener {
}
}
} // CURRENT_CASE
- break;
-
- case NAME: {
- // The display name of the case has been changed
-
- if (!EamDb.isEnabled()) {
- break;
- }
-
- if (evt.getNewValue() instanceof String) {
- String newName = (String) evt.getNewValue();
- try {
- // See if the case is in the database. If it is, update the display name.
- CorrelationCase existingCase = dbManager.getCaseByUUID(Case.getCurrentCase().getName());
-
- if (null != existingCase) {
- existingCase.setDisplayName(newName);
- dbManager.updateCase(existingCase);
- }
- } catch (EamDbException ex) {
- LOGGER.log(Level.SEVERE, "Error connecting to Central Repository database.", ex); //NON-NLS
- }
- }
- } // NAME
- break;
- case NUMBER: {
- // The display name of the case has been changed
-
- if (!EamDb.isEnabled()) {
- break;
- }
-
- if (evt.getNewValue() instanceof String) {
- String newNumber = (String) evt.getNewValue();
- try {
- // See if the case is in the database. If it is, update the display name.
- CorrelationCase existingCase = dbManager.getCaseByUUID(Case.getCurrentCase().getName());
-
- if (null != existingCase) {
- existingCase.setCaseNumber(newNumber);
- dbManager.updateCase(existingCase);
- }
- } catch (EamDbException ex) {
- LOGGER.log(Level.SEVERE, "Error connecting to Central Repository database.", ex); //NON-NLS
- }
- }
- } // NUMBER
- break;
- case EXAMINER: {
- // The display name of the case has been changed
-
- if (!EamDb.isEnabled()) {
- break;
- }
-
- if (evt.getNewValue() instanceof String) {
- String newExaminerName = (String) evt.getNewValue();
- try {
- // See if the case is in the database. If it is, update the display name.
- CorrelationCase existingCase = dbManager.getCaseByUUID(Case.getCurrentCase().getName());
-
- if (null != existingCase) {
- existingCase.setExaminerName(newExaminerName);
- dbManager.updateCase(existingCase);
- }
- } catch (EamDbException ex) {
- LOGGER.log(Level.SEVERE, "Error connecting to Central Repository database.", ex); //NON-NLS
- }
- }
- } // EXAMINER
- break;
+// break;
+//
+// case NAME: {
+// // The display name of the case has been changed
+//
+// if (!EamDb.isEnabled()) {
+// break;
+// }
+//
+// if (evt.getNewValue() instanceof String) {
+// String newName = (String) evt.getNewValue();
+// try {
+// // See if the case is in the database. If it is, update the display name.
+// CorrelationCase existingCase = dbManager.getCaseByUUID(Case.getCurrentCase().getName());
+//
+// if (null != existingCase) {
+// existingCase.setDisplayName(newName);
+// dbManager.updateCase(existingCase);
+// }
+// } catch (EamDbException ex) {
+// LOGGER.log(Level.SEVERE, "Error connecting to Central Repository database.", ex); //NON-NLS
+// }
+// }
+// } // NAME
+// break;
+// case NUMBER: {
+// // The display name of the case has been changed
+//
+// if (!EamDb.isEnabled()) {
+// break;
+// }
+//
+// if (evt.getNewValue() instanceof String) {
+// String newNumber = (String) evt.getNewValue();
+// try {
+// // See if the case is in the database. If it is, update the display name.
+// CorrelationCase existingCase = dbManager.getCaseByUUID(Case.getCurrentCase().getName());
+//
+// if (null != existingCase) {
+// existingCase.setCaseNumber(newNumber);
+// dbManager.updateCase(existingCase);
+// }
+// } catch (EamDbException ex) {
+// LOGGER.log(Level.SEVERE, "Error connecting to Central Repository database.", ex); //NON-NLS
+// }
+// }
+// } // NUMBER
+// break;
+// case EXAMINER: {
+// // The display name of the case has been changed
+//
+// if (!EamDb.isEnabled()) {
+// break;
+// }
+//
+// if (evt.getNewValue() instanceof String) {
+// String newExaminerName = (String) evt.getNewValue();
+// try {
+// // See if the case is in the database. If it is, update the display name.
+// CorrelationCase existingCase = dbManager.getCaseByUUID(Case.getCurrentCase().getName());
+//
+// if (null != existingCase) {
+// existingCase.setExaminerName(newExaminerName);
+// dbManager.updateCase(existingCase);
+// }
+// } catch (EamDbException ex) {
+// LOGGER.log(Level.SEVERE, "Error connecting to Central Repository database.", ex); //NON-NLS
+// }
+// }
+// } // EXAMINER
+// break;
}
}
}
diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/IngestModule.java b/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/IngestModule.java
index fc8d100c37..5c61ef74d8 100644
--- a/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/IngestModule.java
+++ b/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/IngestModule.java
@@ -241,9 +241,9 @@ class IngestModule implements FileIngestModule {
curCase.getCreatedDate(),
curCase.getNumber(),
curCase.getExaminer(),
- null,
- null,
- null);
+ curCase.getExaminerEmail(),
+ curCase.getExaminerPhone(),
+ curCase.getExaminerNotes());
try {
dbManager.newCase(curCeCase);
eamCase = dbManager.getCaseByUUID(curCase.getName());
diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle.properties
index 82da099468..2477bcd683 100755
--- a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle.properties
+++ b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle.properties
@@ -76,18 +76,7 @@ ImportHashDatabaseDialog.lbFilePath.text=File Path:
ImportHashDatabaseDialog.tfFilePath.text=
EamDbSettingsDialog.lbDatabaseDesc.text=Database File:
EamDbSettingsDialog.lbFullDbPath.text=jLabel2
-CentralRepoCaseOptionsPanel.lbOrganizationNameLabel.text=Organization Name:
-CentralRepoCaseOptionsPanel.pnOrganization.border.title=Organization
-CentralRepoCaseOptionsPanel.lbNotesLabel.text=Notes:
-CentralRepoCaseOptionsPanel.lbExaminerPhoneLabel.text=Phone:
-CentralRepoCaseOptionsPanel.lbExaminerEmailLabel.text=Email:
-CentralRepoCaseOptionsPanel.lbExaminerNameLabel.text=Name:
-CentralRepoCaseOptionsPanel.pnExaminer.border.title=Examiner Details
-CentralRepoCaseOptionsPanel.bnNewOrganization.text=New Organization
-CentralRepoCaseOptionsPanel.lbPointOfContactPhoneLabel.text=Phone:
-CentralRepoCaseOptionsPanel.lbPointOfContactEmailLabel.text=Email:
-CentralRepoCaseOptionsPanel.lbPointOfContactNameLabel.text=Point of Contact:
-CaseOrganizationPanel.bnNewOrganization.text=New Organization
+CaseOrganizationPanel.bnNewOrganization.text=Manage Organizations
CaseOrganizationPanel.lbPointOfContactPhoneLabel.text=Phone:
CaseOrganizationPanel.lbPointOfContactEmailLabel.text=Email:
CaseOrganizationPanel.lbPointOfContactNameLabel.text=Name:
@@ -109,3 +98,11 @@ ManageOrganizationsDialog.jTextArea1.text=Organizations are used to provide addi
ManageOrganizationsDialog.jButton4.text=Edit
ManageOrganizationsDialog.jLabel3.text=Organization Details
ManageOrganizationsDialog.pocNameTextField.text=
+GlobalSettingsPanel.organizationPanel.border.title=Organizations
+GlobalSettingsPanel.manageOrganizationButton.text=Manage Organizations
+GlobalSettingsPanel.organizationTextArea.text=Organization information can be tracked in the central repository.
+ExaminerDetailsPanel.lbNotesLabel.text_1=Notes:
+ExaminerDetailsPanel.lbExaminerPhoneLabel.text_1=Phone:
+ExaminerDetailsPanel.lbExaminerEmailLabel.text_1=Email:
+ExaminerDetailsPanel.lbExaminerNameLabel.text_1=Name:
+ExaminerDetailsPanel.pnExaminer.border.title=Examiner Details
diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/CentralRepoCaseOptionsPanel.form b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/CentralRepoCaseOptionsPanel.form
deleted file mode 100644
index 7854e6d7f7..0000000000
--- a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/CentralRepoCaseOptionsPanel.form
+++ /dev/null
@@ -1,284 +0,0 @@
-
-
-
diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/CentralRepoCaseOptionsPanel.java b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/CentralRepoCaseOptionsPanel.java
deleted file mode 100644
index 0bbf91326a..0000000000
--- a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/CentralRepoCaseOptionsPanel.java
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package org.sleuthkit.autopsy.centralrepository.optionspanel;
-
-import java.awt.Cursor;
-import java.awt.Dialog;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.logging.Level;
-import javax.swing.JComboBox;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
-import org.sleuthkit.autopsy.casemodule.Case;
-import org.sleuthkit.autopsy.centralrepository.actions.EamCaseEditDetailsDialog;
-import org.sleuthkit.autopsy.centralrepository.datamodel.CorrelationCase;
-import org.sleuthkit.autopsy.centralrepository.datamodel.EamDb;
-import org.sleuthkit.autopsy.centralrepository.datamodel.EamDbException;
-import org.sleuthkit.autopsy.centralrepository.datamodel.EamOrganization;
-import org.sleuthkit.autopsy.coreutils.Logger;
-
-/**
- *
- * @author wschaefer
- */
-public class CentralRepoCaseOptionsPanel extends javax.swing.JPanel {
-
- private final static Logger LOGGER = Logger.getLogger(EamCaseEditDetailsDialog.class.getName());
- private CorrelationCase eamCase;
- private EamDb dbManager;
- private Boolean contentChanged = false;
- private final Collection textBoxes = new ArrayList<>();
- private final Collection textAreas = new ArrayList<>();
- private final TextBoxChangedListener textBoxChangedListener = new TextBoxChangedListener();
- private EamOrganization selectedOrg = null;
- private List orgs = null;
- private boolean comboboxOrganizationActionListenerActive;
-
- /**
- * Creates new form CentralRepoCaseOptionsPanel
- */
- public CentralRepoCaseOptionsPanel() {
- try {
- this.dbManager = EamDb.getInstance();
- if (dbManager != null ) {
- this.eamCase = this.dbManager.getCaseByUUID(Case.getCurrentCase().getName());
- if (this.eamCase == null) {
- this.eamCase = dbManager.newCase(Case.getCurrentCase());
- }
- initComponents();
- loadData();
- customizeComponents();
- }
- } catch (EamDbException ex) {
- LOGGER.log(Level.SEVERE, "Error getting current case.", ex);
- }
- }
-
- private void customizeComponents() {
- setTextBoxListeners();
- setTextAreaListeners();
- }
-
- private void setTextBoxListeners() {
- // Register for notifications when the text boxes get updated.
- textBoxes.add(tfExaminerNameText);
- textBoxes.add(tfExaminerEmailText);
- textBoxes.add(tfExaminerPhoneText);
- addTextFieldDocumentListeners(textBoxes, textBoxChangedListener);
- }
-
- private void setTextAreaListeners() {
- // Register for notifications when the text areas get updated.
- textAreas.add(taNotesText);
- addTextAreaDocumentListeners(textAreas, textBoxChangedListener);
- }
-
- /**
- * Adds a change listener to a collection of text fields.
- *
- * @param textFields The text fields.
- * @param listener The change listener.
- */
- private static void addTextFieldDocumentListeners(Collection textFields, TextBoxChangedListener listener) {
- textFields.forEach((textField) -> {
- textField.getDocument().addDocumentListener(listener);
- });
- }
-
- /**
- * Adds a change listener to a collection of text areas.
- *
- * @param textAreas The text areas.
- * @param listener The change listener.
- */
- private static void addTextAreaDocumentListeners(Collection textAreas, TextBoxChangedListener listener) {
- textAreas.forEach((textArea) -> {
- textArea.getDocument().addDocumentListener(listener);
- });
- }
-
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- @SuppressWarnings("unchecked")
- // //GEN-BEGIN:initComponents
- private void initComponents() {
-
- pnOrganization = new javax.swing.JPanel();
- lbOrganizationNameLabel = new javax.swing.JLabel();
- comboBoxOrgName = new javax.swing.JComboBox<>();
- lbPointOfContactNameLabel = new javax.swing.JLabel();
- lbPointOfContactEmailLabel = new javax.swing.JLabel();
- lbPointOfContactPhoneLabel = new javax.swing.JLabel();
- lbPointOfContactNameText = new javax.swing.JLabel();
- lbPointOfContactEmailText = new javax.swing.JLabel();
- lbPointOfContactPhoneText = new javax.swing.JLabel();
- bnNewOrganization = new javax.swing.JButton();
- pnExaminer = new javax.swing.JPanel();
- lbExaminerNameLabel = new javax.swing.JLabel();
- tfExaminerNameText = new javax.swing.JTextField();
- lbExaminerEmailLabel = new javax.swing.JLabel();
- tfExaminerEmailText = new javax.swing.JTextField();
- lbExaminerPhoneLabel = new javax.swing.JLabel();
- tfExaminerPhoneText = new javax.swing.JTextField();
- lbNotesLabel = new javax.swing.JLabel();
- jScrollPane2 = new javax.swing.JScrollPane();
- taNotesText = new javax.swing.JTextArea();
-
- pnOrganization.setBorder(javax.swing.BorderFactory.createTitledBorder(null, org.openide.util.NbBundle.getMessage(CentralRepoCaseOptionsPanel.class, "CentralRepoCaseOptionsPanel.pnOrganization.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 12))); // NOI18N
-
- org.openide.awt.Mnemonics.setLocalizedText(lbOrganizationNameLabel, org.openide.util.NbBundle.getMessage(CentralRepoCaseOptionsPanel.class, "CentralRepoCaseOptionsPanel.lbOrganizationNameLabel.text")); // NOI18N
-
- comboBoxOrgName.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- comboBoxOrgNameActionPerformed(evt);
- }
- });
-
- org.openide.awt.Mnemonics.setLocalizedText(lbPointOfContactNameLabel, org.openide.util.NbBundle.getMessage(CentralRepoCaseOptionsPanel.class, "CentralRepoCaseOptionsPanel.lbPointOfContactNameLabel.text")); // NOI18N
-
- org.openide.awt.Mnemonics.setLocalizedText(lbPointOfContactEmailLabel, org.openide.util.NbBundle.getMessage(CentralRepoCaseOptionsPanel.class, "CentralRepoCaseOptionsPanel.lbPointOfContactEmailLabel.text")); // NOI18N
-
- org.openide.awt.Mnemonics.setLocalizedText(lbPointOfContactPhoneLabel, org.openide.util.NbBundle.getMessage(CentralRepoCaseOptionsPanel.class, "CentralRepoCaseOptionsPanel.lbPointOfContactPhoneLabel.text")); // NOI18N
-
- org.openide.awt.Mnemonics.setLocalizedText(bnNewOrganization, org.openide.util.NbBundle.getMessage(CentralRepoCaseOptionsPanel.class, "CentralRepoCaseOptionsPanel.bnNewOrganization.text")); // NOI18N
- bnNewOrganization.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- bnNewOrganizationActionPerformed(evt);
- }
- });
-
- javax.swing.GroupLayout pnOrganizationLayout = new javax.swing.GroupLayout(pnOrganization);
- pnOrganization.setLayout(pnOrganizationLayout);
- pnOrganizationLayout.setHorizontalGroup(
- pnOrganizationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(pnOrganizationLayout.createSequentialGroup()
- .addGap(10, 10, 10)
- .addGroup(pnOrganizationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(lbOrganizationNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbPointOfContactEmailLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lbPointOfContactPhoneLabel)
- .addComponent(lbPointOfContactNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(pnOrganizationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(comboBoxOrgName, 0, 269, Short.MAX_VALUE)
- .addComponent(lbPointOfContactEmailText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbPointOfContactPhoneText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(bnNewOrganization, javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(lbPointOfContactNameText, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addContainerGap())
- );
- pnOrganizationLayout.setVerticalGroup(
- pnOrganizationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(pnOrganizationLayout.createSequentialGroup()
- .addGap(0, 0, 0)
- .addGroup(pnOrganizationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(lbOrganizationNameLabel)
- .addComponent(comboBoxOrgName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(2, 2, 2)
- .addComponent(bnNewOrganization)
- .addGap(1, 1, 1)
- .addGroup(pnOrganizationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(lbPointOfContactNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbPointOfContactNameText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(pnOrganizationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(lbPointOfContactEmailLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbPointOfContactEmailText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(pnOrganizationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(lbPointOfContactPhoneLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(lbPointOfContactPhoneText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addGap(0, 0, 0))
- );
-
- pnExaminer.setBorder(javax.swing.BorderFactory.createTitledBorder(null, org.openide.util.NbBundle.getMessage(CentralRepoCaseOptionsPanel.class, "CentralRepoCaseOptionsPanel.pnExaminer.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 12))); // NOI18N
-
- org.openide.awt.Mnemonics.setLocalizedText(lbExaminerNameLabel, org.openide.util.NbBundle.getMessage(CentralRepoCaseOptionsPanel.class, "CentralRepoCaseOptionsPanel.lbExaminerNameLabel.text")); // NOI18N
-
- org.openide.awt.Mnemonics.setLocalizedText(lbExaminerEmailLabel, org.openide.util.NbBundle.getMessage(CentralRepoCaseOptionsPanel.class, "CentralRepoCaseOptionsPanel.lbExaminerEmailLabel.text")); // NOI18N
-
- org.openide.awt.Mnemonics.setLocalizedText(lbExaminerPhoneLabel, org.openide.util.NbBundle.getMessage(CentralRepoCaseOptionsPanel.class, "CentralRepoCaseOptionsPanel.lbExaminerPhoneLabel.text")); // NOI18N
-
- tfExaminerPhoneText.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- tfExaminerPhoneTextActionPerformed(evt);
- }
- });
-
- org.openide.awt.Mnemonics.setLocalizedText(lbNotesLabel, org.openide.util.NbBundle.getMessage(CentralRepoCaseOptionsPanel.class, "CentralRepoCaseOptionsPanel.lbNotesLabel.text")); // NOI18N
-
- taNotesText.setColumns(20);
- taNotesText.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
- taNotesText.setLineWrap(true);
- taNotesText.setRows(2);
- taNotesText.setWrapStyleWord(true);
- jScrollPane2.setViewportView(taNotesText);
-
- javax.swing.GroupLayout pnExaminerLayout = new javax.swing.GroupLayout(pnExaminer);
- pnExaminer.setLayout(pnExaminerLayout);
- pnExaminerLayout.setHorizontalGroup(
- pnExaminerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(pnExaminerLayout.createSequentialGroup()
- .addGap(10, 10, 10)
- .addGroup(pnExaminerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(lbExaminerEmailLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lbExaminerNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lbExaminerPhoneLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lbNotesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(18, 18, 18)
- .addGroup(pnExaminerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(tfExaminerEmailText)
- .addComponent(tfExaminerPhoneText)
- .addComponent(tfExaminerNameText)
- .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE))
- .addContainerGap())
- );
- pnExaminerLayout.setVerticalGroup(
- pnExaminerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(pnExaminerLayout.createSequentialGroup()
- .addGap(0, 0, 0)
- .addGroup(pnExaminerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(lbExaminerNameLabel)
- .addComponent(tfExaminerNameText))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(pnExaminerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(tfExaminerEmailText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lbExaminerEmailLabel))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(pnExaminerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(tfExaminerPhoneText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lbExaminerPhoneLabel))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(pnExaminerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(lbNotesLabel)
- .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(0, 0, 0))
- );
-
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
- this.setLayout(layout);
- layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(pnOrganization, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(pnExaminer, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- );
- layout.setVerticalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addGap(0, 0, 0)
- .addComponent(pnOrganization, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 0, 0)
- .addComponent(pnExaminer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 0, 0))
- );
- }// //GEN-END:initComponents
-
- private void comboBoxOrgNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboBoxOrgNameActionPerformed
- JComboBox cb = (JComboBox) evt.getSource();
- String orgName = (String) cb.getSelectedItem();
- if (null == orgName || false == comboboxOrganizationActionListenerActive) {
- return;
- }
-
- if ("".equals(orgName)) {
- selectedOrg = null;
- lbPointOfContactNameText.setText("");
- lbPointOfContactEmailText.setText("");
- lbPointOfContactPhoneText.setText("");
- contentChanged = true;
- return;
- }
-
- for (EamOrganization org : orgs) {
- if (org.getName().equals(orgName)) {
- selectedOrg = org;
- lbPointOfContactNameText.setText(selectedOrg.getPocName());
- lbPointOfContactEmailText.setText(selectedOrg.getPocEmail());
- lbPointOfContactPhoneText.setText(selectedOrg.getPocPhone());
- contentChanged = true;
- return;
- }
- }
- }//GEN-LAST:event_comboBoxOrgNameActionPerformed
-
- private void bnNewOrganizationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnNewOrganizationActionPerformed
- ManageOrganizationsDialog dialog = new ManageOrganizationsDialog();
- // update the combobox options and org data fields
- if (dialog.isChanged()) {
- eamCase.setOrg(dialog.getNewOrg());
- loadOrganizationData();
- updateDb();
- validate();
- repaint();
- }
- }//GEN-LAST:event_bnNewOrganizationActionPerformed
-
- private void tfExaminerPhoneTextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tfExaminerPhoneTextActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_tfExaminerPhoneTextActionPerformed
-
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JButton bnNewOrganization;
- private javax.swing.JComboBox comboBoxOrgName;
- private javax.swing.JScrollPane jScrollPane2;
- private javax.swing.JLabel lbExaminerEmailLabel;
- private javax.swing.JLabel lbExaminerNameLabel;
- private javax.swing.JLabel lbExaminerPhoneLabel;
- private javax.swing.JLabel lbNotesLabel;
- private javax.swing.JLabel lbOrganizationNameLabel;
- private javax.swing.JLabel lbPointOfContactEmailLabel;
- private javax.swing.JLabel lbPointOfContactEmailText;
- private javax.swing.JLabel lbPointOfContactNameLabel;
- private javax.swing.JLabel lbPointOfContactNameText;
- private javax.swing.JLabel lbPointOfContactPhoneLabel;
- private javax.swing.JLabel lbPointOfContactPhoneText;
- private javax.swing.JPanel pnExaminer;
- private javax.swing.JPanel pnOrganization;
- private javax.swing.JTextArea taNotesText;
- private javax.swing.JTextField tfExaminerEmailText;
- private javax.swing.JTextField tfExaminerNameText;
- private javax.swing.JTextField tfExaminerPhoneText;
- // End of variables declaration//GEN-END:variables
-
- private void loadExaminerData() {
- tfExaminerNameText.setText(eamCase.getExaminerName());
- tfExaminerEmailText.setText(eamCase.getExaminerEmail());
- tfExaminerPhoneText.setText(eamCase.getExaminerPhone());
- taNotesText.setText(eamCase.getNotes());
- }
-
- public void saveChanges(){
- updateEamCase();
- updateDb();
- }
-
- private void loadOrganizationData() {
- comboboxOrganizationActionListenerActive = false; // don't fire action listener while loading combobox content
- comboBoxOrgName.removeAllItems();
- try {
- orgs = dbManager.getOrganizations();
- comboBoxOrgName.addItem(""); // for when a case has a null Org
- orgs.forEach((org) -> {
- comboBoxOrgName.addItem(org.getName());
- });
- } catch (EamDbException ex) {
- LOGGER.log(Level.SEVERE, "Failure populating combobox with organizations.", ex);
- }
- comboboxOrganizationActionListenerActive = true;
-
- if (!orgs.isEmpty() && null != eamCase.getOrg()) {
- selectedOrg = eamCase.getOrg();
- comboBoxOrgName.setSelectedItem(selectedOrg.getName());
- lbPointOfContactNameText.setText(selectedOrg.getPocName());
- lbPointOfContactEmailText.setText(selectedOrg.getPocEmail());
- lbPointOfContactPhoneText.setText(selectedOrg.getPocPhone());
- } else {
- comboBoxOrgName.setSelectedItem("");
- lbPointOfContactNameText.setText("");
- lbPointOfContactEmailText.setText("");
- lbPointOfContactPhoneText.setText("");
- }
- }
-
- private void loadData() {
- loadExaminerData();
- loadOrganizationData();
- }
-
- /**
- * Save changed value from text fields and text areas into the EamCase
- * object.
- */
- private void updateEamCase() {
- eamCase.setOrg(selectedOrg);
- eamCase.setExaminerName(tfExaminerNameText.getText());
- eamCase.setExaminerEmail(tfExaminerEmailText.getText());
- eamCase.setExaminerPhone(tfExaminerPhoneText.getText());
- eamCase.setNotes(taNotesText.getText());
- }
-
- private void updateDb() {
- setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
-
- if (!EamDb.isEnabled()) {
- LOGGER.log(Level.SEVERE, "Central repository database not enabled"); // NON-NLS
- return;
- }
-
- try {
- dbManager.updateCase(eamCase);
- } catch (IllegalArgumentException | EamDbException ex) {
- LOGGER.log(Level.SEVERE, "Error connecting to central repository database", ex); // NON-NLS
- } finally {
- setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
- }
- }
-
- /**
- * Used to listen for changes in text areas/boxes. Let the panel know text
- * content has changed.
- */
- private class TextBoxChangedListener implements DocumentListener {
-
- @Override
- public void changedUpdate(DocumentEvent e) {
- setChanged();
- }
-
- @Override
- public void insertUpdate(DocumentEvent e) {
- setChanged();
- }
-
- @Override
- public void removeUpdate(DocumentEvent e) {
- setChanged();
- }
-
- private void setChanged() {
- contentChanged = true;
- }
- }
-}
diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/GlobalSettingsPanel.form b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/GlobalSettingsPanel.form
index c9c19a90ff..49d525511b 100755
--- a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/GlobalSettingsPanel.form
+++ b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/GlobalSettingsPanel.form
@@ -25,17 +25,13 @@
+
-
-
-
-
-
-
-
+
+
@@ -56,9 +52,12 @@
+
+
+
@@ -312,9 +311,6 @@
-
-
-
@@ -415,5 +411,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/GlobalSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/GlobalSettingsPanel.java
index 77b9a63288..37dd9ff5b0 100755
--- a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/GlobalSettingsPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/GlobalSettingsPanel.java
@@ -105,6 +105,10 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
correlationPropertiesScrollPane = new javax.swing.JScrollPane();
correlationPropertiesTextArea = new javax.swing.JTextArea();
lbCentralRepository = new javax.swing.JLabel();
+ organizationPanel = new javax.swing.JPanel();
+ manageOrganizationButton = new javax.swing.JButton();
+ organizationScrollPane = new javax.swing.JScrollPane();
+ organizationTextArea = new javax.swing.JTextArea();
setName(""); // NOI18N
@@ -234,11 +238,6 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
tbOops.setFont(tbOops.getFont().deriveFont(tbOops.getFont().getStyle() | java.awt.Font.BOLD, 12));
tbOops.setText(org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.tbOops.text")); // NOI18N
tbOops.setBorder(null);
- tbOops.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- tbOopsActionPerformed(evt);
- }
- });
pnCorrelationProperties.setBorder(javax.swing.BorderFactory.createTitledBorder(null, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.pnCorrelationProperties.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 12))); // NOI18N
pnCorrelationProperties.setPreferredSize(new java.awt.Dimension(674, 93));
@@ -289,6 +288,51 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
org.openide.awt.Mnemonics.setLocalizedText(lbCentralRepository, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.lbCentralRepository.text")); // NOI18N
+ organizationPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.organizationPanel.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 12))); // NOI18N
+
+ org.openide.awt.Mnemonics.setLocalizedText(manageOrganizationButton, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.manageOrganizationButton.text")); // NOI18N
+ manageOrganizationButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ manageOrganizationButtonActionPerformed(evt);
+ }
+ });
+
+ organizationScrollPane.setBorder(null);
+
+ organizationTextArea.setEditable(false);
+ organizationTextArea.setBackground(new java.awt.Color(240, 240, 240));
+ organizationTextArea.setColumns(20);
+ organizationTextArea.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
+ organizationTextArea.setLineWrap(true);
+ organizationTextArea.setRows(2);
+ organizationTextArea.setText(org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.organizationTextArea.text")); // NOI18N
+ organizationTextArea.setWrapStyleWord(true);
+ organizationTextArea.setBorder(null);
+ organizationScrollPane.setViewportView(organizationTextArea);
+
+ javax.swing.GroupLayout organizationPanelLayout = new javax.swing.GroupLayout(organizationPanel);
+ organizationPanel.setLayout(organizationPanelLayout);
+ organizationPanelLayout.setHorizontalGroup(
+ organizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(organizationPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(organizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(organizationScrollPane)
+ .addGroup(organizationPanelLayout.createSequentialGroup()
+ .addComponent(manageOrganizationButton)
+ .addGap(0, 0, Short.MAX_VALUE)))
+ .addContainerGap())
+ );
+ organizationPanelLayout.setVerticalGroup(
+ organizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, organizationPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(organizationScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(manageOrganizationButton)
+ .addGap(8, 8, 8))
+ );
+
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
@@ -299,15 +343,13 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
.addComponent(tbOops, javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addComponent(organizationPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lbCentralRepository, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(pnCorrelationProperties, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(pnTagManagement, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(pnDatabaseConfiguration, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(cbUseCentralRepo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 186, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(bnImportDatabase, javax.swing.GroupLayout.Alignment.LEADING))
- .addGap(0, 0, Short.MAX_VALUE)))
+ .addComponent(cbUseCentralRepo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 186, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(bnImportDatabase, javax.swing.GroupLayout.Alignment.LEADING))
.addContainerGap())))
);
layout.setVerticalGroup(
@@ -323,9 +365,12 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
.addGap(0, 0, 0)
.addComponent(pnCorrelationProperties, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
+ .addComponent(organizationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, 0)
.addComponent(tbOops, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
- .addComponent(bnImportDatabase))
+ .addComponent(bnImportDatabase)
+ .addContainerGap())
);
pnTagManagement.getAccessibleContext().setAccessibleName("");
@@ -366,9 +411,9 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
}//GEN-LAST:event_cbUseCentralRepoActionPerformed
- private void tbOopsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbOopsActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_tbOopsActionPerformed
+ private void manageOrganizationButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_manageOrganizationButtonActionPerformed
+ ManageOrganizationsDialog dialog = new ManageOrganizationsDialog();
+ }//GEN-LAST:event_manageOrganizationButtonActionPerformed
@Override
@Messages({"GlobalSettingsPanel.validationerrMsg.mustConfigure=Configure the database to enable this module."})
@@ -519,6 +564,9 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
bnManageTags.setEnabled(enable && !ingestRunning);
manageTagsTextArea.setEnabled(enable && !ingestRunning);
correlationPropertiesTextArea.setEnabled(enable && !ingestRunning);
+ organizationPanel.setEnabled(enable && !ingestRunning);
+ organizationTextArea.setEnabled(enable && !ingestRunning);
+ manageOrganizationButton.setEnabled(enable && !ingestRunning);
return true;
}
@@ -537,8 +585,12 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
private javax.swing.JLabel lbDbNameValue;
private javax.swing.JLabel lbDbPlatformTypeLabel;
private javax.swing.JLabel lbDbPlatformValue;
+ private javax.swing.JButton manageOrganizationButton;
private javax.swing.JScrollPane manageTagsScrollPane;
private javax.swing.JTextArea manageTagsTextArea;
+ private javax.swing.JPanel organizationPanel;
+ private javax.swing.JScrollPane organizationScrollPane;
+ private javax.swing.JTextArea organizationTextArea;
private javax.swing.JPanel pnCorrelationProperties;
private javax.swing.JPanel pnDatabaseConfiguration;
private javax.swing.JPanel pnTagManagement;