diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java index c6ecfb5274..f506956b86 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java @@ -41,6 +41,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; import java.util.prefs.PreferenceChangeEvent; import java.util.prefs.Preferences; +import java.util.stream.Collectors; import javax.swing.ImageIcon; import javax.swing.JOptionPane; import javax.swing.JTable; @@ -86,6 +87,7 @@ import org.sleuthkit.autopsy.datamodel.BaseChildFactory; import org.sleuthkit.autopsy.datamodel.BaseChildFactory.PageChangeEvent; import org.sleuthkit.autopsy.datamodel.BaseChildFactory.PageCountChangeEvent; import org.sleuthkit.autopsy.datamodel.BaseChildFactory.PageSizeChangeEvent; +import org.sleuthkit.autopsy.datamodel.SearchResultTableNode; import org.sleuthkit.datamodel.Score.Significance; /** @@ -258,7 +260,7 @@ public class DataResultViewerTable extends AbstractDataResultViewer { nodeNameToPagingSupportMap.values().forEach((ps) -> { ps.postPageSizeChangeEvent(); }); - + setCursor(null); } }); @@ -446,6 +448,7 @@ public class DataResultViewerTable extends AbstractDataResultViewer { ((DefaultOutlineModel) outline.getOutlineModel()).setNodesColumnLabel(firstProp.getDisplayName()); } + /* * Load column sorting information from preferences file and apply it to * columns. @@ -748,6 +751,19 @@ public class DataResultViewerTable extends AbstractDataResultViewer { */ private synchronized List> loadColumnOrder() { + if (rootNode instanceof SearchResultTableNode) { + return ((SearchResultTableNode) rootNode).getColumnKeys().stream() + .map(columnKey -> { + return new NodeProperty<>( + columnKey.getFieldName(), + columnKey.getDisplayName(), + columnKey.getDescription(), + "" + ); + }) + .collect(Collectors.toList()); + } + List> props = ResultViewerPersistence.getAllChildProperties(rootNode, 100); // If node is not table filter node, use default order for columns diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/SearchResultTableNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/SearchResultTableNode.java index 5e8d800c79..10eba512a7 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/SearchResultTableNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/SearchResultTableNode.java @@ -5,11 +5,14 @@ */ package org.sleuthkit.autopsy.datamodel; +import java.util.Collections; +import java.util.List; import org.openide.nodes.AbstractNode; import org.openide.nodes.Children; import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.datamodel.SearchResultChildFactory.NodeCreator; +import org.sleuthkit.autopsy.datamodel.ThreePanelDAO.ColumnKey; import org.sleuthkit.autopsy.datamodel.ThreePanelDAO.RowResultDTO; import org.sleuthkit.autopsy.datamodel.ThreePanelDAO.SearchResultsDTO; @@ -20,15 +23,17 @@ import org.sleuthkit.autopsy.datamodel.ThreePanelDAO.SearchResultsDTO; public class SearchResultTableNode, S extends RowResultDTO> extends AbstractNode { private final SearchResultChildFactory factory; + private final List columnKeys; public SearchResultTableNode(NodeCreator nodeCreator, T initialResults) { - this(initialResults, new SearchResultChildFactory<>(nodeCreator, initialResults)); + this(initialResults, new SearchResultChildFactory<>(nodeCreator, initialResults), initialResults.getColumns()); } - private SearchResultTableNode(SearchResultsDTO initialResults, SearchResultChildFactory factory) { + private SearchResultTableNode(SearchResultsDTO initialResults, SearchResultChildFactory factory, List columnKeys) { super(Children.create(factory, true)); this.factory = factory; - + this.columnKeys = columnKeys; + setName(initialResults.getTypeId()); setDisplayName(initialResults.getDisplayName()); @@ -57,4 +62,8 @@ public class SearchResultTableNode, S extends RowR return sheet; } + + public List getColumnKeys() { + return Collections.unmodifiableList(columnKeys); + } }