From c43928a51521f24a964993f8a0ecc254b51cc8e2 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dgrove" Date: Thu, 27 Dec 2018 00:17:39 -0500 Subject: [PATCH] Display case notes in HTML report. --- .../autopsy/casemodule/Bundle.properties | 27 +++ .../casemodule/CasePropertiesPanel.form | 218 +++++++++--------- .../casemodule/CasePropertiesPanel.java | 100 ++++---- .../OptionalCasePropertiesPanel.form | 164 +++++++------ .../OptionalCasePropertiesPanel.java | 109 ++++----- .../sleuthkit/autopsy/report/ReportHTML.java | 22 ++ 6 files changed, 326 insertions(+), 314 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties index bd8257175e..bba62aa883 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties @@ -241,3 +241,30 @@ ImageFilePanel.md5HashTextField.text= ImageFilePanel.errorLabel.text=Error Label ImageFilePanel.hashValuesNoteLabel.text=NOTE: These values will not be validated when the data source is added. ImageFilePanel.hashValuesLabel.text=Hash Values (optional): +CasePropertiesPanel.lbCaseUUIDLabel.text=Case UUID: +CasePropertiesPanel.lbNotesLabel.text=Notes: +CasePropertiesPanel.examinerPanel.AccessibleContext.accessibleName=Examiner +CasePropertiesPanel.examinerPanel.border.title=Examiner +CasePropertiesPanel.pnOrganization.border.title=Organization +CasePropertiesPanel.casePanel.border.title=Case +CasePropertiesPanel.examinerLabel.text=Name: +CasePropertiesPanel.lbExaminerPhoneLabel.text=Phone: +CasePropertiesPanel.lbExaminerEmailLabel.text=Email: +CasePropertiesPanel.lbOrganizationNameLabel.text=Name: +CasePropertiesPanel.lbPointOfContactNameLabel.text=Point of Contact: +CasePropertiesPanel.lbPointOfContactPhoneLabel.text=Phone: +CasePropertiesPanel.lbPointOfContactEmailLabel.text=Email: +OptionalCasePropertiesPanel.casePanel.border.title=Case +OptionalCasePropertiesPanel.caseDisplayNameLabel.text=Name: +OptionalCasePropertiesPanel.caseNumberLabel.text=Number: +OptionalCasePropertiesPanel.examinerPanel.border.title=Examiner +OptionalCasePropertiesPanel.examinerLabel.text=Name: +OptionalCasePropertiesPanel.lbExaminerPhoneLabel.text=Phone: +OptionalCasePropertiesPanel.lbExaminerEmailLabel.text=Email: +OptionalCasePropertiesPanel.lbNotesLabel.text=Notes: +OptionalCasePropertiesPanel.orgainizationPanel.border.title=Organization +OptionalCasePropertiesPanel.lbOrganizationNameLabel.text=Organization analysis is being done for: +OptionalCasePropertiesPanel.lbPointOfContactNameLabel.text=Point of Contact: +OptionalCasePropertiesPanel.lbPointOfContactPhoneLabel.text=Phone: +OptionalCasePropertiesPanel.lbPointOfContactEmailLabel.text=Email: +OptionalCasePropertiesPanel.bnNewOrganization.text=Manage Organizations diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form index 43f322badc..6fb7c3e0b4 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.form @@ -45,7 +45,6 @@ - @@ -71,11 +70,11 @@ - - - - + + + + @@ -85,7 +84,7 @@ - + @@ -129,6 +128,11 @@ + + + + + @@ -137,7 +141,7 @@ - + @@ -172,7 +176,11 @@ - + + + + + @@ -350,84 +358,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -445,27 +375,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -500,6 +409,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -542,7 +544,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java index a2dc028b70..f9c5c53a7d 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesPanel.java @@ -20,7 +20,6 @@ package org.sleuthkit.autopsy.casemodule; import java.nio.file.Paths; import java.util.logging.Level; -import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.centralrepository.datamodel.CorrelationCase; import org.sleuthkit.autopsy.centralrepository.datamodel.EamDb; import org.sleuthkit.autopsy.centralrepository.datamodel.EamDbException; @@ -112,19 +111,6 @@ final class CasePropertiesPanel extends javax.swing.JPanel { repaint(); } - @Messages({"CasePropertiesPanel.casePanel.border.title=Case", - "CasePropertiesPanel.lbCaseUUIDLabel.text=Case UUID:", - "CasePropertiesPanel.examinerPanel.border.title=Examiner", - "CasePropertiesPanel.examinerLabel.text=Name:", - "CasePropertiesPanel.lbExaminerPhoneLabel.text=Phone:", - "CasePropertiesPanel.lbExaminerEmailLabel.text=Email:", - "CasePropertiesPanel.lbNotesLabel.text=Notes:", - "CasePropertiesPanel.pnOrganization.border.title=Organization", - "CasePropertiesPanel.lbOrganizationNameLabel.text=Name:", - "CasePropertiesPanel.lbPointOfContactNameLabel.text=Point of Contact:", - "CasePropertiesPanel.lbPointOfContactPhoneLabel.text=Phone:", - "CasePropertiesPanel.lbPointOfContactEmailLabel.text=Email:"}) - /** * In this generated code below, there are 2 strings "Path" and "Remove" * that are table column headers in the DefaultTableModel. When this model @@ -161,12 +147,12 @@ final class CasePropertiesPanel extends javax.swing.JPanel { lbCaseUIDText = new javax.swing.JLabel(); 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(); caseNotesScrollPane = new javax.swing.JScrollPane(); taNotesText = new javax.swing.JTextArea(); + examinerPanel = new javax.swing.JPanel(); + lbExaminerNameText = new javax.swing.JLabel(); + examinerLabel = new javax.swing.JLabel(); lbExaminerEmailLabel = new javax.swing.JLabel(); lbExaminerPhoneLabel = new javax.swing.JLabel(); lbExaminerPhoneText = new javax.swing.JLabel(); @@ -235,6 +221,26 @@ final class CasePropertiesPanel extends javax.swing.JPanel { lbCaseNumberText.setMinimumSize(new java.awt.Dimension(25, 14)); + 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); + + caseNotesScrollPane.setBorder(null); + + taNotesText.setEditable(false); + 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); + taNotesText.setFocusable(false); + taNotesText.setOpaque(false); + caseNotesScrollPane.setViewportView(taNotesText); + javax.swing.GroupLayout casePanelLayout = new javax.swing.GroupLayout(casePanel); casePanel.setLayout(casePanelLayout); casePanelLayout.setHorizontalGroup( @@ -264,7 +270,11 @@ final class CasePropertiesPanel extends javax.swing.JPanel { .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)))) + .addComponent(lbCaseUIDText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGroup(casePanelLayout.createSequentialGroup() + .addComponent(lbNotesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 117, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(caseNotesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 704, Short.MAX_VALUE))) .addContainerGap()) ); @@ -273,7 +283,7 @@ final class CasePropertiesPanel extends javax.swing.JPanel { casePanelLayout.setVerticalGroup( casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(casePanelLayout.createSequentialGroup() - .addContainerGap() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .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)) @@ -301,37 +311,20 @@ final class CasePropertiesPanel extends javax.swing.JPanel { .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)) - .addGap(6, 6, 6)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lbNotesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(caseNotesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) ); 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)); - caseNotesScrollPane.setBorder(null); - - taNotesText.setEditable(false); - 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); - taNotesText.setFocusable(false); - taNotesText.setOpaque(false); - caseNotesScrollPane.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)); @@ -350,13 +343,9 @@ final class CasePropertiesPanel extends javax.swing.JPanel { .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, 115, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(lbExaminerPhoneLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(6, 6, 6) - .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lbExaminerPhoneText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(caseNotesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 704, Short.MAX_VALUE))) + .addComponent(lbExaminerPhoneText, javax.swing.GroupLayout.DEFAULT_SIZE, 704, 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) @@ -368,7 +357,7 @@ final class CasePropertiesPanel extends javax.swing.JPanel { .addContainerGap()) ); - examinerPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {examinerLabel, lbExaminerEmailLabel, lbExaminerPhoneLabel, lbNotesLabel}); + examinerPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {examinerLabel, lbExaminerEmailLabel, lbExaminerPhoneLabel}); examinerPanelLayout.setVerticalGroup( examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -385,11 +374,7 @@ final class CasePropertiesPanel extends javax.swing.JPanel { .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) - .addComponent(lbNotesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(caseNotesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(6, 6, 6)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pnOrganization.setBorder(javax.swing.BorderFactory.createTitledBorder(null, org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.pnOrganization.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 12))); // NOI18N @@ -475,13 +460,15 @@ final class CasePropertiesPanel extends javax.swing.JPanel { 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) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(examinerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, 0) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(pnOrganization, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); + examinerPanel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.examinerPanel.AccessibleContext.accessibleName")); // NOI18N + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( @@ -495,8 +482,7 @@ final class CasePropertiesPanel extends javax.swing.JPanel { layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, 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)) + .addComponent(detailsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); }// //GEN-END:initComponents diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/OptionalCasePropertiesPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/OptionalCasePropertiesPanel.form index bf66012584..6a342165fc 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/OptionalCasePropertiesPanel.form +++ b/Core/src/org/sleuthkit/autopsy/casemodule/OptionalCasePropertiesPanel.form @@ -32,11 +32,10 @@ - + - - - + + @@ -46,7 +45,7 @@ - + @@ -57,14 +56,16 @@ - + + - + + @@ -84,7 +85,12 @@ - + + + + + + @@ -151,13 +157,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -171,15 +223,9 @@ - - - - + - - - - + @@ -215,12 +261,7 @@ - - - - - - + @@ -244,36 +285,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -322,29 +333,13 @@ - - - - - - - - - - - - - - - - - + @@ -354,10 +349,17 @@ - + + - - + + + + + + + + @@ -370,16 +372,8 @@ - - - - - - - - - + @@ -392,10 +386,10 @@ - + - + @@ -407,7 +401,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/OptionalCasePropertiesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/OptionalCasePropertiesPanel.java index 55c64d1f12..f6856c5531 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/OptionalCasePropertiesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/OptionalCasePropertiesPanel.java @@ -205,21 +205,6 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { taNotesText.setText(caseNotes == null ? "" : caseNotes); } - @Messages({"OptionalCasePropertiesPanel.caseDisplayNameLabel.text=Name:", - "OptionalCasePropertiesPanel.lbPointOfContactEmailLabel.text=Email:", - "OptionalCasePropertiesPanel.lbOrganizationNameLabel.text=Organization analysis is being done for:", - "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.lbExaminerPhoneLabel.text=Phone:", - "OptionalCasePropertiesPanel.examinerPanel.border.title=Examiner", - "OptionalCasePropertiesPanel.caseNumberLabel.text=Number:", - "OptionalCasePropertiesPanel.casePanel.border.title=Case" - }) /** * 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 @@ -234,16 +219,16 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { caseNumberTextField = new javax.swing.JTextField(); caseDisplayNameLabel = new javax.swing.JLabel(); caseDisplayNameTextField = new javax.swing.JTextField(); + caseNotesScrollPane = new javax.swing.JScrollPane(); + taNotesText = new javax.swing.JTextArea(); + lbNotesLabel = new javax.swing.JLabel(); examinerPanel = new javax.swing.JPanel(); tfExaminerPhoneText = new javax.swing.JTextField(); lbExaminerPhoneLabel = new javax.swing.JLabel(); - caseNotesScrollPane = 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<>(); @@ -274,6 +259,21 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { caseDisplayNameTextField.setFont(caseDisplayNameTextField.getFont().deriveFont(caseDisplayNameTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11)); + caseNotesScrollPane.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); + caseNotesScrollPane.setViewportView(taNotesText); + + 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 casePanelLayout = new javax.swing.GroupLayout(casePanel); casePanel.setLayout(casePanelLayout); casePanelLayout.setHorizontalGroup( @@ -282,10 +282,12 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { .addContainerGap() .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(caseNumberLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 60, Short.MAX_VALUE) - .addComponent(caseDisplayNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(caseDisplayNameLabel, 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(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(caseNumberTextField) + .addComponent(caseNotesScrollPane) + .addComponent(caseNumberTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 425, Short.MAX_VALUE) .addComponent(caseDisplayNameTextField)) .addContainerGap()) ); @@ -300,7 +302,11 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(caseNumberLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(caseNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(6, 6, 6)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(casePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lbNotesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(caseNotesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); examinerPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.examinerPanel.border.title"))); // NOI18N @@ -310,16 +316,6 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { lbExaminerPhoneLabel.setMinimumSize(new java.awt.Dimension(41, 14)); lbExaminerPhoneLabel.setPreferredSize(new java.awt.Dimension(41, 14)); - caseNotesScrollPane.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); - caseNotesScrollPane.setViewportView(taNotesText); - examinerTextField.setFont(examinerTextField.getFont().deriveFont(examinerTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11)); org.openide.awt.Mnemonics.setLocalizedText(lbExaminerEmailLabel, org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.lbExaminerEmailLabel.text")); // NOI18N @@ -333,11 +329,6 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { 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( @@ -346,13 +337,9 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { .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)) + .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(caseNotesScrollPane) - .addComponent(tfExaminerPhoneText))) + .addComponent(tfExaminerPhoneText, javax.swing.GroupLayout.DEFAULT_SIZE, 424, Short.MAX_VALUE)) .addGroup(examinerPanelLayout.createSequentialGroup() .addGroup(examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lbExaminerEmailLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -364,7 +351,7 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { .addGap(11, 11, 11)) ); - examinerPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {examinerLabel, lbExaminerEmailLabel, lbExaminerPhoneLabel, lbNotesLabel}); + examinerPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {examinerLabel, lbExaminerEmailLabel, lbExaminerPhoneLabel}); examinerPanelLayout.setVerticalGroup( examinerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -381,11 +368,7 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { .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.LEADING) - .addComponent(lbNotesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(caseNotesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(6, 6, 6)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); orgainizationPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(OptionalCasePropertiesPanel.class, "OptionalCasePropertiesPanel.orgainizationPanel.border.title"))); // NOI18N @@ -432,9 +415,15 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { orgainizationPanelLayout.setHorizontalGroup( orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(orgainizationPanelLayout.createSequentialGroup() + .addContainerGap() .addGroup(orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(orgainizationPanelLayout.createSequentialGroup() - .addGap(106, 106, 106) + .addComponent(lbOrganizationNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 206, Short.MAX_VALUE) + .addGap(18, 18, 18) + .addComponent(comboBoxOrgName, javax.swing.GroupLayout.PREFERRED_SIZE, 108, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(bnNewOrganization, javax.swing.GroupLayout.PREFERRED_SIZE, 147, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(orgainizationPanelLayout.createSequentialGroup() .addGroup(orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lbPointOfContactPhoneLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lbPointOfContactEmailLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -443,14 +432,7 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { .addGroup(orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lbPointOfContactPhoneText, javax.swing.GroupLayout.Alignment.TRAILING, 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) - .addComponent(lbPointOfContactEmailText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addGroup(orgainizationPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(lbOrganizationNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 206, Short.MAX_VALUE) - .addGap(18, 18, 18) - .addComponent(comboBoxOrgName, javax.swing.GroupLayout.PREFERRED_SIZE, 108, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(bnNewOrganization, javax.swing.GroupLayout.PREFERRED_SIZE, 147, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(lbPointOfContactEmailText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) .addContainerGap()) ); @@ -464,10 +446,10 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { .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, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGap(18, 18, 18) .addGroup(orgainizationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(lbPointOfContactNameText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(lbPointOfContactNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(lbPointOfContactNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, 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) @@ -476,7 +458,7 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { .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)) - .addGap(6, 6, 6)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); @@ -496,11 +478,10 @@ final class OptionalCasePropertiesPanel extends javax.swing.JPanel { .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(casePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, 0) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(examinerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, 0) - .addComponent(orgainizationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, 0)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(orgainizationPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); }// //GEN-END:initComponents diff --git a/Core/src/org/sleuthkit/autopsy/report/ReportHTML.java b/Core/src/org/sleuthkit/autopsy/report/ReportHTML.java index f7e2fbb31f..f483804fd2 100644 --- a/Core/src/org/sleuthkit/autopsy/report/ReportHTML.java +++ b/Core/src/org/sleuthkit/autopsy/report/ReportHTML.java @@ -51,6 +51,7 @@ import javax.swing.JPanel; import org.apache.commons.lang3.StringEscapeUtils; import org.openide.filesystems.FileUtil; import org.openide.util.NbBundle; +import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.casemodule.services.Services; @@ -1226,6 +1227,10 @@ class ReportHTML implements TableReportModule { } } + @Messages({ + "ReportHTML.writeSum.caseNotes=Case Notes:", + "ReportHTML.writeSum.noCaseNotes=No case notes" + }) /** * Write the case details section of the summary for this report. * @@ -1236,6 +1241,7 @@ class ReportHTML implements TableReportModule { String caseName = currentCase.getDisplayName(); String caseNumber = currentCase.getNumber(); String examiner = currentCase.getExaminer(); + String caseNotes = currentCase.getCaseNotes(); final boolean agencyLogoSet = reportBranding.getAgencyLogoPath() != null && !reportBranding.getAgencyLogoPath().isEmpty(); int imagecount; try { @@ -1265,6 +1271,9 @@ class ReportHTML implements TableReportModule { .append("\n"); //NON-NLS summary.append("").append(NbBundle.getMessage(this.getClass(), "ReportHTML.writeSum.numImages")) //NON-NLS .append("").append(imagecount).append("\n"); //NON-NLS + summary.append("").append(Bundle.ReportHTML_writeSum_caseNotes()).append("") //NON-NLS + .append(!caseNotes.isEmpty() ? formatHtmlString(caseNotes) : Bundle.ReportHTML_writeSum_noCaseNotes()) + .append("\n"); //NON-NLS summary.append("\n"); //NON-NLS summary.append("\n"); //NON-NLS summary.append("
\n"); //NON-NLS @@ -1414,4 +1423,17 @@ class ReportHTML implements TableReportModule { + thumbFile.getName(); } + /** + * Apply escape sequence to special characters. Line feed and carriage + * return character combinations will be converted to HTML line breaks. + * + * @param text The text to format. + * + * @return The formatted text. + */ + private String formatHtmlString(String text) { + String formattedString = StringEscapeUtils.escapeHtml4(text); + return formattedString.replaceAll("(\r\n|\r|\n|\n\r)", "
"); + } + }