19 package org.sleuthkit.autopsy.communications.relationships;
21 import java.awt.CardLayout;
22 import java.util.List;
23 import java.util.concurrent.ExecutionException;
24 import java.util.logging.Level;
25 import javax.swing.DefaultListModel;
26 import javax.swing.JPanel;
27 import org.netbeans.swing.outline.DefaultOutlineModel;
28 import org.netbeans.swing.outline.Outline;
29 import org.openide.explorer.view.OutlineView;
30 import org.openide.nodes.AbstractNode;
31 import org.openide.nodes.Children;
32 import org.openide.util.Lookup;
33 import org.openide.util.NbBundle.Messages;
55 "SummaryViewer_TabTitle=Summary",
56 "SummaryViewer_FileRefNameColumn_Title=Path",
57 "SummaryViewer_CaseRefNameColumn_Title=Case Name",
58 "SummaryViewer_CentralRepository_Message=<Enable Central Respository to see Other Occurrences>",
59 "SummaryViewer_Creation_Date_Title=Creation Date",
60 "SummaryViewer_FileRef_Message=<Select a single account to see File References>",
61 "SummaryViewer_Device_Account_Description=This account was referenced by a device in the case.",
62 "SummaryViewer_Account_Description=This account represents a device in the case.",
63 "SummaryViewer_Account_Description_MuliSelect=Summary information is not available when multiple accounts are selected.",
64 "SummaryViewer_Country_Code=Country: ",
65 "SummaryViewer_Select_account_for_persona=<Select a single account to see Persona(s)>"
72 lookup = Lookup.getDefault();
75 fileRefListModel =
new DefaultListModel<>();
79 Outline outline = outlineView.getOutline();
80 outlineView.setPropertyColumns(
"creationDate", Bundle.SummaryViewer_Creation_Date_Title());
82 outline.setRootVisible(
false);
83 ((DefaultOutlineModel) outline.getOutlineModel()).setNodesColumnLabel(Bundle.SummaryViewer_CaseRefNameColumn_Title());
94 return Bundle.SummaryViewer_TabTitle();
111 CardLayout cardLayout = (CardLayout)
fileRefPane.getLayout();
114 fileRefListModel.removeAllElements();
118 if (info == null || info.
getAccounts().size() != 1) {
126 Account[] accountArray = info.
getAccounts().toArray(
new Account[1]);
127 Account account = accountArray[0];
129 if (account.getAccountType().getTypeName().contains(
"PHONE")) {
132 accountCountry.setText(Bundle.SummaryViewer_Country_Code() + countryCode);
140 if (account.getAccountType().equals(Account.Type.DEVICE)) {
146 AccountSummary summaryDetails =
new AccountSummary(account, info.
getArtifacts());
151 messagesDataLabel.setText(Integer.toString(summaryDetails.getMessagesCnt() + summaryDetails.getEmailCnt()));
176 super.setEnabled(enabled);
202 fileRefListModel.clear();
207 "SummaryViewer_Fetching_References=<Fetching File References>",
208 "SummaryViewer_Persona_CR_Message=<Enable Central Repository to view Personas>"
211 SummaryPanelWorker worker =
new SummaryPanelWorker(account) {
213 protected void done() {
215 SummaryPanelWorker.SummaryWorkerResults results =
get();
219 if (fileRefList != null) {
220 fileRefList.forEach(value -> {
221 fileRefListModel.addElement(value);
225 CardLayout cardLayout = (CardLayout)
fileRefPane.getLayout();
228 List<Persona> personaList = results.getPersonaList();
238 }
catch (InterruptedException | ExecutionException ex) {
239 logger.log(Level.WARNING, String.format((
"Failed to get data for account: %d"), account.getAccountID()), ex);
253 @SuppressWarnings(
"unchecked")
256 java.awt.GridBagConstraints gridBagConstraints;
278 javax.swing.JPanel fileRefScrolPanel =
new javax.swing.JPanel();
279 javax.swing.JScrollPane scrollPane =
new javax.swing.JScrollPane();
281 javax.swing.JPanel selectAccountPane =
new javax.swing.JPanel();
285 setLayout(
new java.awt.GridBagLayout());
289 org.openide.awt.Mnemonics.setLocalizedText(
accountLabel,
org.openide.util.NbBundle.getMessage(
SummaryViewer.class,
"SummaryViewer.accountLabel.text"));
290 gridBagConstraints =
new java.awt.GridBagConstraints();
291 gridBagConstraints.gridx = 0;
292 gridBagConstraints.gridy = 0;
293 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
294 gridBagConstraints.insets =
new java.awt.Insets(15, 9, 0, 9);
298 gridBagConstraints =
new java.awt.GridBagConstraints();
299 gridBagConstraints.gridx = 0;
300 gridBagConstraints.gridy = 1;
301 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
302 gridBagConstraints.insets =
new java.awt.Insets(0, 9, 0, 9);
306 gridBagConstraints =
new java.awt.GridBagConstraints();
307 gridBagConstraints.gridx = 0;
308 gridBagConstraints.gridy = 2;
309 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
310 gridBagConstraints.weightx = 1.0;
311 gridBagConstraints.insets =
new java.awt.Insets(15, 9, 15, 9);
314 gridBagConstraints =
new java.awt.GridBagConstraints();
315 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
318 countsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
org.openide.util.NbBundle.getMessage(
SummaryViewer.class,
"SummaryViewer.countsPanel.border.title")));
319 countsPanel.setLayout(
new java.awt.GridBagLayout());
322 gridBagConstraints =
new java.awt.GridBagConstraints();
323 gridBagConstraints.gridx = 0;
324 gridBagConstraints.gridy = 0;
325 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
326 gridBagConstraints.insets =
new java.awt.Insets(9, 15, 9, 15);
330 gridBagConstraints =
new java.awt.GridBagConstraints();
331 gridBagConstraints.gridx = 0;
332 gridBagConstraints.gridy = 1;
333 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
334 gridBagConstraints.insets =
new java.awt.Insets(0, 15, 9, 15);
338 gridBagConstraints =
new java.awt.GridBagConstraints();
339 gridBagConstraints.gridx = 0;
340 gridBagConstraints.gridy = 2;
341 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
342 gridBagConstraints.insets =
new java.awt.Insets(0, 15, 9, 15);
346 gridBagConstraints =
new java.awt.GridBagConstraints();
347 gridBagConstraints.gridx = 1;
348 gridBagConstraints.gridy = 2;
349 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
350 gridBagConstraints.insets =
new java.awt.Insets(0, 0, 9, 15);
354 gridBagConstraints =
new java.awt.GridBagConstraints();
355 gridBagConstraints.gridx = 1;
356 gridBagConstraints.gridy = 0;
357 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
358 gridBagConstraints.weightx = 1.0;
359 gridBagConstraints.insets =
new java.awt.Insets(9, 0, 9, 15);
363 gridBagConstraints =
new java.awt.GridBagConstraints();
364 gridBagConstraints.gridx = 1;
365 gridBagConstraints.gridy = 1;
366 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
367 gridBagConstraints.insets =
new java.awt.Insets(0, 0, 9, 15);
371 gridBagConstraints =
new java.awt.GridBagConstraints();
372 gridBagConstraints.gridx = 0;
373 gridBagConstraints.gridy = 3;
374 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
375 gridBagConstraints.insets =
new java.awt.Insets(0, 15, 9, 15);
379 gridBagConstraints =
new java.awt.GridBagConstraints();
380 gridBagConstraints.gridx = 1;
381 gridBagConstraints.gridy = 3;
382 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
383 gridBagConstraints.insets =
new java.awt.Insets(0, 0, 9, 15);
386 gridBagConstraints =
new java.awt.GridBagConstraints();
387 gridBagConstraints.gridx = 0;
388 gridBagConstraints.gridy = 1;
389 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
390 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
393 contanctsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
org.openide.util.NbBundle.getMessage(
SummaryViewer.class,
"SummaryViewer.contanctsPanel.border.title")));
398 gridBagConstraints =
new java.awt.GridBagConstraints();
399 gridBagConstraints.gridx = 0;
400 gridBagConstraints.gridy = 0;
401 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
402 gridBagConstraints.insets =
new java.awt.Insets(9, 15, 9, 15);
406 gridBagConstraints =
new java.awt.GridBagConstraints();
407 gridBagConstraints.gridx = 1;
408 gridBagConstraints.gridy = 0;
409 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
410 gridBagConstraints.weightx = 1.0;
411 gridBagConstraints.insets =
new java.awt.Insets(9, 9, 9, 15);
416 gridBagConstraints =
new java.awt.GridBagConstraints();
417 gridBagConstraints.gridx = 0;
418 gridBagConstraints.gridy = 1;
419 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
420 gridBagConstraints.insets =
new java.awt.Insets(0, 15, 9, 0);
424 gridBagConstraints =
new java.awt.GridBagConstraints();
425 gridBagConstraints.gridx = 1;
426 gridBagConstraints.gridy = 1;
427 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
428 gridBagConstraints.insets =
new java.awt.Insets(0, 9, 0, 0);
431 gridBagConstraints =
new java.awt.GridBagConstraints();
432 gridBagConstraints.gridx = 0;
433 gridBagConstraints.gridy = 2;
434 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
435 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
438 caseReferencesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
org.openide.util.NbBundle.getMessage(
SummaryViewer.class,
"SummaryViewer.caseReferencesPanel.border.title")));
439 gridBagConstraints =
new java.awt.GridBagConstraints();
440 gridBagConstraints.gridx = 0;
441 gridBagConstraints.gridy = 5;
442 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
443 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
444 gridBagConstraints.weightx = 1.0;
445 gridBagConstraints.weighty = 1.0;
446 gridBagConstraints.insets =
new java.awt.Insets(9, 0, 0, 0);
449 fileRefPane.setBorder(javax.swing.BorderFactory.createTitledBorder(
org.openide.util.NbBundle.getMessage(
SummaryViewer.class,
"SummaryViewer.fileRefPane.border.title")));
452 fileRefScrolPanel.setLayout(
new java.awt.BorderLayout());
454 fileRefList.setModel(
new javax.swing.AbstractListModel<String>() {
455 String[] strings = {
"Item 1",
"Item 2",
"Item 3",
"Item 4",
"Item 5" };
456 public int getSize() {
return strings.length; }
457 public String getElementAt(
int i) {
return strings[i]; }
461 fileRefScrolPanel.add(scrollPane, java.awt.BorderLayout.CENTER);
463 fileRefPane.add(fileRefScrolPanel,
"listPanelCard");
465 selectAccountPane.setLayout(
new java.awt.GridBagLayout());
471 fileRefPane.add(selectAccountPane,
"selectAccountCard");
473 gridBagConstraints =
new java.awt.GridBagConstraints();
474 gridBagConstraints.gridx = 0;
475 gridBagConstraints.gridy = 4;
476 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
477 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
478 gridBagConstraints.weighty = 1.0;
481 personaPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
org.openide.util.NbBundle.getMessage(
SummaryViewer.class,
"SummaryViewer.personaPanel.border.title")));
482 personaPanel.setMinimumSize(
new java.awt.Dimension(35, 75));
483 personaPanel.setPreferredSize(
new java.awt.Dimension(112, 75));
484 gridBagConstraints =
new java.awt.GridBagConstraints();
485 gridBagConstraints.gridy = 3;
486 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
javax.swing.JLabel accountCountry
javax.swing.JLabel contactsDataLabel
javax.swing.JLabel attachmentDataLabel
javax.swing.JLabel callLogsDataLabel
javax.swing.JLabel selectAccountFileRefLabel
javax.swing.JLabel messagesDataLabel
static final Logger logger
static final long serialVersionUID
javax.swing.JLabel referencesDataLabel
javax.swing.JLabel accoutDescriptionLabel
javax.swing.JLabel referencesLabel
void setEnabled(boolean enabled)
javax.swing.JLabel contactsLabel
javax.swing.JPanel contanctsPanel
javax.swing.JPanel countsPanel
void updateOtherAccountInfo(final Account account)
javax.swing.JPanel summaryPanel
javax.swing.JLabel callLogsLabel
void setEnabled(boolean enabled)
javax.swing.JList< String > fileRefList
javax.swing.JLabel messagesLabel
javax.swing.JLabel thumbnailsDataLabel
final DefaultListModel< String > fileRefListModel
javax.swing.JPanel fileRefPane
static String getCountryCode(String phoneNumber)
javax.swing.JPanel personaPanel
org.sleuthkit.autopsy.communications.relationships.OutlineViewPanel caseReferencesPanel
static String convertToInternational(String phoneNumber)
void hideOutlineView(String message)
javax.swing.JLabel attachmentsLabel
synchronized static Logger getLogger(String name)
javax.swing.JLabel thumbnailCntLabel
Set< BlackboardArtifact > getArtifacts()
OutlineView getOutlineView()
Set< Account > getAccounts()
void setSelectionInfo(SelectionInfo info)
javax.swing.JLabel accountLabel
static boolean isEnabled()