Autopsy  4.19.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
UserActivityPanel.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 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.datasourcesummary.ui;
20 
21 import java.awt.Component;
22 import java.text.DateFormat;
23 import java.text.SimpleDateFormat;
24 import java.util.Arrays;
25 import java.util.Date;
26 import java.util.List;
27 import java.util.Locale;
28 import java.util.function.Function;
29 import java.util.stream.Collectors;
30 import java.util.stream.Stream;
31 import org.apache.commons.lang.StringUtils;
32 import org.openide.util.NbBundle.Messages;
49 import org.sleuthkit.datamodel.DataSource;
50 
54 @Messages({
55  "UserActivityPanel_tab_title=User Activity",
56  "UserActivityPanel_TopProgramsTableModel_tabName=Recent Programs",
57  "UserActivityPanel_TopDomainsTableModel_tabName=Recent Domains",
58  "UserActivityPanel_TopWebSearchTableModel_tabName=Recent Web Searches",
59  "UserActivityPanel_TopDeviceAttachedTableModel_tabName=Recent Devices Attached",
60  "UserActivityPanel_TopAccountTableModel_tabName=Recent Account Types Used",
61  "UserActivityPanel_TopProgramsTableModel_name_header=Program",
62  "UserActivityPanel_TopProgramsTableModel_folder_header=Folder",
63  "UserActivityPanel_TopProgramsTableModel_count_header=Run Times",
64  "UserActivityPanel_TopProgramsTableModel_lastrun_header=Last Run",
65  "UserActivityPanel_TopDomainsTableModel_domain_header=Domain",
66  "UserActivityPanel_TopDomainsTableModel_count_header=Visits",
67  "UserActivityPanel_TopDomainsTableModel_lastAccess_header=Last Accessed",
68  "UserActivityPanel_TopWebSearchTableModel_searchString_header=Search String",
69  "UserActivityPanel_TopWebSearchTableModel_dateAccessed_header=Date Accessed",
70  "UserActivityPanel_TopWebSearchTableModel_translatedResult_header=Translated",
71  "UserActivityPanel_TopDeviceAttachedTableModel_deviceId_header=Device Id",
72  "UserActivityPanel_TopDeviceAttachedTableModel_makeModel_header=Make and Model",
73  "UserActivityPanel_TopDeviceAttachedTableModel_dateAccessed_header=Last Accessed",
74  "UserActivityPanel_TopAccountTableModel_accountType_header=Account Type",
75  "UserActivityPanel_TopAccountTableModel_lastAccess_header=Last Accessed",
76  "UserActivityPanel_noDataExists=No communication data exists"})
77 public class UserActivityPanel extends BaseDataSourceSummaryPanel {
78 
79  private static final long serialVersionUID = 1L;
80  private static final String DATETIME_FORMAT_STR = "yyyy/MM/dd HH:mm:ss";
81  private static final DateFormat DATETIME_FORMAT = new SimpleDateFormat(DATETIME_FORMAT_STR, Locale.getDefault());
82  private static final int TOP_PROGS_COUNT = 10;
83  private static final int TOP_DOMAINS_COUNT = 10;
84  private static final int TOP_SEARCHES_COUNT = 10;
85  private static final int TOP_ACCOUNTS_COUNT = 5;
86  private static final int TOP_DEVICES_COUNT = 10;
87 
88  // set up recent programs table
89  private final List<ColumnModel<TopProgramsResult, DefaultCellModel<?>>> topProgramsTemplate = Arrays.asList(
90  // program name column
91  new ColumnModel<>(
92  Bundle.UserActivityPanel_TopProgramsTableModel_name_header(),
93  (prog) -> {
94  return new DefaultCellModel<>(prog.getProgramName())
95  .setTooltip(prog.getProgramPath())
96  .setPopupMenu(getPopup(prog));
97  },
98  250),
99  // program folder column
100  new ColumnModel<>(
101  Bundle.UserActivityPanel_TopProgramsTableModel_folder_header(),
102  (prog) -> {
103  return new DefaultCellModel<>(
104  getShortFolderName(
105  prog.getProgramPath(),
106  prog.getProgramName()))
107  .setTooltip(prog.getProgramPath())
108  .setPopupMenu(getPopup(prog));
109  },
110  150),
111  // run count column
112  new ColumnModel<>(
113  Bundle.UserActivityPanel_TopProgramsTableModel_count_header(),
114  (prog) -> {
115  return new DefaultCellModel<>(prog.getRunTimes(), (num) -> num == null ? "" : num.toString())
116  .setPopupMenu(getPopup(prog));
117  },
118  80),
119  // last run date column
120  new ColumnModel<>(
121  Bundle.UserActivityPanel_TopProgramsTableModel_lastrun_header(),
122  getDateFunct(),
123  150)
124  );
125 
126  // set up recent domains table
127  private final List<ColumnModel<TopDomainsResult, DefaultCellModel<?>>> topDomainsTemplate = Arrays.asList(
128  // domain column
129  new ColumnModel<>(
130  Bundle.UserActivityPanel_TopDomainsTableModel_domain_header(),
131  (recentDomain) -> {
132  return new DefaultCellModel<>(recentDomain.getDomain())
133  .setPopupMenu(getPopup(recentDomain));
134  },
135  250),
136  // count column
137  new ColumnModel<>(
138  Bundle.UserActivityPanel_TopDomainsTableModel_count_header(),
139  (recentDomain) -> {
140  return new DefaultCellModel<>(recentDomain.getVisitTimes(), (num) -> num == null ? "" : num.toString())
141  .setPopupMenu(getPopup(recentDomain));
142  },
143  100),
144  // last accessed column
145  new ColumnModel<>(
146  Bundle.UserActivityPanel_TopDomainsTableModel_lastAccess_header(),
147  getDateFunct(),
148  150)
149  );
150 
151  // top web searches table
152  private final List<ColumnModel<TopWebSearchResult, DefaultCellModel<?>>> topWebSearchesTemplate = Arrays.asList(
153  // search string column
154  new ColumnModel<>(
155  Bundle.UserActivityPanel_TopWebSearchTableModel_searchString_header(),
156  (webSearch) -> {
157  return new DefaultCellModel<>(webSearch.getSearchString())
158  .setPopupMenu(getPopup(webSearch));
159  },
160  250
161  ),
162  // last accessed
163  new ColumnModel<>(
164  Bundle.UserActivityPanel_TopWebSearchTableModel_dateAccessed_header(),
165  getDateFunct(),
166  150
167  ),
168  // translated value
169  new ColumnModel<>(
170  Bundle.UserActivityPanel_TopWebSearchTableModel_translatedResult_header(),
171  (webSearch) -> {
172  return new DefaultCellModel<>(webSearch.getTranslatedResult())
173  .setPopupMenu(getPopup(webSearch));
174  },
175  250
176  )
177  );
178 
179  // top devices attached table
180  private final List<ColumnModel<TopDeviceAttachedResult, DefaultCellModel<?>>> topDevicesTemplate = Arrays.asList(
181  // device id column
182  new ColumnModel<>(
183  Bundle.UserActivityPanel_TopDeviceAttachedTableModel_deviceId_header(),
184  (device) -> {
185  return new DefaultCellModel<>(device.getDeviceId())
186  .setPopupMenu(getPopup(device));
187  },
188  250
189  ),
190  // last accessed
191  new ColumnModel<>(
192  Bundle.UserActivityPanel_TopDeviceAttachedTableModel_dateAccessed_header(),
193  getDateFunct(),
194  150
195  ),
196  // make and model
197  new ColumnModel<>(
198  Bundle.UserActivityPanel_TopDeviceAttachedTableModel_makeModel_header(),
199  (device) -> {
200  String make = StringUtils.isBlank(device.getDeviceMake()) ? "" : device.getDeviceMake().trim();
201  String model = StringUtils.isBlank(device.getDeviceModel()) ? "" : device.getDeviceModel().trim();
202  String makeModelString = (make.isEmpty() || model.isEmpty())
203  ? make + model
204  : String.format("%s - %s", make, model);
205  return new DefaultCellModel<>(makeModelString)
206  .setPopupMenu(getPopup(device));
207  },
208  250
209  )
210  );
211 
212  // top accounts table
213  private final List<ColumnModel<TopAccountResult, DefaultCellModel<?>>> topAccountsTemplate = Arrays.asList(
214  // account type column
215  new ColumnModel<>(
216  Bundle.UserActivityPanel_TopAccountTableModel_accountType_header(),
217  (account) -> {
218  return new DefaultCellModel<>(account.getAccountType())
219  .setPopupMenu(getPopup(account));
220  },
221  250
222  ),
223  // last accessed
224  new ColumnModel<>(
225  Bundle.UserActivityPanel_TopAccountTableModel_lastAccess_header(),
226  getDateFunct(),
227  150
228  )
229  );
230 
231  // set up recent programs table
232  private final JTablePanel<TopProgramsResult> topProgramsTable = JTablePanel.getJTablePanel(topProgramsTemplate)
233  .setKeyFunction((prog) -> prog.getProgramPath() + ":" + prog.getProgramName());
234 
235  // set up recent domains table
236  private final JTablePanel<TopDomainsResult> recentDomainsTable = JTablePanel.getJTablePanel(topDomainsTemplate)
237  .setKeyFunction((domain) -> domain.getDomain());
238 
239  // top web searches table
240  private final JTablePanel<TopWebSearchResult> topWebSearchesTable = JTablePanel.getJTablePanel(topWebSearchesTemplate)
241  .setKeyFunction((query) -> query.getSearchString());
242 
243  // top devices attached table
244  private final JTablePanel<TopDeviceAttachedResult> topDevicesAttachedTable = JTablePanel.getJTablePanel(topDevicesTemplate)
245  .setKeyFunction((topDevice) -> topDevice.getDeviceId());
246 
247  // top accounts table
248  private final JTablePanel<TopAccountResult> topAccountsTable = JTablePanel.getJTablePanel(topAccountsTemplate)
249  .setKeyFunction((topAccount) -> topAccount.getAccountType());
250 
256 
257  private final List<JTablePanel<?>> tables = Arrays.asList(
258  topProgramsTable,
259  recentDomainsTable,
260  topWebSearchesTable,
261  topDevicesAttachedTable,
262  topAccountsTable
263  );
264 
265  private final IngestRunningLabel ingestRunningLabel = new IngestRunningLabel();
266 
267  private final List<DataFetchComponents<DataSource, ?>> dataFetchComponents;
269 
273  public UserActivityPanel() {
274  this(new UserActivitySummary());
275  }
276 
283  public UserActivityPanel(UserActivitySummary userActivityData) {
284  super(userActivityData);
285  this.userActivityData = userActivityData;
286 
287  this.topProgramsFetcher = (dataSource) -> userActivityData.getTopPrograms(dataSource, TOP_PROGS_COUNT);
288  this.topDomainsFetcher = (dataSource) -> userActivityData.getRecentDomains(dataSource, TOP_DOMAINS_COUNT);
289  this.topWebSearchesFetcher = (dataSource) -> userActivityData.getMostRecentWebSearches(dataSource, TOP_SEARCHES_COUNT);
290  this.topDevicesAttachedFetcher = (dataSource) -> userActivityData.getRecentDevices(dataSource, TOP_DEVICES_COUNT);
291  this.topAccountsFetcher = (dataSource) -> userActivityData.getRecentAccounts(dataSource, TOP_ACCOUNTS_COUNT);
292 
293  // set up data acquisition methods
294  this.dataFetchComponents = Arrays.asList(
295  // top programs query
296  new DataFetchComponents<DataSource, List<TopProgramsResult>>(
297  topProgramsFetcher,
298  (result) -> topProgramsTable.showDataFetchResult(result)),
299  // top domains query
300  new DataFetchComponents<DataSource, List<TopDomainsResult>>(
301  topDomainsFetcher,
302  (result) -> recentDomainsTable.showDataFetchResult(result)),
303  // top web searches query
304  new DataFetchComponents<DataSource, List<TopWebSearchResult>>(
305  topWebSearchesFetcher,
306  (result) -> topWebSearchesTable.showDataFetchResult(result)),
307  // top devices query
308  new DataFetchComponents<DataSource, List<TopDeviceAttachedResult>>(
309  topDevicesAttachedFetcher,
310  (result) -> topDevicesAttachedTable.showDataFetchResult(result)),
311  // top accounts query
312  new DataFetchComponents<DataSource, List<TopAccountResult>>(
313  topAccountsFetcher,
314  (result) -> topAccountsTable.showDataFetchResult(result))
315  );
316 
317  initComponents();
318  }
319 
320  private <T extends LastAccessedArtifact> Function<T, DefaultCellModel<?>> getDateFunct() {
321  return (T lastAccessed) -> {
322  Function<Date, String> dateParser = (dt) -> dt == null ? "" : DATETIME_FORMAT.format(dt);
323  return new DefaultCellModel<>(lastAccessed.getLastAccessed(), dateParser, DATETIME_FORMAT_STR)
324  .setPopupMenu(getPopup(lastAccessed));
325  };
326  }
327 
337  private List<MenuItem> getPopup(LastAccessedArtifact record) {
338  return record == null ? null : Arrays.asList(getArtifactNavigateItem(record.getArtifact()));
339  }
340 
349  private String getShortFolderName(String path, String appName) {
350  return this.userActivityData.getShortFolderName(path, appName);
351  }
352 
353  @Override
354  protected void fetchInformation(DataSource dataSource) {
355  fetchInformation(dataFetchComponents, dataSource);
356  }
357 
358  @Override
359  protected void onNewDataSource(DataSource dataSource) {
360  onNewDataSource(dataFetchComponents, tables, dataSource);
361  }
362 
363  @Override
364  public void close() {
365  ingestRunningLabel.unregister();
366  super.close();
367  }
368 
369  @Override
370  List<ExcelExport.ExcelSheetExport> getExports(DataSource dataSource) {
371  return Stream.of(
372  getTableExport(topProgramsFetcher, topProgramsTemplate, Bundle.UserActivityPanel_TopProgramsTableModel_tabName(), dataSource),
373  getTableExport(topDomainsFetcher, topDomainsTemplate, Bundle.UserActivityPanel_TopDomainsTableModel_tabName(), dataSource),
374  getTableExport(topWebSearchesFetcher, topWebSearchesTemplate, Bundle.UserActivityPanel_TopWebSearchTableModel_tabName(), dataSource),
375  getTableExport(topDevicesAttachedFetcher, topDevicesTemplate, Bundle.UserActivityPanel_TopDeviceAttachedTableModel_tabName(), dataSource),
376  getTableExport(topAccountsFetcher, topAccountsTemplate, Bundle.UserActivityPanel_TopAccountTableModel_tabName(), dataSource))
377  .filter(sheet -> sheet != null)
378  .collect(Collectors.toList());
379  }
380 
386  @SuppressWarnings("unchecked")
387  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
388  private void initComponents() {
389 
390  javax.swing.JScrollPane contentScrollPane = new javax.swing.JScrollPane();
391  javax.swing.JPanel contentPanel = new javax.swing.JPanel();
392  javax.swing.JPanel ingestRunningPanel = ingestRunningLabel;
393  javax.swing.JLabel programsRunLabel = new javax.swing.JLabel();
394  javax.swing.Box.Filler filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2));
395  javax.swing.JPanel topProgramsTablePanel = topProgramsTable;
396  javax.swing.JLabel rightClickForMoreOptions1 = new javax.swing.JLabel();
397  javax.swing.Box.Filler filler3 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 20), new java.awt.Dimension(0, 20), new java.awt.Dimension(0, 20));
398  javax.swing.JLabel recentDomainsLabel = new javax.swing.JLabel();
399  javax.swing.Box.Filler filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2));
400  javax.swing.JPanel recentDomainsTablePanel = recentDomainsTable;
401  javax.swing.JLabel rightClickForMoreOptions2 = new javax.swing.JLabel();
402  javax.swing.Box.Filler filler4 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 20), new java.awt.Dimension(0, 20), new java.awt.Dimension(0, 20));
403  javax.swing.JLabel topWebSearchLabel = new javax.swing.JLabel();
404  javax.swing.Box.Filler filler5 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2));
405  javax.swing.JPanel topWebSearches = topWebSearchesTable;
406  javax.swing.JLabel rightClickForMoreOptions3 = new javax.swing.JLabel();
407  javax.swing.Box.Filler filler6 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 20), new java.awt.Dimension(0, 20), new java.awt.Dimension(0, 20));
408  javax.swing.JLabel topDevicesAttachedLabel = new javax.swing.JLabel();
409  javax.swing.Box.Filler filler7 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2));
410  javax.swing.JPanel recentDevicesAttached = topDevicesAttachedTable;
411  javax.swing.JLabel rightClickForMoreOptions4 = new javax.swing.JLabel();
412  javax.swing.Box.Filler filler8 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 20), new java.awt.Dimension(0, 20), new java.awt.Dimension(0, 20));
413  javax.swing.JLabel recentAccountsLabel = new javax.swing.JLabel();
414  javax.swing.Box.Filler filler9 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2), new java.awt.Dimension(0, 2));
415  javax.swing.JPanel topAccounts = topAccountsTable;
416  javax.swing.JLabel rightClickForMoreOptions5 = new javax.swing.JLabel();
417 
418  setLayout(new java.awt.BorderLayout());
419 
420  contentScrollPane.setMaximumSize(null);
421  contentScrollPane.setMinimumSize(null);
422 
423  contentPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10));
424  contentPanel.setMaximumSize(new java.awt.Dimension(32767, 450));
425  contentPanel.setMinimumSize(new java.awt.Dimension(10, 450));
426  contentPanel.setLayout(new javax.swing.BoxLayout(contentPanel, javax.swing.BoxLayout.PAGE_AXIS));
427 
428  ingestRunningPanel.setAlignmentX(0.0F);
429  ingestRunningPanel.setMaximumSize(new java.awt.Dimension(32767, 25));
430  ingestRunningPanel.setMinimumSize(new java.awt.Dimension(10, 25));
431  ingestRunningPanel.setPreferredSize(new java.awt.Dimension(10, 25));
432  contentPanel.add(ingestRunningPanel);
433 
434  programsRunLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
435  org.openide.awt.Mnemonics.setLocalizedText(programsRunLabel, org.openide.util.NbBundle.getMessage(UserActivityPanel.class, "UserActivityPanel.programsRunLabel.text")); // NOI18N
436  programsRunLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
437  contentPanel.add(programsRunLabel);
438  contentPanel.add(filler1);
439 
440  topProgramsTablePanel.setAlignmentX(0.0F);
441  topProgramsTablePanel.setMaximumSize(new java.awt.Dimension(32767, 106));
442  topProgramsTablePanel.setMinimumSize(new java.awt.Dimension(10, 106));
443  topProgramsTablePanel.setPreferredSize(new java.awt.Dimension(10, 106));
444  contentPanel.add(topProgramsTablePanel);
445 
446  org.openide.awt.Mnemonics.setLocalizedText(rightClickForMoreOptions1, org.openide.util.NbBundle.getMessage(UserActivityPanel.class, "UserActivityPanel.rightClickForMoreOptions1.text")); // NOI18N
447  contentPanel.add(rightClickForMoreOptions1);
448  contentPanel.add(filler3);
449 
450  recentDomainsLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
451  org.openide.awt.Mnemonics.setLocalizedText(recentDomainsLabel, org.openide.util.NbBundle.getMessage(UserActivityPanel.class, "UserActivityPanel.recentDomainsLabel.text")); // NOI18N
452  contentPanel.add(recentDomainsLabel);
453  contentPanel.add(filler2);
454 
455  recentDomainsTablePanel.setAlignmentX(0.0F);
456  recentDomainsTablePanel.setMaximumSize(new java.awt.Dimension(32767, 106));
457  recentDomainsTablePanel.setMinimumSize(new java.awt.Dimension(10, 106));
458  recentDomainsTablePanel.setPreferredSize(new java.awt.Dimension(10, 106));
459  contentPanel.add(recentDomainsTablePanel);
460 
461  org.openide.awt.Mnemonics.setLocalizedText(rightClickForMoreOptions2, org.openide.util.NbBundle.getMessage(UserActivityPanel.class, "UserActivityPanel.rightClickForMoreOptions2.text")); // NOI18N
462  contentPanel.add(rightClickForMoreOptions2);
463  contentPanel.add(filler4);
464 
465  topWebSearchLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
466  org.openide.awt.Mnemonics.setLocalizedText(topWebSearchLabel, org.openide.util.NbBundle.getMessage(UserActivityPanel.class, "UserActivityPanel.topWebSearchLabel.text")); // NOI18N
467  contentPanel.add(topWebSearchLabel);
468  contentPanel.add(filler5);
469 
470  topWebSearches.setAlignmentX(0.0F);
471  topWebSearches.setMaximumSize(new java.awt.Dimension(32767, 106));
472  topWebSearches.setMinimumSize(new java.awt.Dimension(10, 106));
473  topWebSearches.setPreferredSize(new java.awt.Dimension(10, 106));
474  contentPanel.add(topWebSearches);
475 
476  org.openide.awt.Mnemonics.setLocalizedText(rightClickForMoreOptions3, org.openide.util.NbBundle.getMessage(UserActivityPanel.class, "UserActivityPanel.rightClickForMoreOptions3.text")); // NOI18N
477  contentPanel.add(rightClickForMoreOptions3);
478  contentPanel.add(filler6);
479 
480  topDevicesAttachedLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
481  org.openide.awt.Mnemonics.setLocalizedText(topDevicesAttachedLabel, org.openide.util.NbBundle.getMessage(UserActivityPanel.class, "UserActivityPanel.topDevicesAttachedLabel.text")); // NOI18N
482  contentPanel.add(topDevicesAttachedLabel);
483  contentPanel.add(filler7);
484 
485  recentDevicesAttached.setAlignmentX(0.0F);
486  recentDevicesAttached.setMaximumSize(new java.awt.Dimension(32767, 106));
487  recentDevicesAttached.setMinimumSize(new java.awt.Dimension(10, 106));
488  recentDevicesAttached.setPreferredSize(new java.awt.Dimension(10, 106));
489  contentPanel.add(recentDevicesAttached);
490 
491  org.openide.awt.Mnemonics.setLocalizedText(rightClickForMoreOptions4, org.openide.util.NbBundle.getMessage(UserActivityPanel.class, "UserActivityPanel.rightClickForMoreOptions4.text")); // NOI18N
492  contentPanel.add(rightClickForMoreOptions4);
493  contentPanel.add(filler8);
494 
495  recentAccountsLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
496  org.openide.awt.Mnemonics.setLocalizedText(recentAccountsLabel, org.openide.util.NbBundle.getMessage(UserActivityPanel.class, "UserActivityPanel.recentAccountsLabel.text")); // NOI18N
497  contentPanel.add(recentAccountsLabel);
498  contentPanel.add(filler9);
499 
500  topAccounts.setAlignmentX(0.0F);
501  topAccounts.setMaximumSize(new java.awt.Dimension(32767, 106));
502  topAccounts.setMinimumSize(new java.awt.Dimension(10, 106));
503  topAccounts.setPreferredSize(new java.awt.Dimension(10, 106));
504  contentPanel.add(topAccounts);
505 
506  org.openide.awt.Mnemonics.setLocalizedText(rightClickForMoreOptions5, org.openide.util.NbBundle.getMessage(UserActivityPanel.class, "UserActivityPanel.rightClickForMoreOptions5.text")); // NOI18N
507  contentPanel.add(rightClickForMoreOptions5);
508 
509  contentScrollPane.setViewportView(contentPanel);
510 
511  add(contentScrollPane, java.awt.BorderLayout.CENTER);
512  }// </editor-fold>//GEN-END:initComponents
513 
514  // Variables declaration - do not modify//GEN-BEGIN:variables
515  // End of variables declaration//GEN-END:variables
516 }
final List< DataFetchComponents< DataSource,?> > dataFetchComponents
final DataFetcher< DataSource, List< TopDeviceAttachedResult > > topDevicesAttachedFetcher
List< MenuItem > getPopup(LastAccessedArtifact record)
final DataFetcher< DataSource, List< TopWebSearchResult > > topWebSearchesFetcher
List< TopAccountResult > getRecentAccounts(DataSource dataSource, int count)
final DataFetcher< DataSource, List< TopDomainsResult > > topDomainsFetcher
final DataFetcher< DataSource, List< TopProgramsResult > > topProgramsFetcher
void showDataFetchResult(DataFetchResult< T > result, String errorMessage, String noResultsMessage)
List< TopWebSearchResult > getMostRecentWebSearches(DataSource dataSource, int count)
final DataFetcher< DataSource, List< TopAccountResult > > topAccountsFetcher
static< T, CextendsGuiCellModel > JTablePanel< T > getJTablePanel(List< ColumnModel< T, C >> columns)
List< TopDeviceAttachedResult > getRecentDevices(DataSource dataSource, int count)
List< TopProgramsResult > getTopPrograms(DataSource dataSource, int count)
List< TopDomainsResult > getRecentDomains(DataSource dataSource, int count)

Copyright © 2012-2021 Basis Technology. Generated on: Fri Aug 6 2021
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.