Autopsy  4.11.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
SummaryViewer.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2019 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obt ain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.communications.relationships;
20 
21 import java.util.Set;
22 import javax.swing.JPanel;
23 import org.netbeans.swing.outline.DefaultOutlineModel;
24 import org.netbeans.swing.outline.Outline;
25 import org.openide.explorer.view.OutlineView;
26 import org.openide.nodes.AbstractNode;
27 import org.openide.nodes.Children;
28 import org.openide.util.Lookup;
29 import org.openide.util.NbBundle.Messages;
32 import org.sleuthkit.datamodel.Account;
33 
40 public class SummaryViewer extends javax.swing.JPanel implements RelationshipsViewer {
41 
42  private final Lookup lookup;
43 
44  @Messages({
45  "SummaryViewer_TabTitle=Summary",
46  "SummaryViewer_FileRefNameColumn_Title=Path",
47  "SummaryViewer_CaseRefNameColumn_Title=Case Name",
48  "SummaryViewer_CentralRepository_Message=<Enable Central Resposity to see Other Occurrences>",
49  "SummaryViewer_Creation_Date_Title=Creation Date",
50  "SummeryViewer_FileRef_Message=<Select one Accout to see File References>",
51  })
52 
56  public SummaryViewer() {
57  lookup = Lookup.getDefault();
59 
60  OutlineView outlineView = fileReferencesPanel.getOutlineView();
61  Outline outline = outlineView.getOutline();
62 
63  outline.setRootVisible(false);
64  ((DefaultOutlineModel) outline.getOutlineModel()).setNodesColumnLabel(Bundle.SummaryViewer_FileRefNameColumn_Title());
65 
66  outlineView = caseReferencesPanel.getOutlineView();
67  outline = outlineView.getOutline();
68  outlineView.setPropertyColumns("creationDate", Bundle.SummaryViewer_Creation_Date_Title()); //NON-NLS
69 
70  outline.setRootVisible(false);
71  ((DefaultOutlineModel) outline.getOutlineModel()).setNodesColumnLabel(Bundle.SummaryViewer_CaseRefNameColumn_Title());
72 
73  clearControls();
74 
75  caseReferencesPanel.hideOutlineView(Bundle.SummaryViewer_CentralRepository_Message());
76  fileReferencesPanel.hideOutlineView(Bundle.SummeryViewer_FileRef_Message());
77  }
78 
79  @Override
80  public String getDisplayName() {
81  return Bundle.SummaryViewer_TabTitle();
82  }
83 
84  @Override
85  public JPanel getPanel() {
86  return this;
87  }
88 
89  @Override
90  public void setSelectionInfo(SelectionInfo info) {
91 
92  if (!EamDb.isEnabled()) {
93  caseReferencesPanel.hideOutlineView(Bundle.SummaryViewer_CentralRepository_Message());
94  } else {
96  }
97 
98  // Request is that the SummaryViewer only show information if one
99  // account is selected
100  if (info.getAccounts().size() != 1) {
101  setEnabled(false);
102  clearControls();
103 
104  fileReferencesPanel.hideOutlineView(Bundle.SummeryViewer_FileRef_Message());
105  } else {
106  SelectionSummary summaryDetails = info.getSummary();
107 
108  attachmentsDataLabel.setText(Integer.toString(summaryDetails.getAttachmentCnt()));
109  callLogsDataLabel.setText(Integer.toString(summaryDetails.getCallLogCnt()));
110  contactsDataLabel.setText(Integer.toString(summaryDetails.getContactsCnt()));
111  emailDataLabel.setText(Integer.toString(summaryDetails.getEmailCnt()));
112  messagesDataLabel.setText(Integer.toString(summaryDetails.getMessagesCnt()));
113 
115 
116  fileReferencesPanel.setNode(new AbstractNode(Children.create(new AccountSourceContentChildNodeFactory(info.getAccounts()), true)));
117  caseReferencesPanel.setNode(new AbstractNode(Children.create(new CorrelationCaseChildNodeFactory(info.getAccounts()), true)));
118 
119  setEnabled(true);
120  }
121  }
122 
123  @Override
124  public Lookup getLookup() {
125  return lookup;
126  }
127 
133  @Override
134  public void setEnabled(boolean enabled) {
135  super.setEnabled(enabled);
136  attachmentsLabel.setEnabled(enabled);
137  callLogsLabel.setEnabled(enabled);
138  contactsLabel.setEnabled(enabled);
139  emailLabel.setEnabled(enabled);
140  messagesLabel.setEnabled(enabled);
143  countsPanel.setEnabled(enabled);
144  }
145 
149  private void clearControls() {
150  attachmentsDataLabel.setText("");
151  callLogsDataLabel.setText("");
152  contactsDataLabel.setText("");
153  emailDataLabel.setText("");
154  messagesDataLabel.setText("");
155 
156  fileReferencesPanel.setNode(new AbstractNode(Children.LEAF));
157  caseReferencesPanel.setNode(new AbstractNode(Children.LEAF));
158  }
159 
168  private String createAccountLabel(Set<Account> accounts) {
169  StringBuilder buffer = new StringBuilder();
170  accounts.stream().map((account) -> {
171  buffer.append(account.getTypeSpecificID());
172  return account;
173  }).forEachOrdered((_item) -> {
174  buffer.append(", ");
175  });
176 
177  return buffer.toString().substring(0, buffer.length() - 2);
178  }
179 
185  @SuppressWarnings("unchecked")
186  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
187  private void initComponents() {
188  java.awt.GridBagConstraints gridBagConstraints;
189 
190  countsPanel = new javax.swing.JPanel();
191  emailLabel = new javax.swing.JLabel();
192  contactsLabel = new javax.swing.JLabel();
193  messagesLabel = new javax.swing.JLabel();
194  callLogsLabel = new javax.swing.JLabel();
195  attachmentsLabel = new javax.swing.JLabel();
196  attachmentsDataLabel = new javax.swing.JLabel();
197  messagesDataLabel = new javax.swing.JLabel();
198  callLogsDataLabel = new javax.swing.JLabel();
199  contactsDataLabel = new javax.swing.JLabel();
200  emailDataLabel = new javax.swing.JLabel();
203 
204  setLayout(new java.awt.GridBagLayout());
205 
206  countsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.countsPanel.border.title"))); // NOI18N
207 
208  org.openide.awt.Mnemonics.setLocalizedText(emailLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.emailLabel.text")); // NOI18N
209 
210  org.openide.awt.Mnemonics.setLocalizedText(contactsLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.contactsLabel.text")); // NOI18N
211 
212  org.openide.awt.Mnemonics.setLocalizedText(messagesLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.messagesLabel.text")); // NOI18N
213 
214  org.openide.awt.Mnemonics.setLocalizedText(callLogsLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.callLogsLabel.text")); // NOI18N
215 
216  org.openide.awt.Mnemonics.setLocalizedText(attachmentsLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.attachmentsLabel.text")); // NOI18N
217 
218  org.openide.awt.Mnemonics.setLocalizedText(attachmentsDataLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.attachmentsDataLabel.text")); // NOI18N
219 
220  org.openide.awt.Mnemonics.setLocalizedText(messagesDataLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.messagesDataLabel.text")); // NOI18N
221 
222  org.openide.awt.Mnemonics.setLocalizedText(callLogsDataLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.callLogsDataLabel.text")); // NOI18N
223 
224  org.openide.awt.Mnemonics.setLocalizedText(contactsDataLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.contactsDataLabel.text")); // NOI18N
225 
226  org.openide.awt.Mnemonics.setLocalizedText(emailDataLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.emailDataLabel.text")); // NOI18N
227 
228  javax.swing.GroupLayout countsPanelLayout = new javax.swing.GroupLayout(countsPanel);
229  countsPanel.setLayout(countsPanelLayout);
230  countsPanelLayout.setHorizontalGroup(
231  countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
232  .addGroup(countsPanelLayout.createSequentialGroup()
233  .addContainerGap()
234  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
235  .addComponent(attachmentsLabel)
236  .addComponent(messagesLabel)
237  .addComponent(callLogsLabel)
238  .addComponent(contactsLabel)
239  .addComponent(emailLabel))
240  .addGap(18, 18, 18)
241  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
242  .addComponent(emailDataLabel)
243  .addComponent(contactsDataLabel)
244  .addComponent(callLogsDataLabel)
245  .addComponent(messagesDataLabel)
246  .addComponent(attachmentsDataLabel))
247  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
248  );
249  countsPanelLayout.setVerticalGroup(
250  countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
251  .addGroup(countsPanelLayout.createSequentialGroup()
252  .addGap(7, 7, 7)
253  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
254  .addComponent(attachmentsLabel)
255  .addComponent(attachmentsDataLabel))
256  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
257  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
258  .addComponent(messagesLabel)
259  .addComponent(messagesDataLabel))
260  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
261  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
262  .addComponent(callLogsLabel)
263  .addComponent(callLogsDataLabel))
264  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
265  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
266  .addComponent(contactsLabel)
267  .addComponent(contactsDataLabel))
268  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
269  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
270  .addComponent(emailLabel)
271  .addComponent(emailDataLabel))
272  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
273  );
274 
275  gridBagConstraints = new java.awt.GridBagConstraints();
276  gridBagConstraints.gridx = 0;
277  gridBagConstraints.gridy = 0;
278  gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
279  gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
280  gridBagConstraints.weightx = 1.0;
281  add(countsPanel, gridBagConstraints);
282 
283  fileReferencesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.fileReferencesPanel.border.title"))); // NOI18N
284  gridBagConstraints = new java.awt.GridBagConstraints();
285  gridBagConstraints.gridx = 0;
286  gridBagConstraints.gridy = 1;
287  gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
288  gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
289  gridBagConstraints.weightx = 1.0;
290  gridBagConstraints.weighty = 1.0;
291  add(fileReferencesPanel, gridBagConstraints);
292 
293  caseReferencesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.caseReferencesPanel.border.title"))); // NOI18N
294  gridBagConstraints = new java.awt.GridBagConstraints();
295  gridBagConstraints.gridx = 0;
296  gridBagConstraints.gridy = 2;
297  gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
298  gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
299  gridBagConstraints.weightx = 1.0;
300  gridBagConstraints.weighty = 1.0;
301  add(caseReferencesPanel, gridBagConstraints);
302  }// </editor-fold>//GEN-END:initComponents
303 
304 
305  // Variables declaration - do not modify//GEN-BEGIN:variables
306  private javax.swing.JLabel attachmentsDataLabel;
307  private javax.swing.JLabel attachmentsLabel;
308  private javax.swing.JLabel callLogsDataLabel;
309  private javax.swing.JLabel callLogsLabel;
311  private javax.swing.JLabel contactsDataLabel;
312  private javax.swing.JLabel contactsLabel;
313  private javax.swing.JPanel countsPanel;
314  private javax.swing.JLabel emailDataLabel;
315  private javax.swing.JLabel emailLabel;
317  private javax.swing.JLabel messagesDataLabel;
318  private javax.swing.JLabel messagesLabel;
319  // End of variables declaration//GEN-END:variables
320 
321 }
org.sleuthkit.autopsy.communications.relationships.OutlineViewPanel caseReferencesPanel
org.sleuthkit.autopsy.communications.relationships.OutlineViewPanel fileReferencesPanel

Copyright © 2012-2018 Basis Technology. Generated on: Fri Jun 21 2019
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.