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;