Autopsy  4.12.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 
55  public SummaryViewer() {
56  lookup = Lookup.getDefault();
58 
59  OutlineView outlineView = fileReferencesPanel.getOutlineView();
60  Outline outline = outlineView.getOutline();
61 
62  outline.setRootVisible(false);
63  ((DefaultOutlineModel) outline.getOutlineModel()).setNodesColumnLabel(Bundle.SummaryViewer_FileRefNameColumn_Title());
64 
65  outlineView = caseReferencesPanel.getOutlineView();
66  outline = outlineView.getOutline();
67  outlineView.setPropertyColumns("creationDate", Bundle.SummaryViewer_Creation_Date_Title()); //NON-NLS
68 
69  outline.setRootVisible(false);
70  ((DefaultOutlineModel) outline.getOutlineModel()).setNodesColumnLabel(Bundle.SummaryViewer_CaseRefNameColumn_Title());
71 
72  clearControls();
73 
74  caseReferencesPanel.hideOutlineView(Bundle.SummaryViewer_CentralRepository_Message());
75  fileReferencesPanel.hideOutlineView(Bundle.SummeryViewer_FileRef_Message());
76  }
77 
78  @Override
79  public String getDisplayName() {
80  return Bundle.SummaryViewer_TabTitle();
81  }
82 
83  @Override
84  public JPanel getPanel() {
85  return this;
86  }
87 
88  @Override
89  public void setSelectionInfo(SelectionInfo info) {
90 
91  if (!EamDb.isEnabled()) {
92  caseReferencesPanel.hideOutlineView(Bundle.SummaryViewer_CentralRepository_Message());
93  } else {
95  }
96 
97  // Request is that the SummaryViewer only show information if one
98  // account is selected
99  if (info.getAccounts().size() != 1) {
100  setEnabled(false);
101  clearControls();
102 
103  fileReferencesPanel.hideOutlineView(Bundle.SummeryViewer_FileRef_Message());
104  } else {
105  SelectionSummary summaryDetails = info.getSummary();
106 
107  thumbnailsDataLabel.setText(Integer.toString(summaryDetails.getThumbnailCnt()));
108  callLogsDataLabel.setText(Integer.toString(summaryDetails.getCallLogCnt()));
109  contactsDataLabel.setText(Integer.toString(summaryDetails.getContactsCnt()));
110  messagesDataLabel.setText(Integer.toString(summaryDetails.getMessagesCnt() + summaryDetails.getEmailCnt()));
111  attachmentDataLabel.setText(Integer.toString(summaryDetails.getAttachmentCnt()));
112 
114 
115  fileReferencesPanel.setNode(new AbstractNode(Children.create(new AccountSourceContentChildNodeFactory(info.getAccounts()), true)));
116  caseReferencesPanel.setNode(new AbstractNode(Children.create(new CorrelationCaseChildNodeFactory(info.getAccounts()), true)));
117 
118  setEnabled(true);
119  }
120  }
121 
122  @Override
123  public Lookup getLookup() {
124  return lookup;
125  }
126 
132  @Override
133  public void setEnabled(boolean enabled) {
134  super.setEnabled(enabled);
135  thumbnailCntLabel.setEnabled(enabled);
136  callLogsLabel.setEnabled(enabled);
137  contactsLabel.setEnabled(enabled);
138  messagesLabel.setEnabled(enabled);
141  countsPanel.setEnabled(enabled);
142  }
143 
147  private void clearControls() {
148  thumbnailsDataLabel.setText("");
149  callLogsDataLabel.setText("");
150  contactsDataLabel.setText("");
151  messagesDataLabel.setText("");
152  attachmentDataLabel.setText("");
153 
154  fileReferencesPanel.setNode(new AbstractNode(Children.LEAF));
155  caseReferencesPanel.setNode(new AbstractNode(Children.LEAF));
156  }
157 
166  private String createAccountLabel(Set<Account> accounts) {
167  StringBuilder buffer = new StringBuilder();
168  accounts.stream().map((account) -> {
169  buffer.append(account.getTypeSpecificID());
170  return account;
171  }).forEachOrdered((_item) -> {
172  buffer.append(", ");
173  });
174 
175  return buffer.toString().substring(0, buffer.length() - 2);
176  }
177 
183  @SuppressWarnings("unchecked")
184  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
185  private void initComponents() {
186  java.awt.GridBagConstraints gridBagConstraints;
187 
188  countsPanel = new javax.swing.JPanel();
189  contactsLabel = new javax.swing.JLabel();
190  messagesLabel = new javax.swing.JLabel();
191  callLogsLabel = new javax.swing.JLabel();
192  thumbnailCntLabel = new javax.swing.JLabel();
193  thumbnailsDataLabel = new javax.swing.JLabel();
194  messagesDataLabel = new javax.swing.JLabel();
195  callLogsDataLabel = new javax.swing.JLabel();
196  contactsDataLabel = new javax.swing.JLabel();
197  attachmentsLable = new javax.swing.JLabel();
198  attachmentDataLabel = new javax.swing.JLabel();
201 
202  setLayout(new java.awt.GridBagLayout());
203 
204  countsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.countsPanel.border.title"))); // NOI18N
205 
206  org.openide.awt.Mnemonics.setLocalizedText(contactsLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.contactsLabel.text")); // NOI18N
207 
208  org.openide.awt.Mnemonics.setLocalizedText(messagesLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.messagesLabel.text")); // NOI18N
209 
210  org.openide.awt.Mnemonics.setLocalizedText(callLogsLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.callLogsLabel.text")); // NOI18N
211 
212  org.openide.awt.Mnemonics.setLocalizedText(thumbnailCntLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.thumbnailCntLabel.text")); // NOI18N
213 
214  org.openide.awt.Mnemonics.setLocalizedText(thumbnailsDataLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.thumbnailsDataLabel.text")); // NOI18N
215 
216  org.openide.awt.Mnemonics.setLocalizedText(messagesDataLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.messagesDataLabel.text")); // NOI18N
217 
218  org.openide.awt.Mnemonics.setLocalizedText(callLogsDataLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.callLogsDataLabel.text")); // NOI18N
219 
220  org.openide.awt.Mnemonics.setLocalizedText(contactsDataLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.contactsDataLabel.text")); // NOI18N
221 
222  org.openide.awt.Mnemonics.setLocalizedText(attachmentsLable, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.attachmentsLable.text")); // NOI18N
223 
224  org.openide.awt.Mnemonics.setLocalizedText(attachmentDataLabel, org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.attachmentDataLabel.text")); // NOI18N
225 
226  javax.swing.GroupLayout countsPanelLayout = new javax.swing.GroupLayout(countsPanel);
227  countsPanel.setLayout(countsPanelLayout);
228  countsPanelLayout.setHorizontalGroup(
229  countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
230  .addGroup(countsPanelLayout.createSequentialGroup()
231  .addContainerGap()
232  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
233  .addComponent(messagesLabel)
234  .addComponent(callLogsLabel)
235  .addComponent(contactsLabel)
236  .addComponent(thumbnailCntLabel)
237  .addComponent(attachmentsLable))
238  .addGap(18, 18, 18)
239  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
240  .addComponent(attachmentDataLabel)
241  .addComponent(thumbnailsDataLabel)
242  .addComponent(contactsDataLabel)
243  .addComponent(callLogsDataLabel)
244  .addComponent(messagesDataLabel))
245  .addContainerGap(845, Short.MAX_VALUE))
246  );
247  countsPanelLayout.setVerticalGroup(
248  countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
249  .addGroup(countsPanelLayout.createSequentialGroup()
250  .addGap(7, 7, 7)
251  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
252  .addComponent(messagesLabel)
253  .addComponent(messagesDataLabel))
254  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
255  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
256  .addComponent(callLogsLabel)
257  .addComponent(callLogsDataLabel))
258  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
259  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
260  .addComponent(contactsLabel)
261  .addComponent(contactsDataLabel))
262  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
263  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
264  .addComponent(thumbnailCntLabel)
265  .addComponent(thumbnailsDataLabel))
266  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
267  .addGroup(countsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
268  .addComponent(attachmentsLable)
269  .addComponent(attachmentDataLabel)))
270  );
271 
272  gridBagConstraints = new java.awt.GridBagConstraints();
273  gridBagConstraints.gridx = 0;
274  gridBagConstraints.gridy = 0;
275  gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
276  gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
277  gridBagConstraints.weightx = 1.0;
278  add(countsPanel, gridBagConstraints);
279 
280  fileReferencesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.fileReferencesPanel.border.title"))); // NOI18N
281  gridBagConstraints = new java.awt.GridBagConstraints();
282  gridBagConstraints.gridx = 0;
283  gridBagConstraints.gridy = 1;
284  gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
285  gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
286  gridBagConstraints.weightx = 1.0;
287  gridBagConstraints.weighty = 1.0;
288  add(fileReferencesPanel, gridBagConstraints);
289 
290  caseReferencesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(SummaryViewer.class, "SummaryViewer.caseReferencesPanel.border.title"))); // NOI18N
291  gridBagConstraints = new java.awt.GridBagConstraints();
292  gridBagConstraints.gridx = 0;
293  gridBagConstraints.gridy = 2;
294  gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
295  gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
296  gridBagConstraints.weightx = 1.0;
297  gridBagConstraints.weighty = 1.0;
298  add(caseReferencesPanel, gridBagConstraints);
299  }// </editor-fold>//GEN-END:initComponents
300 
301 
302  // Variables declaration - do not modify//GEN-BEGIN:variables
303  private javax.swing.JLabel attachmentDataLabel;
304  private javax.swing.JLabel attachmentsLable;
305  private javax.swing.JLabel callLogsDataLabel;
306  private javax.swing.JLabel callLogsLabel;
308  private javax.swing.JLabel contactsDataLabel;
309  private javax.swing.JLabel contactsLabel;
310  private javax.swing.JPanel countsPanel;
312  private javax.swing.JLabel messagesDataLabel;
313  private javax.swing.JLabel messagesLabel;
314  private javax.swing.JLabel thumbnailCntLabel;
315  private javax.swing.JLabel thumbnailsDataLabel;
316  // End of variables declaration//GEN-END:variables
317 
318 }
org.sleuthkit.autopsy.communications.relationships.OutlineViewPanel caseReferencesPanel
org.sleuthkit.autopsy.communications.relationships.OutlineViewPanel fileReferencesPanel

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