diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java index 9a521e4af1..764cea24dc 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultPanel.java @@ -65,8 +65,10 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C /** * Creates new form DataResultPanel */ - public DataResultPanel(boolean isMain, String title) { + DataResultPanel(boolean isMain, String title) { this(); + + setName(title); this.isMain = isMain; this.title = title; @@ -82,8 +84,10 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C * @param customContentViewer custom content viewer to send selection events * to */ - public DataResultPanel(String name, DataContentTopComponent customContentViewer) { - this(false, name); + DataResultPanel(String title, DataContentTopComponent customContentViewer) { + this(false, title); + + setName(title); //custom content viewer tc to setup for every result viewer this.customContentViewer = customContentViewer; //TODO change to content panel @@ -102,7 +106,7 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C DataResultPanel newDataResult = new DataResultPanel(false, title); createInstanceCommon(pathText, givenNode, totalMatches, newDataResult); - + newDataResult.open(); return newDataResult; } @@ -121,6 +125,7 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C DataResultPanel newDataResult = new DataResultPanel(title, dataContentWindow); createInstanceCommon(pathText, givenNode, totalMatches, newDataResult); + newDataResult.open(); return newDataResult; } @@ -132,7 +137,7 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C newDataResult.setPath(pathText); } - public void componentOpened() { + void open() { // Add all the DataContentViewer to the tabbed pannel. // (Only when the it's opened at the first time: tabCount = 0) int totalTabs = this.dataResultTabbedPanel.getTabCount(); @@ -151,7 +156,7 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C } } - if (this.preferredID().equals(DEFAULT_PREFERRED_ID)) { + if (isMain) { // if no node selected on DataExplorer, clear the field if (rootNode == null) { setNode(rootNode); @@ -159,11 +164,12 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C } + this.setVisible(true); } - public void componentClosed() { + void close() { pcs.firePropertyChange(REMOVE_FILESEARCH, "", this); // notify to remove this from the menu // try to remove any references to this class @@ -191,15 +197,14 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C this.pcs = null; this.removeAll(); } + + this.setVisible(true); + } protected String preferredID() { - if (this.isMain) { - return DEFAULT_PREFERRED_ID; - } else { - return this.getName(); - } + return this.getName(); } @Override diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultTopComponent.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultTopComponent.java index f7715702e6..078dd180bc 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultTopComponent.java @@ -18,25 +18,14 @@ */ package org.sleuthkit.autopsy.corecomponents; -import java.awt.Cursor; -import java.beans.PropertyChangeListener; import org.sleuthkit.autopsy.corecomponentinterfaces.DataResult; -import java.beans.PropertyChangeSupport; -import java.util.ArrayList; -import java.util.List; import java.util.logging.Level; -import javax.swing.JTabbedPane; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; import org.openide.util.NbBundle; import org.openide.windows.TopComponent; import org.openide.nodes.Node; -import org.openide.util.Lookup; import org.openide.windows.Mode; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; -import org.sleuthkit.autopsy.corecomponentinterfaces.DataContent; -import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer; import org.sleuthkit.autopsy.coreutils.Logger; /** @@ -48,6 +37,7 @@ public class DataResultTopComponent extends TopComponent implements DataResult { private DataResultPanel dataResultPanel; //embedded component with all the logic private boolean isMain; private String customModeName; + /** * Create a new data result top component @@ -76,7 +66,7 @@ public class DataResultTopComponent extends TopComponent implements DataResult { * @param customContentViewer custom content viewer to send selection events * to */ - public DataResultTopComponent(String name, String mode, DataContentTopComponent customContentViewer) { + DataResultTopComponent(String name, String mode, DataContentTopComponent customContentViewer) { super(); this.customModeName = mode; @@ -204,12 +194,12 @@ public class DataResultTopComponent extends TopComponent implements DataResult { @Override public void componentOpened() { - this.dataResultPanel.componentOpened(); + this.dataResultPanel.open(); } @Override public void componentClosed() { - dataResultPanel.componentClosed(); + dataResultPanel.close(); } @Override diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java index bc45b72d91..28a1b9c61a 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerTable.java @@ -304,6 +304,7 @@ public class DataResultViewerTable extends AbstractDataResultViewer { if (content != null) { // get the fontmetrics final Graphics graphics = ov.getGraphics(); + if (graphics != null) { //TODO check why null and if this works final FontMetrics metrics = graphics.getFontMetrics(); // for the "Name" column @@ -315,6 +316,7 @@ public class DataResultViewerTable extends AbstractDataResultViewer { int colWidth = Math.min(getMaxColumnWidth(colIndex, metrics, margin, 8, props, content), 350); ov.getOutline().getColumnModel().getColumn(colIndex).setPreferredWidth(colWidth); } + } } // if there's no content just auto resize all columns diff --git a/Timeline/src/org/sleuthkit/autopsy/timeline/Simile2.java b/Timeline/src/org/sleuthkit/autopsy/timeline/Simile2.java index c2439bd622..736f9a5e23 100644 --- a/Timeline/src/org/sleuthkit/autopsy/timeline/Simile2.java +++ b/Timeline/src/org/sleuthkit/autopsy/timeline/Simile2.java @@ -33,7 +33,6 @@ import java.text.DateFormatSymbols; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Calendar; import java.util.Collections; import java.util.Date; @@ -82,10 +81,10 @@ import org.openide.util.actions.CallableSystemAction; import org.openide.util.actions.Presenter; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.corecomponents.DataContentTopComponent; +import org.sleuthkit.autopsy.corecomponents.DataResultPanel; import org.sleuthkit.autopsy.corecomponents.DataResultTopComponent; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.PlatformUtil; -import org.sleuthkit.autopsy.datamodel.AbstractFsContentNode; import org.sleuthkit.autopsy.datamodel.DirectoryNode; import org.sleuthkit.autopsy.datamodel.DisplayableItemNode; import org.sleuthkit.autopsy.datamodel.DisplayableItemNodeVisitor; @@ -126,7 +125,7 @@ public class Simile2 extends CallableSystemAction implements Presenter.Toolbar { private ComboBox dropdown_SelectYears; //Dropdown box for selecting years. Useful when the charts' scale means some years are unclickable, despite having events. private final Stack stack_PrevCharts = new Stack(); //Stack for storing drill-up information. private BarChart chart_TopLevel; //the topmost chart, used for resetting to default view. - private DataResultTopComponent dataResult; + private DataResultPanel dataResult; private DataContentTopComponent dataContent; //Swing components and JavafX components don't play super well together @@ -139,7 +138,7 @@ public class Simile2 extends CallableSystemAction implements Presenter.Toolbar { dataContent = DataContentTopComponent.createUndocked("Content", Node.EMPTY); dataContent.setSize(1, 1); dataContent.setAlignmentX(Component.LEFT_ALIGNMENT); - dataResult = DataResultTopComponent.createInstance("Timeline Results", "timeline", "", Node.EMPTY, 0, dataContent); + dataResult = DataResultPanel.createInstance("Timeline Results", "", Node.EMPTY, 0, dataContent); dataResult.setAlignmentX(Component.LEFT_ALIGNMENT); dataResult.setPreferredSize(new Dimension(700, 300)); logger.log(Level.INFO, "Successfully created viewers"); @@ -669,7 +668,14 @@ public class Simile2 extends CallableSystemAction implements Presenter.Toolbar { if (file.isDir()) { n = new DirectoryNode((Directory) file); } else { - n = new FileNode((File) file); + n = new FileNode((File) file) { + + @Override + public boolean isLeafTypeNode() { + return false; + } + + }; } return n; }