From a8bfc14c134be6045864c7743e7ad4ab6841cfb7 Mon Sep 17 00:00:00 2001 From: adam-m Date: Fri, 6 Jan 2012 17:47:57 -0500 Subject: [PATCH] - add expand node method to DataResultViewer interface and implement it for DataResultViewerTable - auto start the list search for all queries once button is pressed, using the expand node method --- .../DataResultViewer.java | 6 +++ .../corecomponents/DataResultViewerTable.java | 13 +++++++ .../DataResultViewerThumbnail.java | 10 +++++ .../KeywordSearchResultFactory.java | 39 ++++++++++++------- 4 files changed, 55 insertions(+), 13 deletions(-) diff --git a/CoreComponentInterfaces/src/org/sleuthkit/autopsy/corecomponentinterfaces/DataResultViewer.java b/CoreComponentInterfaces/src/org/sleuthkit/autopsy/corecomponentinterfaces/DataResultViewer.java index 0e9b73df79..d8ada5858a 100644 --- a/CoreComponentInterfaces/src/org/sleuthkit/autopsy/corecomponentinterfaces/DataResultViewer.java +++ b/CoreComponentInterfaces/src/org/sleuthkit/autopsy/corecomponentinterfaces/DataResultViewer.java @@ -61,4 +61,10 @@ public interface DataResultViewer { * preparation for permanently disposing of it. */ public void clearComponent(); + + /** + * Expand node, if supported by the viewed + * @param n Node to expand + */ + public void expandNode(Node n); } diff --git a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java index c743d2f1e6..ff9ff4aa8a 100644 --- a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java +++ b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java @@ -38,6 +38,7 @@ import org.openide.nodes.Node; import org.openide.nodes.Node.Property; import org.openide.nodes.Node.PropertySet; import org.openide.nodes.Sheet; +import org.openide.util.lookup.AbstractLookup; import org.openide.util.lookup.ServiceProvider; import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer; @@ -64,6 +65,18 @@ public class DataResultViewerTable extends AbstractDataResultViewer { this.em.addPropertyChangeListener(this); } + + /** + * Expand node + * @param n Node to expand + */ + @Override + public void expandNode(Node n) { + if ( this.tableScrollPanel != null) { + OutlineView ov = ((OutlineView) this.tableScrollPanel); + ov.expandNode(n); + } + } /** This method is called from within the constructor to * initialize the form. diff --git a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java index b9a1d156ca..bac44db247 100644 --- a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java +++ b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java @@ -91,6 +91,16 @@ public class DataResultViewerThumbnail extends AbstractDataResultViewer { return result; } + + /** + * Expand node + * @param n Node to expand + */ + @Override + public void expandNode(Node n) { + + } + @Override public void setNode(Node givenNode) { // change the cursor to "waiting cursor" for this operation diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchResultFactory.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchResultFactory.java index dc265dfc02..77494d1640 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchResultFactory.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchResultFactory.java @@ -28,10 +28,14 @@ import java.util.Set; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.swing.SwingUtilities; import org.apache.solr.client.solrj.response.TermsResponse.Term; import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; import org.openide.nodes.Node; +import org.openide.util.Lookup; +import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer; +import org.sleuthkit.autopsy.corecomponents.DataResultViewerTable; import org.sleuthkit.autopsy.datamodel.AbstractFsContentNode; import org.sleuthkit.autopsy.datamodel.AbstractFsContentNode.FsContentPropertyType; import org.sleuthkit.autopsy.datamodel.KeyValueNode; @@ -140,17 +144,25 @@ public class KeywordSearchResultFactory extends ChildFactory { @Override protected Node createNodeForKey(KeyValueThing thing) { ChildFactory childFactory = null; - switch (presentation) { - case COLLAPSE: - childFactory = new ResultCollapsedChildFactory(thing); - break; - case DETAIL: - childFactory = new ResulTermsMatchesChildFactory(things); - break; - default: - } - return new KeyValueNode(thing, Children.create(childFactory, true)); + if (presentation == Presentation.COLLAPSE) { + childFactory = new ResultCollapsedChildFactory(thing); + final Node ret = new KeyValueNode(thing, Children.create(childFactory, true)); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + //DataResultViewerTable view = Utilities.actionsGlobalContext().lookup(DataResultViewerTable.class); + for (DataResultViewer view : Lookup.getDefault().lookupAll(DataResultViewer.class)) { + view.expandNode(ret); + } + } + }); + return ret; + } else { + + childFactory = new ResulTermsMatchesChildFactory(things); + return new KeyValueNode(thing, Children.create(childFactory, true)); + } } /** @@ -184,14 +196,15 @@ public class KeywordSearchResultFactory extends ChildFactory { //the query is executed later on demand StringBuilder highlightQuery = new StringBuilder(); Collection terms = tcq.getTerms(); - final int lastTerm = terms.size() -1; + final int lastTerm = terms.size() - 1; int curTerm = 0; for (Term term : terms) { final String termS = KeywordSearchUtil.escapeLuceneQuery(term.getTerm(), true); - if (! termS.contains("*")) { + if (!termS.contains("*")) { highlightQuery.append(termS); - if (lastTerm != curTerm) + if (lastTerm != curTerm) { highlightQuery.append(" "); + } } } //String highlightQueryEscaped = KeywordSearchUtil.escapeLuceneQuery(highlightQuery.toString());