Autopsy  4.16.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
DomainSummaryPanel.java
Go to the documentation of this file.
1 /*
2  * Autopsy
3  *
4  * Copyright 2020 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 obtain 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.discovery.ui;
20 
21 import java.awt.Color;
22 import java.awt.Component;
23 import java.awt.Point;
24 import java.awt.event.MouseEvent;
25 import java.text.SimpleDateFormat;
26 import java.util.Date;
27 import java.util.Locale;
28 import javax.swing.ImageIcon;
29 import javax.swing.JComponent;
30 import javax.swing.JList;
31 import javax.swing.ListCellRenderer;
32 import org.openide.util.NbBundle;
33 
37 class DomainSummaryPanel extends javax.swing.JPanel implements ListCellRenderer<DomainWrapper> {
38 
39  private static final long serialVersionUID = 1L;
40  private static final Color SELECTION_COLOR = new Color(0, 120, 215);
41  private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy", Locale.getDefault());
42 
46  DomainSummaryPanel() {
47  initComponents();
48  domainNameLabel.setFont(domainNameLabel.getFont().deriveFont(domainNameLabel.getFont().getStyle(), domainNameLabel.getFont().getSize() + 6));
49  }
50 
56  @SuppressWarnings("unchecked")
57  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
58  private void initComponents() {
59 
60  domainNameLabel = new javax.swing.JLabel();
61  sampleImageLabel = new javax.swing.JLabel();
62  numberOfImagesLabel = new javax.swing.JLabel();
63  activityLabel = new javax.swing.JLabel();
64  pagesLabel = new javax.swing.JLabel();
65  filesDownloadedLabel = new javax.swing.JLabel();
66  totalVisitsLabel = new javax.swing.JLabel();
67 
68  setBorder(javax.swing.BorderFactory.createEtchedBorder());
69 
70  sampleImageLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
71  sampleImageLabel.setIconTextGap(0);
72  sampleImageLabel.setMaximumSize(new java.awt.Dimension(100, 100));
73  sampleImageLabel.setMinimumSize(new java.awt.Dimension(100, 100));
74  sampleImageLabel.setPreferredSize(new java.awt.Dimension(100, 100));
75 
76  org.openide.awt.Mnemonics.setLocalizedText(activityLabel, org.openide.util.NbBundle.getMessage(DomainSummaryPanel.class, "DomainSummaryPanel.activityLabel.text")); // NOI18N
77 
78  org.openide.awt.Mnemonics.setLocalizedText(pagesLabel, org.openide.util.NbBundle.getMessage(DomainSummaryPanel.class, "DomainSummaryPanel.pagesLabel.text")); // NOI18N
79 
80  org.openide.awt.Mnemonics.setLocalizedText(filesDownloadedLabel, org.openide.util.NbBundle.getMessage(DomainSummaryPanel.class, "DomainSummaryPanel.filesDownloadedLabel.text")); // NOI18N
81 
82  org.openide.awt.Mnemonics.setLocalizedText(totalVisitsLabel, org.openide.util.NbBundle.getMessage(DomainSummaryPanel.class, "DomainSummaryPanel.totalVisitsLabel.text")); // NOI18N
83 
84  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
85  this.setLayout(layout);
86  layout.setHorizontalGroup(
87  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
88  .addGroup(layout.createSequentialGroup()
89  .addContainerGap()
90  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
91  .addGroup(layout.createSequentialGroup()
92  .addComponent(domainNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 539, Short.MAX_VALUE)
93  .addGap(47, 47, 47))
94  .addComponent(activityLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
95  .addComponent(pagesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
96  .addComponent(filesDownloadedLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
97  .addComponent(totalVisitsLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
98  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
99  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
100  .addComponent(numberOfImagesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
101  .addComponent(sampleImageLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
102  .addContainerGap())
103  );
104  layout.setVerticalGroup(
105  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
106  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
107  .addContainerGap()
108  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
109  .addGroup(layout.createSequentialGroup()
110  .addComponent(numberOfImagesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
111  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
112  .addComponent(sampleImageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
113  .addGroup(layout.createSequentialGroup()
114  .addComponent(domainNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
115  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
116  .addComponent(activityLabel)
117  .addGap(11, 11, 11)
118  .addComponent(totalVisitsLabel)
119  .addGap(11, 11, 11)
120  .addComponent(pagesLabel)
121  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
122  .addComponent(filesDownloadedLabel)
123  .addGap(0, 0, Short.MAX_VALUE)))
124  .addContainerGap())
125  );
126  }// </editor-fold>//GEN-END:initComponents
127 
128 
129  // Variables declaration - do not modify//GEN-BEGIN:variables
130  private javax.swing.JLabel activityLabel;
131  private javax.swing.JLabel domainNameLabel;
132  private javax.swing.JLabel filesDownloadedLabel;
133  private javax.swing.JLabel numberOfImagesLabel;
134  private javax.swing.JLabel pagesLabel;
135  private javax.swing.JLabel sampleImageLabel;
136  private javax.swing.JLabel totalVisitsLabel;
137  // End of variables declaration//GEN-END:variables
138 
139  @NbBundle.Messages({"# {0} - startDate",
140  "# {1} - endDate",
141  "DomainSummaryPanel.activity.text=Activity: {0} to {1}",
142  "DomainSummaryPanel.pages.text=Pages in past 60 days: ",
143  "DomainSummaryPanel.totalPages.text=Total visits: ",
144  "DomainSummaryPanel.downloads.text=Files downloaded: ",
145  "DomainSummaryPanel.loadingImages.text=Loading thumbnail..."})
146  @Override
147  public Component getListCellRendererComponent(JList<? extends DomainWrapper> list, DomainWrapper value, int index, boolean isSelected, boolean cellHasFocus) {
148  domainNameLabel.setText(value.getResultDomain().getDomain());
149  String startDate = dateFormat.format(new Date(value.getResultDomain().getActivityStart() * 1000));
150  String endDate = dateFormat.format(new Date(value.getResultDomain().getActivityEnd() * 1000));
151  activityLabel.setText(Bundle.DomainSummaryPanel_activity_text(startDate, endDate));
152  totalVisitsLabel.setText(Bundle.DomainSummaryPanel_totalPages_text() + value.getResultDomain().getTotalVisits());
153  pagesLabel.setText(Bundle.DomainSummaryPanel_pages_text() + value.getResultDomain().getVisitsInLast60());
154  filesDownloadedLabel.setText(Bundle.DomainSummaryPanel_downloads_text() + value.getResultDomain().getFilesDownloaded());
155  if (value.getThumbnail() == null) {
156  numberOfImagesLabel.setText(Bundle.DomainSummaryPanel_loadingImages_text());
157  sampleImageLabel.setIcon(null);
158  } else {
159  numberOfImagesLabel.setText(null);
160  sampleImageLabel.setIcon(new ImageIcon(value.getThumbnail()));
161  }
162  setBackground(isSelected ? SELECTION_COLOR : list.getBackground());
163  return this;
164  }
165 
166  @Override
167  public String getToolTipText(MouseEvent event) {
168  if (event != null) {
169  //gets tooltip of internal panel item mouse is over
170  Point point = event.getPoint();
171  for (Component comp : getComponents()) {
172  if (DiscoveryUiUtils.isPointOnIcon(comp, point)) {
173  String toolTip = ((JComponent) comp).getToolTipText();
174  if (toolTip == null || toolTip.isEmpty()) {
175  return null;
176  } else {
177  return toolTip;
178  }
179  }
180  }
181  }
182  return null;
183  }
184 
185 }

Copyright © 2012-2020 Basis Technology. Generated on: Tue Sep 22 2020
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.