Autopsy 4.22.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
SummaryPersonaPane.java
Go to the documentation of this file.
1/*
2 * Autopsy Forensic Browser
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 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 */
19package org.sleuthkit.autopsy.communications.relationships;
20
21import java.awt.CardLayout;
22import java.awt.Component;
23import java.awt.GridLayout;
24import java.awt.event.ActionEvent;
25import java.awt.event.ActionListener;
26import java.util.ArrayList;
27import java.util.Collection;
28import java.util.HashMap;
29import java.util.Iterator;
30import java.util.List;
31import java.util.Map;
32import java.util.logging.Level;
33import javax.swing.Box;
34import javax.swing.JButton;
35import javax.swing.JPanel;
36import org.openide.util.NbBundle;
37import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoAccount;
38import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoException;
39import org.sleuthkit.autopsy.centralrepository.datamodel.Persona;
40import org.sleuthkit.autopsy.centralrepository.datamodel.PersonaAccount;
41import org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsDialog;
42import org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsDialogCallback;
43import org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsMode;
44import org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsPanel;
45import org.sleuthkit.autopsy.coreutils.Logger;
46import org.sleuthkit.datamodel.Account;
47
51public final class SummaryPersonaPane extends javax.swing.JPanel {
52
53 private static final long serialVersionUID = 1L;
54
55 private final static Logger logger = Logger.getLogger(SummaryPersonaPane.class.getName());
56
57 private final Map<Component, Persona> personaMap;
60 private Account currentAccount = null;
61
65 SummaryPersonaPane() {
67 personaScrollPane.setViewportView(new JPanel());
68
69 personaMap = new HashMap<>();
70 }
71
75 void clearList() {
76 personaScrollPane.setViewportView(new JPanel());
77 personaMap.clear();
78 }
79
83 void showMessagePanel() {
84 CardLayout layout = (CardLayout) getLayout();
85 layout.show(this, "message");
86 }
87
93 void setMessage(String message) {
94 messageLabel.setText(message);
95 }
96
102 void updatePersonaList(Account account, CentralRepoAccount crAccount, List<Persona> personaList) {
103 JPanel panel = new JPanel();
104 currentCRAccount = crAccount;
105 currentAccount = account;
106
107 CardLayout layout = (CardLayout) getLayout();
108 if (personaList.isEmpty()) {
109 layout.show(this, "create");
110 } else {
111 panel.setLayout(new GridLayout(personaList.size() + 1, 1));
112 int maxWidth = 0;
113 List<PersonaPanel> panelList = new ArrayList<>();
114 for (Persona persona : personaList) {
115 PersonaPanel personaPanel = new PersonaPanel(persona);
116 JButton viewButton = personaPanel.getViewButton();
117 panel.add(personaPanel);
118
119 personaMap.put(viewButton, persona);
120 viewButton.addActionListener(viewButtonHandler);
121
122 panelList.add(personaPanel);
123 maxWidth = Math.max(personaPanel.getPersonaLabelPreferedWidth(), maxWidth);
124 }
125
126 //Set the preferred width of the labeles to the buttons line up.
127 if (panelList.size() > 1) {
128 for (PersonaPanel ppanel : panelList) {
129 ppanel.setPersonalLabelPreferredWidth(maxWidth);
130 }
131 }
132
133 panel.add(Box.createVerticalGlue());
134 personaScrollPane.setViewportView(panel);
135 layout.show(this, "persona");
136 }
137
138 }
139
144 final private class ViewButtonHandler implements ActionListener {
145
146 @Override
147 public void actionPerformed(ActionEvent e) {
148 Persona persona = personaMap.get((Component) e.getSource());
149 new PersonaDetailsDialog(SummaryPersonaPane.this,
151 }
152 }
153
158
159 @Override
160 public void callback(Persona persona) {
161 // nothing to do
162 }
163 }
164
170
171 @Override
172 public void callback(Persona persona) {
173 if (persona != null) {
174 List<Persona> list = new ArrayList<>();
175 list.add(persona);
176
177 CentralRepoAccount crAccount = null;
178 Collection<PersonaAccount> personaAccounts = null;
179 try {
180 personaAccounts = persona.getPersonaAccounts();
181 } catch (CentralRepoException ex) {
182 logger.log(Level.WARNING, String.format("Failed to get cr account from person %s (%d)", persona.getName(), persona.getId()), ex);
183 }
184
185 if (personaAccounts != null) {
186 Iterator<PersonaAccount> iterator = personaAccounts.iterator();
187 if (iterator.hasNext()) {
188 crAccount = iterator.next().getAccount();
189 }
190 }
191
192 updatePersonaList(currentAccount, crAccount, list);
193 }
194 }
195 }
196
202 @SuppressWarnings("unchecked")
203 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
204 private void initComponents() {
205 java.awt.GridBagConstraints gridBagConstraints;
206
207 personaScrollPane = new javax.swing.JScrollPane();
208 messagePane = new javax.swing.JPanel();
209 messageLabel = new javax.swing.JLabel();
210 createPersonaPanel = new javax.swing.JPanel();
211 noPersonaLabel = new javax.swing.JLabel();
212 createButton = new javax.swing.JButton();
213
214 setLayout(new java.awt.CardLayout());
215
216 personaScrollPane.setBorder(null);
217 add(personaScrollPane, "persona");
218
219 messagePane.setLayout(new java.awt.GridBagLayout());
220
221 org.openide.awt.Mnemonics.setLocalizedText(messageLabel, org.openide.util.NbBundle.getMessage(SummaryPersonaPane.class, "SummaryPersonaPane.messageLabel.text")); // NOI18N
222 messageLabel.setEnabled(false);
223 gridBagConstraints = new java.awt.GridBagConstraints();
224 gridBagConstraints.gridx = 0;
225 gridBagConstraints.gridy = 0;
226 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
227 gridBagConstraints.weighty = 1.0;
228 messagePane.add(messageLabel, gridBagConstraints);
229
230 add(messagePane, "message");
231
232 createPersonaPanel.setPreferredSize(new java.awt.Dimension(200, 100));
233 createPersonaPanel.setLayout(new java.awt.GridBagLayout());
234
235 org.openide.awt.Mnemonics.setLocalizedText(noPersonaLabel, org.openide.util.NbBundle.getMessage(SummaryPersonaPane.class, "SummaryPersonaPane.noPersonaLabel.text")); // NOI18N
236 gridBagConstraints = new java.awt.GridBagConstraints();
237 gridBagConstraints.gridx = 0;
238 gridBagConstraints.gridy = 0;
239 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
240 gridBagConstraints.weighty = 1.0;
241 gridBagConstraints.insets = new java.awt.Insets(7, 5, 0, 0);
242 createPersonaPanel.add(noPersonaLabel, gridBagConstraints);
243
244 org.openide.awt.Mnemonics.setLocalizedText(createButton, org.openide.util.NbBundle.getMessage(SummaryPersonaPane.class, "SummaryPersonaPane.createButton.text")); // NOI18N
245 createButton.setMargin(new java.awt.Insets(0, 5, 0, 5));
246 createButton.addActionListener(new java.awt.event.ActionListener() {
247 public void actionPerformed(java.awt.event.ActionEvent evt) {
248 createButtonActionPerformed(evt);
249 }
250 });
251 gridBagConstraints = new java.awt.GridBagConstraints();
252 gridBagConstraints.gridx = 1;
253 gridBagConstraints.gridy = 0;
254 gridBagConstraints.gridheight = 2;
255 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
256 gridBagConstraints.weightx = 1.0;
257 gridBagConstraints.weighty = 1.0;
258 gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 0);
259 createPersonaPanel.add(createButton, gridBagConstraints);
260
261 add(createPersonaPanel, "create");
262 }// </editor-fold>//GEN-END:initComponents
263
264 @NbBundle.Messages({
265 "# {0} - accountIdentifer",
266 "SummaryPersonaPane_not_account_in_cr=Unable to find an account with identifier {0} in the Central Repository."
267 })
268
269 private void createButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createButtonActionPerformed
270 PersonaDetailsDialog createPersonaDialog = new PersonaDetailsDialog(SummaryPersonaPane.this,
272
273 // Pre populate the persona name and accounts if we have them.
274 PersonaDetailsPanel personaPanel = createPersonaDialog.getDetailsPanel();
275 if (currentCRAccount != null) {
277
278 } else {
279 createPersonaDialog.setStartupPopupMessage(Bundle.SummaryPersonaPane_not_account_in_cr(currentAccount.getTypeSpecificID()));
280 }
281 personaPanel.setPersonaName(currentAccount.getTypeSpecificID());
282 // display the dialog now
283 createPersonaDialog.display();
284 }//GEN-LAST:event_createButtonActionPerformed
285
286
287 // Variables declaration - do not modify//GEN-BEGIN:variables
288 private javax.swing.JButton createButton;
289 private javax.swing.JPanel createPersonaPanel;
290 private javax.swing.JLabel messageLabel;
291 private javax.swing.JPanel messagePane;
292 private javax.swing.JLabel noPersonaLabel;
293 private javax.swing.JScrollPane personaScrollPane;
294 // End of variables declaration//GEN-END:variables
295}
boolean addAccount(CentralRepoAccount account, String justification, Persona.Confidence confidence)
synchronized static Logger getLogger(String name)
Definition Logger.java:124

Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.