From 8ae09432f726e09bcb7cfec72546579c1fcf028d Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 25 May 2021 12:07:22 -0400 Subject: [PATCH] default method getting title for Node on DataContentViewer --- .../autopsy/contentviewers/Metadata.java | 26 ++++++++++++++++++- .../DataContentViewer.java | 10 +++++++ .../corecomponents/DataContentPanel.java | 10 +++++++ 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java b/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java index 2c695dfcb4..e17c2c6317 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java @@ -20,13 +20,13 @@ package org.sleuthkit.autopsy.contentviewers; import java.awt.Component; import java.awt.Cursor; +import java.util.Collection; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.logging.Level; import javax.swing.SwingWorker; import org.apache.commons.lang3.StringUtils; import org.openide.nodes.Node; -import org.openide.util.Exceptions; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.ServiceProvider; @@ -36,6 +36,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.BlackboardArtifact; import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE; +import org.sleuthkit.datamodel.BlackboardArtifact.Category; import org.sleuthkit.datamodel.BlackboardAttribute; import org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE; import org.sleuthkit.datamodel.DataSource; @@ -229,8 +230,31 @@ public class Metadata extends javax.swing.JPanel implements DataContentViewer { @Override public String getTitle() { + return getTitle(null); + } + + @Messages({ + "Metadata_dataArtifactTitle=Source File Metadata" + }) + @Override + public String getTitle(Node node) { + if (node != null) { + Collection artifacts = node.getLookup().lookupAll(BlackboardArtifact.class); + for (BlackboardArtifact art : artifacts) { + try { + if (art != null && art.getType().getCategory() == Category.DATA_ARTIFACT) { + return Bundle.Metadata_dataArtifactTitle(); + } + } catch (TskCoreException ex) { + LOGGER.log(Level.SEVERE, "Unable to get artifact type for artifact with id: " + art.getArtifactID(), ex); + } + } + } + return NbBundle.getMessage(this.getClass(), "Metadata.title"); } + + @Override public String getToolTip() { diff --git a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/DataContentViewer.java b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/DataContentViewer.java index ee84e67293..561d343e72 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/DataContentViewer.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/DataContentViewer.java @@ -51,6 +51,16 @@ public interface DataContentViewer { * */ public String getTitle(); + + /** + * Returns the title of this viewer to display in the tab. + * + * @param node The node to be viewed in the DataContentViewer. + * @return the title of DataContentViewer. + */ + public default String getTitle(Node node) { + return getTitle(); + } /** * Returns a short description of this viewer to use as a tool tip for its diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentPanel.java index eef00e31a3..9975237c0d 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentPanel.java @@ -140,6 +140,12 @@ public class DataContentPanel extends javax.swing.JPanel implements DataContent, // Reset everything for (int index = 0; index < jTabbedPane1.getTabCount(); index++) { jTabbedPane1.setEnabledAt(index, false); + String tabTitle = viewers.get(index).getTitle(selectedNode); + tabTitle = tabTitle == null ? "" : tabTitle; + if (!tabTitle.equals(jTabbedPane1.getTitleAt(index))) { + jTabbedPane1.setTitleAt(index, tabTitle); + } + viewers.get(index).resetComponent(); } @@ -266,6 +272,10 @@ public class DataContentPanel extends javax.swing.JPanel implements DataContent, int isPreferred(Node node) { return this.wrapped.isPreferred(node); } + + String getTitle(Node node) { + return this.wrapped.getTitle(node); + } } /**