19 package org.sleuthkit.autopsy.casemodule.datasourcesummary;
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 type;
113 private final long filesCount;
114 private final long resultsCount;
115 private final long tagsCount;
124 DataSourceSummaryEntryNode(DataSourceSummary dataSourceSummary) {
125 super(Children.LEAF);
126 dataSource = dataSourceSummary.getDataSource();
127 type = dataSourceSummary.getType();
128 filesCount = dataSourceSummary.getFilesCount();
129 resultsCount = dataSourceSummary.getResultsCount();
130 tagsCount = dataSourceSummary.getTagsCount();
131 super.setName(dataSource.getName());
132 setName(dataSource.getName());
133 setDisplayName(dataSource.getName());
141 DataSource getDataSource() {
145 @Messages({
"DataSourceSummaryNode.column.dataSourceName.header=Data Source Name",
146 "DataSourceSummaryNode.column.type.header=Type",
147 "DataSourceSummaryNode.column.files.header=Files",
148 "DataSourceSummaryNode.column.results.header=Results",
149 "DataSourceSummaryNode.column.tags.header=Tags"})
151 protected Sheet createSheet() {
152 Sheet sheet = super.createSheet();
153 Sheet.Set sheetSet = sheet.get(Sheet.PROPERTIES);
154 if (sheetSet == null) {
155 sheetSet = Sheet.createPropertiesSet();
158 sheetSet.put(
new NodeProperty<>(Bundle.DataSourceSummaryNode_column_dataSourceName_header(), Bundle.DataSourceSummaryNode_column_dataSourceName_header(), Bundle.DataSourceSummaryNode_column_dataSourceName_header(),
160 sheetSet.put(
new NodeProperty<>(Bundle.DataSourceSummaryNode_column_type_header(), Bundle.DataSourceSummaryNode_column_type_header(), Bundle.DataSourceSummaryNode_column_type_header(),
162 sheetSet.put(
new NodeProperty<>(Bundle.DataSourceSummaryNode_column_files_header(), Bundle.DataSourceSummaryNode_column_files_header(), Bundle.DataSourceSummaryNode_column_files_header(),
164 sheetSet.put(
new NodeProperty<>(Bundle.DataSourceSummaryNode_column_results_header(), Bundle.DataSourceSummaryNode_column_results_header(), Bundle.DataSourceSummaryNode_column_results_header(),
166 sheetSet.put(
new NodeProperty<>(Bundle.DataSourceSummaryNode_column_tags_header(), Bundle.DataSourceSummaryNode_column_tags_header(), Bundle.DataSourceSummaryNode_column_tags_header(),
177 public Action getPreferredAction() {
178 return new ViewDataSourceInContextAction();
182 public Action[] getActions(
boolean context) {
183 List<Action> actions =
new ArrayList<>();
184 actions.add(
new ViewDataSourceInContextAction());
185 return actions.toArray(
new Action[actions.size()]);
199 @Messages({
"DataSourceSummaryNode.viewDataSourceAction.text=Go to Data Source"})
201 super(Bundle.DataSourceSummaryNode_viewDataSourceAction_text(), dataSource);
206 closeDialogObservable.notifyObservers();
207 super.actionPerformed(e);
static final long serialVersionUID
void actionPerformed(ActionEvent e)