19 package org.sleuthkit.autopsy.datasourcesummary.ui;
21 import java.awt.event.ActionEvent;
22 import java.util.ArrayList;
23 import java.util.List;
24 import java.util.Observable;
25 import java.util.Observer;
26 import javax.swing.Action;
27 import org.openide.nodes.AbstractNode;
28 import org.openide.nodes.ChildFactory;
29 import org.openide.nodes.Children;
30 import org.openide.nodes.Node;
31 import org.openide.nodes.Sheet;
32 import org.openide.util.NbBundle.Messages;
42 final class DataSourceSummaryNode
extends AbstractNode {
44 private final static Observable closeDialogObservable =
new Observable() {
46 public void notifyObservers() {
50 super.notifyObservers();
60 DataSourceSummaryNode(List<DataSourceSummary> dataSourceList) {
61 super(Children.create(
new DataSourceSummaryChildren(dataSourceList),
true));
69 void addObserver(Observer observer) {
70 closeDialogObservable.addObserver(observer);
77 static final class DataSourceSummaryChildren
extends ChildFactory<DataSourceSummary> {
79 private final List<DataSourceSummary> dataSourceList;
88 DataSourceSummaryChildren(List<DataSourceSummary> dataSourceList) {
89 this.dataSourceList = dataSourceList;
93 protected boolean createKeys(List<DataSourceSummary> list) {
94 if (dataSourceList != null && !dataSourceList.isEmpty()) {
95 list.addAll(dataSourceList);
101 protected Node createNodeForKey(DataSourceSummary key) {
102 return new DataSourceSummaryEntryNode(key);
109 static final class DataSourceSummaryEntryNode
extends AbstractNode {
111 private final DataSource dataSource;
112 private final String status;
113 private final String type;
114 private final long filesCount;
115 private final long resultsCount;
116 private final long tagsCount;
125 DataSourceSummaryEntryNode(DataSourceSummary dataSourceSummary) {
126 super(Children.LEAF);
127 dataSource = dataSourceSummary.getDataSource();
128 status = dataSourceSummary.getIngestStatus() == null ?
"" : dataSourceSummary.getIngestStatus().getDisplayName();
129 type = dataSourceSummary.getType();
130 filesCount = dataSourceSummary.getFilesCount();
131 resultsCount = dataSourceSummary.getResultsCount();
132 tagsCount = dataSourceSummary.getTagsCount();
133 super.setName(dataSource.getName());
134 setName(dataSource.getName());
135 setDisplayName(dataSource.getName());
143 DataSource getDataSource() {
147 @Messages({
"DataSourceSummaryNode.column.dataSourceName.header=Data Source Name",
148 "DataSourceSummaryNode.column.status.header=Ingest Status",
149 "DataSourceSummaryNode.column.type.header=Type",
150 "DataSourceSummaryNode.column.files.header=Files",
151 "DataSourceSummaryNode.column.results.header=Artifacts",
152 "DataSourceSummaryNode.column.tags.header=Tags"})
154 protected Sheet createSheet() {
155 Sheet sheet = super.createSheet();
156 Sheet.Set sheetSet = sheet.get(Sheet.PROPERTIES);
157 if (sheetSet == null) {
158 sheetSet = Sheet.createPropertiesSet();
161 sheetSet.put(
new NodeProperty<>(Bundle.DataSourceSummaryNode_column_dataSourceName_header(), Bundle.DataSourceSummaryNode_column_dataSourceName_header(), Bundle.DataSourceSummaryNode_column_dataSourceName_header(),
163 sheetSet.put(
new NodeProperty<>(Bundle.DataSourceSummaryNode_column_status_header(), Bundle.DataSourceSummaryNode_column_status_header(), Bundle.DataSourceSummaryNode_column_status_header(), status));
164 sheetSet.put(
new NodeProperty<>(Bundle.DataSourceSummaryNode_column_type_header(), Bundle.DataSourceSummaryNode_column_type_header(), Bundle.DataSourceSummaryNode_column_type_header(),
166 sheetSet.put(
new NodeProperty<>(Bundle.DataSourceSummaryNode_column_files_header(), Bundle.DataSourceSummaryNode_column_files_header(), Bundle.DataSourceSummaryNode_column_files_header(),
168 sheetSet.put(
new NodeProperty<>(Bundle.DataSourceSummaryNode_column_results_header(), Bundle.DataSourceSummaryNode_column_results_header(), Bundle.DataSourceSummaryNode_column_results_header(),
170 sheetSet.put(
new NodeProperty<>(Bundle.DataSourceSummaryNode_column_tags_header(), Bundle.DataSourceSummaryNode_column_tags_header(), Bundle.DataSourceSummaryNode_column_tags_header(),
181 public Action getPreferredAction() {
182 return new ViewDataSourceInContextAction();
186 public Action[] getActions(
boolean context) {
187 List<Action> actions =
new ArrayList<>();
188 actions.add(
new ViewDataSourceInContextAction());
189 return actions.toArray(
new Action[actions.size()]);
203 @Messages({
"DataSourceSummaryNode.viewDataSourceAction.text=Go to Data Source"})
205 super(Bundle.DataSourceSummaryNode_viewDataSourceAction_text(), dataSource);
210 closeDialogObservable.notifyObservers();
211 super.actionPerformed(e);
static final long serialVersionUID
void actionPerformed(ActionEvent e)