mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-19 19:14:55 +00:00
user activity panel refactoring
This commit is contained in:
parent
fd0838f4b4
commit
03f6cd306a
@ -25,6 +25,7 @@ import java.util.Arrays;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.function.Function;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.openide.util.NbBundle.Messages;
|
import org.openide.util.NbBundle.Messages;
|
||||||
import org.sleuthkit.autopsy.datasourcesummary.datamodel.UserActivitySummary;
|
import org.sleuthkit.autopsy.datasourcesummary.datamodel.UserActivitySummary;
|
||||||
@ -72,26 +73,21 @@ import org.sleuthkit.datamodel.DataSource;
|
|||||||
public class UserActivityPanel extends BaseDataSourceSummaryPanel {
|
public class UserActivityPanel extends BaseDataSourceSummaryPanel {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private static final DateFormat DATETIME_FORMAT = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.getDefault());
|
private static final String DATETIME_FORMAT_STR = "yyyy/MM/dd HH:mm:ss";
|
||||||
|
private static final DateFormat DATETIME_FORMAT = new SimpleDateFormat(DATETIME_FORMAT_STR, Locale.getDefault());
|
||||||
private static final int TOP_PROGS_COUNT = 10;
|
private static final int TOP_PROGS_COUNT = 10;
|
||||||
private static final int TOP_DOMAINS_COUNT = 10;
|
private static final int TOP_DOMAINS_COUNT = 10;
|
||||||
private static final int TOP_SEARCHES_COUNT = 10;
|
private static final int TOP_SEARCHES_COUNT = 10;
|
||||||
private static final int TOP_ACCOUNTS_COUNT = 5;
|
private static final int TOP_ACCOUNTS_COUNT = 5;
|
||||||
private static final int TOP_DEVICES_COUNT = 10;
|
private static final int TOP_DEVICES_COUNT = 10;
|
||||||
|
|
||||||
/**
|
private final static Function<LastAccessedArtifact, ? extends DefaultCellModel> DATE_FUNCT = (lastAccessed) -> {
|
||||||
* Gets a string formatted date or returns empty string if the date is null.
|
return new DefaultCellModel(lastAccessed.getLastAccessed(), (dt) -> dt == null ? "" : DATETIME_FORMAT.format(dt), DATETIME_FORMAT_STR)
|
||||||
*
|
.setPopupMenu(getPopup(lastAccessed));
|
||||||
* @param date The date.
|
};
|
||||||
*
|
|
||||||
* @return The formatted date string or empty string if the date is null.
|
|
||||||
*/
|
|
||||||
private static String getFormatted(Date date) {
|
|
||||||
return date == null ? "" : DATETIME_FORMAT.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set up recent programs table
|
// set up recent programs table
|
||||||
private final TableTemplate<TopProgramsResult, DefaultCellModel<?>> TOP_PROGS_TEMPLATE = new TableTemplate<>(
|
private static final TableTemplate<TopProgramsResult, DefaultCellModel<?>> TOP_PROGS_TEMPLATE = new TableTemplate<>(
|
||||||
Arrays.asList(
|
Arrays.asList(
|
||||||
// program name column
|
// program name column
|
||||||
new ColumnModel<>(
|
new ColumnModel<>(
|
||||||
@ -126,300 +122,149 @@ public class UserActivityPanel extends BaseDataSourceSummaryPanel {
|
|||||||
// last run date column
|
// last run date column
|
||||||
new ColumnModel<>(
|
new ColumnModel<>(
|
||||||
Bundle.UserActivityPanel_TopProgramsTableModel_lastrun_header(),
|
Bundle.UserActivityPanel_TopProgramsTableModel_lastrun_header(),
|
||||||
(prog) -> {
|
DATE_FUNCT,
|
||||||
return new DefaultCellModel(getFormatted(prog.getLastAccessed()))
|
|
||||||
.setPopupMenu(getPopup(prog));
|
|
||||||
},
|
|
||||||
150)
|
150)
|
||||||
),
|
),
|
||||||
Bundle.UserActivityPanel_TopProgramsTableModel_tabName()
|
Bundle.UserActivityPanel_TopProgramsTableModel_tabName()
|
||||||
);
|
);
|
||||||
|
|
||||||
// set up recent domains table
|
// set up recent domains table
|
||||||
private final JTablePanel<TopDomainsResult> recentDomainsTable = JTablePanel.getJTablePanel(Arrays.asList(
|
private static final TableTemplate<TopDomainsResult, DefaultCellModel<?>> TOP_DOMAINS_TEMPLATE = new TableTemplate<>(
|
||||||
// domain column
|
Arrays.asList(
|
||||||
new ColumnModel<TopDomainsResult>(
|
// domain column
|
||||||
Bundle.UserActivityPanel_TopDomainsTableModel_domain_header(),
|
new ColumnModel<>(
|
||||||
(recentDomain) -> {
|
Bundle.UserActivityPanel_TopDomainsTableModel_domain_header(),
|
||||||
return new DefaultCellModel(recentDomain.getDomain())
|
(recentDomain) -> {
|
||||||
.setPopupMenu(getPopup(recentDomain));
|
return new DefaultCellModel(recentDomain.getDomain())
|
||||||
},
|
.setPopupMenu(getPopup(recentDomain));
|
||||||
250),
|
},
|
||||||
// count column
|
250),
|
||||||
new ColumnModel<>(
|
// count column
|
||||||
Bundle.UserActivityPanel_TopDomainsTableModel_count_header(),
|
new ColumnModel<>(
|
||||||
(recentDomain) -> {
|
Bundle.UserActivityPanel_TopDomainsTableModel_count_header(),
|
||||||
String visitTimes = recentDomain.getVisitTimes() == null ? "" : Long.toString(recentDomain.getVisitTimes());
|
(recentDomain) -> {
|
||||||
return new DefaultCellModel(visitTimes)
|
return new DefaultCellModel(
|
||||||
.setPopupMenu(getPopup(recentDomain));
|
recentDomain.getVisitTimes(),
|
||||||
},
|
(times) -> times == null ? "" : Long.toString(times))
|
||||||
100),
|
.setPopupMenu(getPopup(recentDomain));
|
||||||
// last accessed column
|
},
|
||||||
new ColumnModel<>(
|
100),
|
||||||
Bundle.UserActivityPanel_TopDomainsTableModel_lastAccess_header(),
|
// last accessed column
|
||||||
(recentDomain) -> {
|
new ColumnModel<>(
|
||||||
return new DefaultCellModel(getFormatted(recentDomain.getLastAccessed()))
|
Bundle.UserActivityPanel_TopDomainsTableModel_lastAccess_header(),
|
||||||
.setPopupMenu(getPopup(recentDomain));
|
DATE_FUNCT,
|
||||||
},
|
150)
|
||||||
150)
|
),
|
||||||
))
|
Bundle.UserActivityPanel_TopDomainsTableModel_tabName()
|
||||||
.setKeyFunction((domain) -> domain.getDomain());
|
);
|
||||||
|
|
||||||
// top web searches table
|
// top web searches table
|
||||||
private final JTablePanel<TopWebSearchResult> topWebSearchesTable = JTablePanel.getJTablePanel(Arrays.asList(
|
private static final TableTemplate<TopWebSearchResult, DefaultCellModel<?>> TOP_WEB_SEARCH_TEMPLATE = new TableTemplate<>(
|
||||||
// search string column
|
Arrays.asList(
|
||||||
new ColumnModel<TopWebSearchResult>(
|
// search string column
|
||||||
Bundle.UserActivityPanel_TopWebSearchTableModel_searchString_header(),
|
new ColumnModel<TopWebSearchResult>(
|
||||||
(webSearch) -> {
|
Bundle.UserActivityPanel_TopWebSearchTableModel_searchString_header(),
|
||||||
return new DefaultCellModel(webSearch.getSearchString())
|
(webSearch) -> {
|
||||||
.setPopupMenu(getPopup(webSearch));
|
return new DefaultCellModel(webSearch.getSearchString())
|
||||||
},
|
.setPopupMenu(getPopup(webSearch));
|
||||||
250
|
},
|
||||||
|
250
|
||||||
|
),
|
||||||
|
// last accessed
|
||||||
|
new ColumnModel<>(
|
||||||
|
Bundle.UserActivityPanel_TopWebSearchTableModel_dateAccessed_header(),
|
||||||
|
DATE_FUNCT,
|
||||||
|
150
|
||||||
|
),
|
||||||
|
// translated value
|
||||||
|
new ColumnModel<>(
|
||||||
|
Bundle.UserActivityPanel_TopWebSearchTableModel_translatedResult_header(),
|
||||||
|
(webSearch) -> {
|
||||||
|
return new DefaultCellModel(webSearch.getTranslatedResult())
|
||||||
|
.setPopupMenu(getPopup(webSearch));
|
||||||
|
},
|
||||||
|
250
|
||||||
|
)
|
||||||
),
|
),
|
||||||
// last accessed
|
Bundle.UserActivityPanel_TopWebSearchTableModel_tabName()
|
||||||
new ColumnModel<>(
|
);
|
||||||
Bundle.UserActivityPanel_TopWebSearchTableModel_dateAccessed_header(),
|
|
||||||
(webSearch) -> {
|
|
||||||
return new DefaultCellModel(getFormatted(webSearch.getLastAccessed()))
|
|
||||||
.setPopupMenu(getPopup(webSearch));
|
|
||||||
},
|
|
||||||
150
|
|
||||||
),
|
|
||||||
// translated value
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopWebSearchTableModel_translatedResult_header(),
|
|
||||||
(webSearch) -> {
|
|
||||||
return new DefaultCellModel(webSearch.getTranslatedResult())
|
|
||||||
.setPopupMenu(getPopup(webSearch));
|
|
||||||
},
|
|
||||||
250
|
|
||||||
)
|
|
||||||
))
|
|
||||||
.setKeyFunction((query) -> query.getSearchString());
|
|
||||||
|
|
||||||
// top devices attached table
|
// top devices attached table
|
||||||
private final JTablePanel<TopDeviceAttachedResult> topDevicesAttachedTable = JTablePanel.getJTablePanel(Arrays.asList(
|
private static final TableTemplate<TopDeviceAttachedResult, DefaultCellModel<?>> TOP_DEVICES_TEMPLATE = new TableTemplate<>(
|
||||||
// device id column
|
Arrays.asList(
|
||||||
new ColumnModel<TopDeviceAttachedResult>(
|
// device id column
|
||||||
Bundle.UserActivityPanel_TopDeviceAttachedTableModel_deviceId_header(),
|
new ColumnModel<>(
|
||||||
(device) -> {
|
Bundle.UserActivityPanel_TopDeviceAttachedTableModel_deviceId_header(),
|
||||||
return new DefaultCellModel(device.getDeviceId())
|
(device) -> {
|
||||||
.setPopupMenu(getPopup(device));
|
return new DefaultCellModel(device.getDeviceId())
|
||||||
},
|
.setPopupMenu(getPopup(device));
|
||||||
250
|
},
|
||||||
|
250
|
||||||
|
),
|
||||||
|
// last accessed
|
||||||
|
new ColumnModel<>(
|
||||||
|
Bundle.UserActivityPanel_TopDeviceAttachedTableModel_dateAccessed_header(),
|
||||||
|
DATE_FUNCT,
|
||||||
|
150
|
||||||
|
),
|
||||||
|
// make and model
|
||||||
|
new ColumnModel<>(
|
||||||
|
Bundle.UserActivityPanel_TopDeviceAttachedTableModel_makeModel_header(),
|
||||||
|
(device) -> {
|
||||||
|
String make = StringUtils.isBlank(device.getDeviceMake()) ? "" : device.getDeviceMake().trim();
|
||||||
|
String model = StringUtils.isBlank(device.getDeviceModel()) ? "" : device.getDeviceModel().trim();
|
||||||
|
String makeModelString = (make.isEmpty() || model.isEmpty())
|
||||||
|
? make + model
|
||||||
|
: String.format("%s - %s", make, model);
|
||||||
|
return new DefaultCellModel(makeModelString)
|
||||||
|
.setPopupMenu(getPopup(device));
|
||||||
|
},
|
||||||
|
250
|
||||||
|
)
|
||||||
),
|
),
|
||||||
// last accessed
|
Bundle.UserActivityPanel_TopDeviceAttachedTableModel_tabName()
|
||||||
new ColumnModel<>(
|
);
|
||||||
Bundle.UserActivityPanel_TopDeviceAttachedTableModel_dateAccessed_header(),
|
|
||||||
(device) -> {
|
|
||||||
return new DefaultCellModel(getFormatted(device.getLastAccessed()))
|
|
||||||
.setPopupMenu(getPopup(device));
|
|
||||||
},
|
|
||||||
150
|
|
||||||
),
|
|
||||||
// make and model
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopDeviceAttachedTableModel_makeModel_header(),
|
|
||||||
(device) -> {
|
|
||||||
String make = StringUtils.isBlank(device.getDeviceMake()) ? "" : device.getDeviceMake().trim();
|
|
||||||
String model = StringUtils.isBlank(device.getDeviceModel()) ? "" : device.getDeviceModel().trim();
|
|
||||||
String makeModelString = (make.isEmpty() || model.isEmpty())
|
|
||||||
? make + model
|
|
||||||
: String.format("%s - %s", make, model);
|
|
||||||
return new DefaultCellModel(makeModelString)
|
|
||||||
.setPopupMenu(getPopup(device));
|
|
||||||
},
|
|
||||||
250
|
|
||||||
)
|
|
||||||
))
|
|
||||||
.setKeyFunction((topDevice) -> topDevice.getDeviceId());
|
|
||||||
|
|
||||||
// top accounts table
|
// top accounts table
|
||||||
private final JTablePanel<TopAccountResult> topAccountsTable = JTablePanel.getJTablePanel(Arrays.asList(
|
private static final TableTemplate<TopAccountResult, DefaultCellModel<?>> TOP_ACCOUNTS_TEMPLATE = new TableTemplate<>(
|
||||||
// account type column
|
Arrays.asList(
|
||||||
new ColumnModel<TopAccountResult>(
|
// account type column
|
||||||
Bundle.UserActivityPanel_TopAccountTableModel_accountType_header(),
|
new ColumnModel<>(
|
||||||
(account) -> {
|
Bundle.UserActivityPanel_TopAccountTableModel_accountType_header(),
|
||||||
return new DefaultCellModel(account.getAccountType())
|
(account) -> {
|
||||||
.setPopupMenu(getPopup(account));
|
return new DefaultCellModel(account.getAccountType())
|
||||||
},
|
.setPopupMenu(getPopup(account));
|
||||||
250
|
},
|
||||||
|
250
|
||||||
|
),
|
||||||
|
// last accessed
|
||||||
|
new ColumnModel<>(
|
||||||
|
Bundle.UserActivityPanel_TopAccountTableModel_lastAccess_header(),
|
||||||
|
DATE_FUNCT,
|
||||||
|
150
|
||||||
|
)
|
||||||
),
|
),
|
||||||
// last accessed
|
Bundle.UserActivityPanel_TopAccountTableModel_tabName()
|
||||||
new ColumnModel<>(
|
);
|
||||||
Bundle.UserActivityPanel_TopAccountTableModel_lastAccess_header(),
|
|
||||||
(account) -> {
|
|
||||||
return new DefaultCellModel(getFormatted(account.getLastAccessed()))
|
|
||||||
.setPopupMenu(getPopup(account));
|
|
||||||
},
|
|
||||||
150
|
|
||||||
)
|
|
||||||
))
|
|
||||||
.setKeyFunction((topAccount) -> topAccount.getAccountType());
|
|
||||||
|
|
||||||
// set up recent programs table
|
// set up recent programs table
|
||||||
private final JTablePanel<TopProgramsResult> topProgramsTable = JTablePanel.getJTablePanel(Arrays.asList(
|
private final JTablePanel<TopProgramsResult> topProgramsTable = JTablePanel.getJTablePanel(TOP_PROGS_TEMPLATE)
|
||||||
// program name column
|
|
||||||
new ColumnModel<TopProgramsResult>(
|
|
||||||
Bundle.UserActivityPanel_TopProgramsTableModel_name_header(),
|
|
||||||
(prog) -> {
|
|
||||||
return new DefaultCellModel(prog.getProgramName())
|
|
||||||
.setTooltip(prog.getProgramPath())
|
|
||||||
.setPopupMenu(getPopup(prog));
|
|
||||||
},
|
|
||||||
250),
|
|
||||||
// program folder column
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopProgramsTableModel_folder_header(),
|
|
||||||
(prog) -> {
|
|
||||||
return new DefaultCellModel(
|
|
||||||
getShortFolderName(
|
|
||||||
prog.getProgramPath(),
|
|
||||||
prog.getProgramName()))
|
|
||||||
.setTooltip(prog.getProgramPath())
|
|
||||||
.setPopupMenu(getPopup(prog));
|
|
||||||
},
|
|
||||||
150),
|
|
||||||
// run count column
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopProgramsTableModel_count_header(),
|
|
||||||
(prog) -> {
|
|
||||||
String runTimes = prog.getRunTimes() == null ? "" : Long.toString(prog.getRunTimes());
|
|
||||||
return new DefaultCellModel(runTimes)
|
|
||||||
.setPopupMenu(getPopup(prog));
|
|
||||||
},
|
|
||||||
80),
|
|
||||||
// last run date column
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopProgramsTableModel_lastrun_header(),
|
|
||||||
(prog) -> {
|
|
||||||
return new DefaultCellModel(getFormatted(prog.getLastAccessed()))
|
|
||||||
.setPopupMenu(getPopup(prog));
|
|
||||||
},
|
|
||||||
150)
|
|
||||||
))
|
|
||||||
.setKeyFunction((prog) -> prog.getProgramPath() + ":" + prog.getProgramName());
|
.setKeyFunction((prog) -> prog.getProgramPath() + ":" + prog.getProgramName());
|
||||||
|
|
||||||
// set up recent domains table
|
// set up recent domains table
|
||||||
private final JTablePanel<TopDomainsResult> recentDomainsTable = JTablePanel.getJTablePanel(Arrays.asList(
|
private final JTablePanel<TopDomainsResult> recentDomainsTable = JTablePanel.getJTablePanel(TOP_DOMAINS_TEMPLATE)
|
||||||
// domain column
|
|
||||||
new ColumnModel<TopDomainsResult>(
|
|
||||||
Bundle.UserActivityPanel_TopDomainsTableModel_domain_header(),
|
|
||||||
(recentDomain) -> {
|
|
||||||
return new DefaultCellModel(recentDomain.getDomain())
|
|
||||||
.setPopupMenu(getPopup(recentDomain));
|
|
||||||
},
|
|
||||||
250),
|
|
||||||
// count column
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopDomainsTableModel_count_header(),
|
|
||||||
(recentDomain) -> {
|
|
||||||
String visitTimes = recentDomain.getVisitTimes() == null ? "" : Long.toString(recentDomain.getVisitTimes());
|
|
||||||
return new DefaultCellModel(visitTimes)
|
|
||||||
.setPopupMenu(getPopup(recentDomain));
|
|
||||||
},
|
|
||||||
100),
|
|
||||||
// last accessed column
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopDomainsTableModel_lastAccess_header(),
|
|
||||||
(recentDomain) -> {
|
|
||||||
return new DefaultCellModel(getFormatted(recentDomain.getLastAccessed()))
|
|
||||||
.setPopupMenu(getPopup(recentDomain));
|
|
||||||
},
|
|
||||||
150)
|
|
||||||
))
|
|
||||||
.setKeyFunction((domain) -> domain.getDomain());
|
.setKeyFunction((domain) -> domain.getDomain());
|
||||||
|
|
||||||
// top web searches table
|
// top web searches table
|
||||||
private final JTablePanel<TopWebSearchResult> topWebSearchesTable = JTablePanel.getJTablePanel(Arrays.asList(
|
private final JTablePanel<TopWebSearchResult> topWebSearchesTable = JTablePanel.getJTablePanel(TOP_WEB_SEARCH_TEMPLATE)
|
||||||
// search string column
|
|
||||||
new ColumnModel<TopWebSearchResult>(
|
|
||||||
Bundle.UserActivityPanel_TopWebSearchTableModel_searchString_header(),
|
|
||||||
(webSearch) -> {
|
|
||||||
return new DefaultCellModel(webSearch.getSearchString())
|
|
||||||
.setPopupMenu(getPopup(webSearch));
|
|
||||||
},
|
|
||||||
250
|
|
||||||
),
|
|
||||||
// last accessed
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopWebSearchTableModel_dateAccessed_header(),
|
|
||||||
(webSearch) -> {
|
|
||||||
return new DefaultCellModel(getFormatted(webSearch.getLastAccessed()))
|
|
||||||
.setPopupMenu(getPopup(webSearch));
|
|
||||||
},
|
|
||||||
150
|
|
||||||
),
|
|
||||||
// translated value
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopWebSearchTableModel_translatedResult_header(),
|
|
||||||
(webSearch) -> {
|
|
||||||
return new DefaultCellModel(webSearch.getTranslatedResult())
|
|
||||||
.setPopupMenu(getPopup(webSearch));
|
|
||||||
},
|
|
||||||
250
|
|
||||||
)
|
|
||||||
))
|
|
||||||
.setKeyFunction((query) -> query.getSearchString());
|
.setKeyFunction((query) -> query.getSearchString());
|
||||||
|
|
||||||
// top devices attached table
|
// top devices attached table
|
||||||
private final JTablePanel<TopDeviceAttachedResult> topDevicesAttachedTable = JTablePanel.getJTablePanel(Arrays.asList(
|
private final JTablePanel<TopDeviceAttachedResult> topDevicesAttachedTable = JTablePanel.getJTablePanel(TOP_DEVICES_TEMPLATE)
|
||||||
// device id column
|
|
||||||
new ColumnModel<TopDeviceAttachedResult>(
|
|
||||||
Bundle.UserActivityPanel_TopDeviceAttachedTableModel_deviceId_header(),
|
|
||||||
(device) -> {
|
|
||||||
return new DefaultCellModel(device.getDeviceId())
|
|
||||||
.setPopupMenu(getPopup(device));
|
|
||||||
},
|
|
||||||
250
|
|
||||||
),
|
|
||||||
// last accessed
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopDeviceAttachedTableModel_dateAccessed_header(),
|
|
||||||
(device) -> {
|
|
||||||
return new DefaultCellModel(getFormatted(device.getLastAccessed()))
|
|
||||||
.setPopupMenu(getPopup(device));
|
|
||||||
},
|
|
||||||
150
|
|
||||||
),
|
|
||||||
// make and model
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopDeviceAttachedTableModel_makeModel_header(),
|
|
||||||
(device) -> {
|
|
||||||
String make = StringUtils.isBlank(device.getDeviceMake()) ? "" : device.getDeviceMake().trim();
|
|
||||||
String model = StringUtils.isBlank(device.getDeviceModel()) ? "" : device.getDeviceModel().trim();
|
|
||||||
String makeModelString = (make.isEmpty() || model.isEmpty())
|
|
||||||
? make + model
|
|
||||||
: String.format("%s - %s", make, model);
|
|
||||||
return new DefaultCellModel(makeModelString)
|
|
||||||
.setPopupMenu(getPopup(device));
|
|
||||||
},
|
|
||||||
250
|
|
||||||
)
|
|
||||||
))
|
|
||||||
.setKeyFunction((topDevice) -> topDevice.getDeviceId());
|
.setKeyFunction((topDevice) -> topDevice.getDeviceId());
|
||||||
|
|
||||||
// top accounts table
|
// top accounts table
|
||||||
private final JTablePanel<TopAccountResult> topAccountsTable = JTablePanel.getJTablePanel(Arrays.asList(
|
private final JTablePanel<TopAccountResult> topAccountsTable = JTablePanel.getJTablePanel(TOP_ACCOUNTS_TEMPLATE)
|
||||||
// account type column
|
|
||||||
new ColumnModel<TopAccountResult>(
|
|
||||||
Bundle.UserActivityPanel_TopAccountTableModel_accountType_header(),
|
|
||||||
(account) -> {
|
|
||||||
return new DefaultCellModel(account.getAccountType())
|
|
||||||
.setPopupMenu(getPopup(account));
|
|
||||||
},
|
|
||||||
250
|
|
||||||
),
|
|
||||||
// last accessed
|
|
||||||
new ColumnModel<>(
|
|
||||||
Bundle.UserActivityPanel_TopAccountTableModel_lastAccess_header(),
|
|
||||||
(account) -> {
|
|
||||||
return new DefaultCellModel(getFormatted(account.getLastAccessed()))
|
|
||||||
.setPopupMenu(getPopup(account));
|
|
||||||
},
|
|
||||||
150
|
|
||||||
)
|
|
||||||
))
|
|
||||||
.setKeyFunction((topAccount) -> topAccount.getAccountType());
|
.setKeyFunction((topAccount) -> topAccount.getAccountType());
|
||||||
|
|
||||||
private final List<JTablePanel<?>> tables = Arrays.asList(
|
private final List<JTablePanel<?>> tables = Arrays.asList(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user