From f7c50bc3822da5ab95e33513172d43496977e617 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Wed, 2 Oct 2019 15:49:33 -0400 Subject: [PATCH 01/19] inital pass cvt redesign --- .../communications/AccountsBrowser.form | 18 +- .../communications/AccountsBrowser.java | 19 +- .../autopsy/communications/Bundle.properties | 2 + .../communications/Bundle.properties-MERGED | 2 + .../communications/CVTTopComponent.form | 58 +- .../communications/CVTTopComponent.java | 71 ++- .../communications/VisualizationPanel.form | 586 ++++++++---------- .../communications/VisualizationPanel.java | 263 ++++---- .../autopsy/corecomponents/WrapLayout.java | 2 +- 9 files changed, 489 insertions(+), 532 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.form b/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.form index 1c1bc033f5..e1375f2d5a 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.form +++ b/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.form @@ -16,28 +16,14 @@ - - - - + - - - - - - - - - - - - + diff --git a/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.java b/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.java index 0cad213cd4..acabf3889c 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.java +++ b/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.java @@ -65,7 +65,7 @@ public final class AccountsBrowser extends JPanel implements ExplorerManager.Pro private final ExplorerManager accountsTableEM = new ExplorerManager(); - final RelationshipBrowser relationshipBrowser; + final private RelationshipBrowser relationshipBrowser; /* * This lookup proxies the selection lookup of both he accounts table and @@ -73,12 +73,10 @@ public final class AccountsBrowser extends JPanel implements ExplorerManager.Pro */ private final ProxyLookup proxyLookup; - public AccountsBrowser() { + public AccountsBrowser(RelationshipBrowser relationshipBrowser) { + this.relationshipBrowser = relationshipBrowser; initComponents(); - jSplitPane1.setResizeWeight(0.5); - jSplitPane1.setDividerLocation(0.75); - outline = outlineView.getOutline(); outlineView.setPropertyColumns( "device", Bundle.AccountNode_device(), @@ -90,9 +88,6 @@ public final class AccountsBrowser extends JPanel implements ExplorerManager.Pro ((DefaultOutlineModel) outline.getOutlineModel()).setNodesColumnLabel(Bundle.AccountNode_accountName()); outline.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); outline.setColumnSorted(3, false, 1); //it would be nice if the column index wasn't hardcoded - - relationshipBrowser = new RelationshipBrowser(); - jSplitPane1.setRightComponent(relationshipBrowser); accountsTableEM.addPropertyChangeListener(evt -> { if (ExplorerManager.PROP_ROOT_CONTEXT.equals(evt.getPropertyName())) { @@ -174,20 +169,14 @@ public final class AccountsBrowser extends JPanel implements ExplorerManager.Pro // //GEN-BEGIN:initComponents private void initComponents() { - jSplitPane1 = new javax.swing.JSplitPane(); outlineView = new org.openide.explorer.view.OutlineView(); setLayout(new java.awt.BorderLayout()); - - jSplitPane1.setDividerLocation(500); - jSplitPane1.setLeftComponent(outlineView); - - add(jSplitPane1, java.awt.BorderLayout.CENTER); + add(outlineView, java.awt.BorderLayout.CENTER); }// //GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JSplitPane jSplitPane1; private org.openide.explorer.view.OutlineView outlineView; // End of variables declaration//GEN-END:variables diff --git a/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties b/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties index 1b2dd9ae37..747f0c82f7 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties @@ -49,3 +49,5 @@ VisualizationPanel.forwardButton.text= VisualizationPanel.zoomPercentLabel.text=100% VisualizationPanel.zoomLabel.text=Zoom: VisualizationPanel.snapshotButton.toolTipText=Generate Snapshot report. +CVTTopComponent.filtersPane.TabConstraints.tabTitle=Filters +CVTTopComponent.filterTabPanel.TabConstraints.tabTitle=Filters diff --git a/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties-MERGED index 2ad2305d38..65c130bd6e 100755 --- a/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties-MERGED @@ -92,6 +92,8 @@ VisualizationPanel.forwardButton.text= VisualizationPanel.zoomPercentLabel.text=100% VisualizationPanel.zoomLabel.text=Zoom: VisualizationPanel.snapshotButton.toolTipText=Generate Snapshot report. +CVTTopComponent.filtersPane.TabConstraints.tabTitle=Filters +CVTTopComponent.filterTabPanel.TabConstraints.tabTitle=Filters VisualizationPanel_action_dialogs_title=Communications VisualizationPanel_action_name_text=Snapshot Report VisualizationPanel_module_name=Communications diff --git a/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.form b/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.form index a7bc5379c3..c11d0c335c 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.form @@ -14,24 +14,52 @@ - + - + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - @@ -45,13 +73,16 @@ - + + + + @@ -66,6 +97,9 @@ + + + diff --git a/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java b/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java index 2a5dd8c0d1..db62579ad5 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java @@ -19,14 +19,15 @@ package org.sleuthkit.autopsy.communications; import com.google.common.eventbus.Subscribe; +import java.awt.BorderLayout; import java.awt.Component; import java.awt.Font; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.util.List; import java.util.stream.Collectors; import javax.swing.ImageIcon; +import javax.swing.JPanel; import javax.swing.JSplitPane; import javax.swing.JTabbedPane; import org.openide.util.Lookup; @@ -35,6 +36,7 @@ import org.openide.windows.Mode; import org.openide.windows.RetainLocation; import org.openide.windows.TopComponent; import org.openide.windows.WindowManager; +import org.sleuthkit.autopsy.communications.relationships.RelationshipBrowser; import org.sleuthkit.autopsy.coreutils.ThreadConfined; /** @@ -48,10 +50,17 @@ import org.sleuthkit.autopsy.coreutils.ThreadConfined; public final class CVTTopComponent extends TopComponent { private static final long serialVersionUID = 1L; + private boolean filtersVisible = true; + private final RelationshipBrowser relationshipBrowser; @ThreadConfined(type = ThreadConfined.ThreadType.AWT) public CVTTopComponent() { + relationshipBrowser = new RelationshipBrowser(); initComponents(); + + splitPane.setRightComponent(relationshipBrowser); + splitPane.setDividerLocation(0.25); + setName(Bundle.CVTTopComponent_name()); /* @@ -79,9 +88,6 @@ public final class CVTTopComponent extends TopComponent { CVTEvents.getCVTEventBus().register(vizPanel); CVTEvents.getCVTEventBus().register(accountsBrowser); CVTEvents.getCVTEventBus().register(filtersPane); - - mainSplitPane.setResizeWeight(0.5); - mainSplitPane.setDividerLocation(0.25); } @Subscribe @@ -96,38 +102,65 @@ public final class CVTTopComponent extends TopComponent { */ // //GEN-BEGIN:initComponents private void initComponents() { - GridBagConstraints gridBagConstraints; - mainSplitPane = new JSplitPane(); + filterTabPane = new JTabbedPane(); + filterTabPanel = new JPanel(); filtersPane = new FiltersPanel(); + splitPane = new JSplitPane(); browseVisualizeTabPane = new JTabbedPane(); - accountsBrowser = new AccountsBrowser(); - vizPanel = new VisualizationPanel(); + accountsBrowser = new AccountsBrowser(relationshipBrowser); + vizPanel = new VisualizationPanel(relationshipBrowser); - setLayout(new GridBagLayout()); + setLayout(new BorderLayout()); - mainSplitPane.setLeftComponent(filtersPane); + filterTabPane.addMouseListener(new MouseAdapter() { + public void mouseClicked(MouseEvent evt) { + filterTabPaneMouseClicked(evt); + } + }); + + filterTabPanel.add(filtersPane); + + filterTabPane.addTab(NbBundle.getMessage(CVTTopComponent.class, "CVTTopComponent.filterTabPanel.TabConstraints.tabTitle"), filterTabPanel); // NOI18N + + add(filterTabPane, BorderLayout.WEST); + + splitPane.setDividerLocation(1); + splitPane.setResizeWeight(0.25); browseVisualizeTabPane.setFont(new Font("Tahoma", 0, 18)); // NOI18N browseVisualizeTabPane.addTab(NbBundle.getMessage(CVTTopComponent.class, "CVTTopComponent.accountsBrowser.TabConstraints.tabTitle_1"), new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/table.png")), accountsBrowser); // NOI18N browseVisualizeTabPane.addTab(NbBundle.getMessage(CVTTopComponent.class, "CVTTopComponent.vizPanel.TabConstraints.tabTitle_1"), new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/emblem-web.png")), vizPanel); // NOI18N - mainSplitPane.setRightComponent(browseVisualizeTabPane); + splitPane.setLeftComponent(browseVisualizeTabPane); browseVisualizeTabPane.getAccessibleContext().setAccessibleName(NbBundle.getMessage(CVTTopComponent.class, "CVTTopComponent.browseVisualizeTabPane.AccessibleContext.accessibleName")); // NOI18N - gridBagConstraints = new GridBagConstraints(); - gridBagConstraints.fill = GridBagConstraints.BOTH; - gridBagConstraints.weightx = 1.0; - gridBagConstraints.weighty = 1.0; - add(mainSplitPane, gridBagConstraints); + add(splitPane, BorderLayout.CENTER); }// //GEN-END:initComponents + private void filterTabPaneMouseClicked(MouseEvent evt) {//GEN-FIRST:event_filterTabPaneMouseClicked + int index = filterTabPane.indexAtLocation(evt.getX(), evt.getY()); + if(index != -1) { + if(filtersVisible) { + filterTabPanel.removeAll(); + filterTabPanel.revalidate(); + filtersVisible = false; + } else { + filterTabPanel.add(filtersPane); + filterTabPanel.revalidate(); + filtersVisible = true; + } + } + }//GEN-LAST:event_filterTabPaneMouseClicked + // Variables declaration - do not modify//GEN-BEGIN:variables private AccountsBrowser accountsBrowser; private JTabbedPane browseVisualizeTabPane; + private JTabbedPane filterTabPane; + private JPanel filterTabPanel; private FiltersPanel filtersPane; - private JSplitPane mainSplitPane; + private JSplitPane splitPane; private VisualizationPanel vizPanel; // End of variables declaration//GEN-END:variables diff --git a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form index e85901a1ba..4d8b4860dc 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form +++ b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form @@ -1,6 +1,10 @@
+ + + + @@ -11,348 +15,282 @@ - + - - - - - + - + - + - - + + - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java index 8a5404bb1a..4d689f0642 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java +++ b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java @@ -43,9 +43,12 @@ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Desktop; import java.awt.Dimension; +import java.awt.FlowLayout; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -61,7 +64,6 @@ import java.nio.file.Paths; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Arrays; -import java.util.Collections; import java.util.Date; import java.util.EnumSet; import java.util.HashMap; @@ -86,7 +88,7 @@ import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; -import javax.swing.JSplitPane; +import javax.swing.JSeparator; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.JToolBar; @@ -96,7 +98,6 @@ import javax.swing.SwingWorker; import org.apache.commons.lang3.StringUtils; import org.controlsfx.control.Notifications; import org.jdesktop.layout.GroupLayout; -import org.jdesktop.layout.LayoutStyle; import org.openide.util.NbBundle; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; @@ -112,6 +113,7 @@ import org.sleuthkit.datamodel.AccountDeviceInstance; import org.sleuthkit.datamodel.CommunicationsFilter; import org.sleuthkit.datamodel.CommunicationsManager; import org.sleuthkit.datamodel.TskCoreException; +import org.sleuthkit.autopsy.corecomponents.WrapLayout; /** * A panel that goes in the Visualize tab of the Communications Visualization * Tool. Hosts an JGraphX mxGraphComponent that implements the communications @@ -160,7 +162,8 @@ final public class VisualizationPanel extends JPanel { private final StateManager stateManager; @NbBundle.Messages("VisalizationPanel.paintingError=Problem painting visualization.") - public VisualizationPanel() { + public VisualizationPanel(RelationshipBrowser relationshipBrowser) { + this.relationshipBrowser = relationshipBrowser; initComponents(); //initialize invisible JFXPanel that is used to show JFXNotifications over this window. notificationsJFXPanel.setScene(new Scene(new Pane())); @@ -220,9 +223,6 @@ final public class VisualizationPanel extends JPanel { final GraphMouseListener graphMouseListener = new GraphMouseListener(); graphComponent.getGraphControl().addMouseWheelListener(graphMouseListener); graphComponent.getGraphControl().addMouseListener(graphMouseListener); - - relationshipBrowser = new RelationshipBrowser(); - splitPane.setRightComponent(relationshipBrowser); //feed selection to explorermanager graph.getSelectionModel().addListener(mxEvent.CHANGE, new SelectionListener()); @@ -247,6 +247,8 @@ final public class VisualizationPanel extends JPanel { stateManager = new StateManager(pinnedAccountModel); setStateButtonsEnabled(); + + toolbar.setLayout(new WrapLayout(FlowLayout.LEFT)); } @Subscribe @@ -373,32 +375,29 @@ final public class VisualizationPanel extends JPanel { // //GEN-BEGIN:initComponents private void initComponents() { - splitPane = new JSplitPane(); + jSeparator4 = new JSeparator(); borderLayoutPanel = new JPanel(); placeHolderPanel = new JPanel(); jTextArea1 = new JTextArea(); - toolbar = new JPanel(); - fastOrganicLayoutButton = new JButton(); - zoomOutButton = new JButton(); - zoomInButton = new JButton(); - zoomActualButton = new JButton(); - fitZoomButton = new JButton(); - zoomLabel = new JLabel(); - zoomPercentLabel = new JLabel(); - clearVizButton = new JButton(); - jSeparator2 = new JToolBar.Separator(); + notificationsJFXPanel = new JFXPanel(); + toolbar = new JToolBar(); backButton = new JButton(); forwardButton = new JButton(); - snapshotButton = new JButton(); jSeparator3 = new JToolBar.Separator(); - jSeparator4 = new JToolBar.Separator(); - notificationsJFXPanel = new JFXPanel(); + clearVizButton = new JButton(); + fastOrganicLayoutButton = new JButton(); + jSeparator2 = new JToolBar.Separator(); + zoomLabel = new JLabel(); + zoomPercentLabel = new JLabel(); + zoomOutButton = new JButton(); + fitZoomButton = new JButton(); + zoomActualButton = new JButton(); + zoomInButton = new JButton(); + jSeparator1 = new JToolBar.Separator(); + snapshotButton = new JButton(); setLayout(new BorderLayout()); - splitPane.setDividerLocation(800); - splitPane.setResizeWeight(0.5); - borderLayoutPanel.setLayout(new BorderLayout()); jTextArea1.setBackground(new Color(240, 240, 240)); @@ -411,9 +410,9 @@ final public class VisualizationPanel extends JPanel { placeHolderPanel.setLayout(placeHolderPanelLayout); placeHolderPanelLayout.setHorizontalGroup(placeHolderPanelLayout.createParallelGroup(GroupLayout.LEADING) .add(placeHolderPanelLayout.createSequentialGroup() - .addContainerGap(250, Short.MAX_VALUE) + .addContainerGap(315, Short.MAX_VALUE) .add(jTextArea1, GroupLayout.PREFERRED_SIZE, 424, GroupLayout.PREFERRED_SIZE) - .addContainerGap(423, Short.MAX_VALUE)) + .addContainerGap(482, Short.MAX_VALUE)) ); placeHolderPanelLayout.setVerticalGroup(placeHolderPanelLayout.createParallelGroup(GroupLayout.LEADING) .add(placeHolderPanelLayout.createSequentialGroup() @@ -423,12 +422,72 @@ final public class VisualizationPanel extends JPanel { ); borderLayoutPanel.add(placeHolderPanel, BorderLayout.CENTER); + borderLayoutPanel.add(notificationsJFXPanel, BorderLayout.PAGE_END); + + add(borderLayoutPanel, BorderLayout.CENTER); + + toolbar.setRollover(true); + + backButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/resultset_previous.png"))); // NOI18N + backButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.backButton.text_1")); // NOI18N + backButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.backButton.toolTipText")); // NOI18N + backButton.setFocusable(false); + backButton.setHorizontalTextPosition(SwingConstants.CENTER); + backButton.setVerticalTextPosition(SwingConstants.BOTTOM); + backButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + backButtonActionPerformed(evt); + } + }); + toolbar.add(backButton); + + forwardButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/resultset_next.png"))); // NOI18N + forwardButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.forwardButton.text")); // NOI18N + forwardButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.forwardButton.toolTipText")); // NOI18N + forwardButton.setFocusable(false); + forwardButton.setHorizontalTextPosition(SwingConstants.CENTER); + forwardButton.setVerticalTextPosition(SwingConstants.BOTTOM); + forwardButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + forwardButtonActionPerformed(evt); + } + }); + toolbar.add(forwardButton); + toolbar.add(jSeparator3); + + clearVizButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/broom.png"))); // NOI18N + clearVizButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.clearVizButton.text_1")); // NOI18N + clearVizButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.clearVizButton.toolTipText")); // NOI18N + clearVizButton.setActionCommand(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.clearVizButton.actionCommand")); // NOI18N + clearVizButton.setFocusable(false); + clearVizButton.setHorizontalTextPosition(SwingConstants.CENTER); + clearVizButton.setVerticalTextPosition(SwingConstants.BOTTOM); + clearVizButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + clearVizButtonActionPerformed(evt); + } + }); + toolbar.add(clearVizButton); fastOrganicLayoutButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/arrow-circle-double-135.png"))); // NOI18N fastOrganicLayoutButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.fastOrganicLayoutButton.text")); // NOI18N fastOrganicLayoutButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.fastOrganicLayoutButton.toolTipText")); // NOI18N fastOrganicLayoutButton.setFocusable(false); + fastOrganicLayoutButton.setHorizontalTextPosition(SwingConstants.CENTER); fastOrganicLayoutButton.setVerticalTextPosition(SwingConstants.BOTTOM); + fastOrganicLayoutButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + fastOrganicLayoutButtonActionPerformed(evt); + } + }); + toolbar.add(fastOrganicLayoutButton); + toolbar.add(jSeparator2); + + zoomLabel.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomLabel.text")); // NOI18N + toolbar.add(zoomLabel); + + zoomPercentLabel.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomPercentLabel.text")); // NOI18N + toolbar.add(zoomPercentLabel); zoomOutButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/magnifier-zoom-out-red.png"))); // NOI18N zoomOutButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomOutButton.text")); // NOI18N @@ -441,30 +500,7 @@ final public class VisualizationPanel extends JPanel { zoomOutButtonActionPerformed(evt); } }); - - zoomInButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/magnifier-zoom-in-green.png"))); // NOI18N - zoomInButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomInButton.text")); // NOI18N - zoomInButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomInButton.toolTipText")); // NOI18N - zoomInButton.setFocusable(false); - zoomInButton.setHorizontalTextPosition(SwingConstants.CENTER); - zoomInButton.setVerticalTextPosition(SwingConstants.BOTTOM); - zoomInButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent evt) { - zoomInButtonActionPerformed(evt); - } - }); - - zoomActualButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/magnifier-zoom-actual.png"))); // NOI18N - zoomActualButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomActualButton.text")); // NOI18N - zoomActualButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomActualButton.toolTipText")); // NOI18N - zoomActualButton.setFocusable(false); - zoomActualButton.setHorizontalTextPosition(SwingConstants.CENTER); - zoomActualButton.setVerticalTextPosition(SwingConstants.BOTTOM); - zoomActualButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent evt) { - zoomActualButtonActionPerformed(evt); - } - }); + toolbar.add(zoomOutButton); fitZoomButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/magnifier-zoom-fit.png"))); // NOI18N fitZoomButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.fitZoomButton.text")); // NOI18N @@ -477,116 +513,49 @@ final public class VisualizationPanel extends JPanel { fitZoomButtonActionPerformed(evt); } }); + toolbar.add(fitZoomButton); - zoomLabel.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomLabel.text")); // NOI18N - - zoomPercentLabel.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomPercentLabel.text")); // NOI18N - - clearVizButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/broom.png"))); // NOI18N - clearVizButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.clearVizButton.text_1")); // NOI18N - clearVizButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.clearVizButton.toolTipText")); // NOI18N - clearVizButton.setActionCommand(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.clearVizButton.actionCommand")); // NOI18N - clearVizButton.addActionListener(new ActionListener() { + zoomActualButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/magnifier-zoom-actual.png"))); // NOI18N + zoomActualButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomActualButton.text")); // NOI18N + zoomActualButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomActualButton.toolTipText")); // NOI18N + zoomActualButton.setFocusable(false); + zoomActualButton.setHorizontalTextPosition(SwingConstants.CENTER); + zoomActualButton.setVerticalTextPosition(SwingConstants.BOTTOM); + zoomActualButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { - clearVizButtonActionPerformed(evt); + zoomActualButtonActionPerformed(evt); } }); + toolbar.add(zoomActualButton); - jSeparator2.setOrientation(SwingConstants.VERTICAL); - - backButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/resultset_previous.png"))); // NOI18N - backButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.backButton.text_1")); // NOI18N - backButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.backButton.toolTipText")); // NOI18N - backButton.addActionListener(new ActionListener() { + zoomInButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/magnifier-zoom-in-green.png"))); // NOI18N + zoomInButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomInButton.text")); // NOI18N + zoomInButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomInButton.toolTipText")); // NOI18N + zoomInButton.setFocusable(false); + zoomInButton.setHorizontalTextPosition(SwingConstants.CENTER); + zoomInButton.setVerticalTextPosition(SwingConstants.BOTTOM); + zoomInButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { - backButtonActionPerformed(evt); - } - }); - - forwardButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/resultset_next.png"))); // NOI18N - forwardButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.forwardButton.text")); // NOI18N - forwardButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.forwardButton.toolTipText")); // NOI18N - forwardButton.setHorizontalTextPosition(SwingConstants.LEADING); - forwardButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent evt) { - forwardButtonActionPerformed(evt); + zoomInButtonActionPerformed(evt); } }); + toolbar.add(zoomInButton); + toolbar.add(jSeparator1); snapshotButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/report/images/image.png"))); // NOI18N snapshotButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.snapshotButton.text_1")); // NOI18N snapshotButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.snapshotButton.toolTipText")); // NOI18N + snapshotButton.setFocusable(false); + snapshotButton.setHorizontalTextPosition(SwingConstants.CENTER); + snapshotButton.setVerticalTextPosition(SwingConstants.BOTTOM); snapshotButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { snapshotButtonActionPerformed(evt); } }); + toolbar.add(snapshotButton); - jSeparator3.setOrientation(SwingConstants.VERTICAL); - - jSeparator4.setOrientation(SwingConstants.VERTICAL); - - GroupLayout toolbarLayout = new GroupLayout(toolbar); - toolbar.setLayout(toolbarLayout); - toolbarLayout.setHorizontalGroup(toolbarLayout.createParallelGroup(GroupLayout.LEADING) - .add(toolbarLayout.createSequentialGroup() - .addContainerGap() - .add(backButton) - .addPreferredGap(LayoutStyle.RELATED) - .add(forwardButton) - .addPreferredGap(LayoutStyle.RELATED) - .add(jSeparator4, GroupLayout.PREFERRED_SIZE, 10, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.RELATED) - .add(fastOrganicLayoutButton) - .addPreferredGap(LayoutStyle.RELATED) - .add(clearVizButton) - .addPreferredGap(LayoutStyle.RELATED) - .add(jSeparator2, GroupLayout.PREFERRED_SIZE, 10, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.RELATED) - .add(zoomLabel) - .addPreferredGap(LayoutStyle.RELATED) - .add(zoomPercentLabel) - .addPreferredGap(LayoutStyle.RELATED) - .add(zoomOutButton, GroupLayout.PREFERRED_SIZE, 32, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.RELATED) - .add(zoomInButton, GroupLayout.PREFERRED_SIZE, 32, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.RELATED) - .add(zoomActualButton, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.RELATED) - .add(fitZoomButton, GroupLayout.PREFERRED_SIZE, 32, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.RELATED) - .add(jSeparator3, GroupLayout.PREFERRED_SIZE, 10, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.RELATED) - .add(snapshotButton) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - toolbarLayout.setVerticalGroup(toolbarLayout.createParallelGroup(GroupLayout.LEADING) - .add(toolbarLayout.createSequentialGroup() - .add(3, 3, 3) - .add(toolbarLayout.createParallelGroup(GroupLayout.CENTER) - .add(fastOrganicLayoutButton) - .add(zoomOutButton) - .add(zoomInButton, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .add(zoomActualButton, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .add(fitZoomButton, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .add(zoomLabel) - .add(zoomPercentLabel) - .add(clearVizButton) - .add(jSeparator2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .add(backButton) - .add(forwardButton) - .add(snapshotButton) - .add(jSeparator3, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .add(jSeparator4, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .add(3, 3, 3)) - ); - - borderLayoutPanel.add(toolbar, BorderLayout.PAGE_START); - borderLayoutPanel.add(notificationsJFXPanel, BorderLayout.PAGE_END); - - splitPane.setLeftComponent(borderLayoutPanel); - - add(splitPane, BorderLayout.CENTER); + add(toolbar, BorderLayout.NORTH); }// //GEN-END:initComponents private void fitZoomButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_fitZoomButtonActionPerformed @@ -726,6 +695,10 @@ final public class VisualizationPanel extends JPanel { } }//GEN-LAST:event_snapshotButtonActionPerformed + private void fastOrganicLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_fastOrganicLayoutButtonActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_fastOrganicLayoutButtonActionPerformed + private void fitGraph() { graphComponent.zoomTo(1, true); mxPoint translate = graph.getView().getTranslate(); @@ -883,15 +856,15 @@ final public class VisualizationPanel extends JPanel { private JButton fastOrganicLayoutButton; private JButton fitZoomButton; private JButton forwardButton; + private JToolBar.Separator jSeparator1; private JToolBar.Separator jSeparator2; private JToolBar.Separator jSeparator3; - private JToolBar.Separator jSeparator4; + private JSeparator jSeparator4; private JTextArea jTextArea1; private JFXPanel notificationsJFXPanel; private JPanel placeHolderPanel; private JButton snapshotButton; - private JSplitPane splitPane; - private JPanel toolbar; + private JToolBar toolbar; private JButton zoomActualButton; private JButton zoomInButton; private JLabel zoomLabel; diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/WrapLayout.java b/Core/src/org/sleuthkit/autopsy/corecomponents/WrapLayout.java index be35ea0581..152d0e8647 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/WrapLayout.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/WrapLayout.java @@ -32,7 +32,7 @@ import javax.swing.SwingUtilities; * Originally written by Rob Camick * https://tips4java.wordpress.com/2008/11/06/wrap-layout/ */ -class WrapLayout extends FlowLayout { +public class WrapLayout extends FlowLayout { /** * Constructs a new WrapLayout with a left alignment and a From fe5f587198cd9f2cee9f46c7e09fbe953cf642ff Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Thu, 3 Oct 2019 15:12:21 -0400 Subject: [PATCH 02/19] Cleaned up changes --- .../communications/CVTTopComponent.java | 40 ++++++++++++------ .../autopsy/communications/FiltersPanel.form | 11 ++--- .../autopsy/communications/FiltersPanel.java | 10 +++-- .../communications/VisualizationPanel.form | 6 +-- .../communications/VisualizationPanel.java | 8 ++-- .../communications/images/arrow-180.png | Bin 0 -> 1022 bytes .../autopsy/communications/images/arrow.png | Bin 0 -> 1062 bytes .../DataResultViewerThumbnail.java | 1 + .../WrapLayout.java | 2 +- 9 files changed, 48 insertions(+), 30 deletions(-) create mode 100755 Core/src/org/sleuthkit/autopsy/communications/images/arrow-180.png create mode 100755 Core/src/org/sleuthkit/autopsy/communications/images/arrow.png rename Core/src/org/sleuthkit/autopsy/{corecomponents => uicomponents}/WrapLayout.java (99%) mode change 100644 => 100755 diff --git a/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java b/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java index db62579ad5..69ea42c8aa 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java @@ -24,6 +24,7 @@ import java.awt.Component; import java.awt.Font; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.HashSet; import java.util.List; import java.util.stream.Collectors; import javax.swing.ImageIcon; @@ -37,7 +38,9 @@ import org.openide.windows.RetainLocation; import org.openide.windows.TopComponent; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.communications.relationships.RelationshipBrowser; +import org.sleuthkit.autopsy.communications.relationships.SelectionInfo; import org.sleuthkit.autopsy.coreutils.ThreadConfined; +import org.sleuthkit.datamodel.CommunicationsFilter; /** * Top component which displays the Communications Visualization Tool. @@ -51,11 +54,11 @@ public final class CVTTopComponent extends TopComponent { private static final long serialVersionUID = 1L; private boolean filtersVisible = true; - private final RelationshipBrowser relationshipBrowser; + private final RelationshipBrowser relationshipBrowser = new RelationshipBrowser(); + private CommunicationsFilter currentFilter; @ThreadConfined(type = ThreadConfined.ThreadType.AWT) public CVTTopComponent() { - relationshipBrowser = new RelationshipBrowser(); initComponents(); splitPane.setRightComponent(relationshipBrowser); @@ -77,6 +80,8 @@ public final class CVTTopComponent extends TopComponent { Lookup lookup = ((Lookup.Provider)selectedComponent).getLookup(); proxyLookup.setNewLookups(lookup); } + + relationshipBrowser.setSelectionInfo(new SelectionInfo(new HashSet<>(), new HashSet<>(), currentFilter)); }); @@ -88,12 +93,20 @@ public final class CVTTopComponent extends TopComponent { CVTEvents.getCVTEventBus().register(vizPanel); CVTEvents.getCVTEventBus().register(accountsBrowser); CVTEvents.getCVTEventBus().register(filtersPane); + + filterTabbedPane.setIconAt(0, new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/arrow-180.png"))); + filterTabbedPane.setTitleAt(0, ""); } @Subscribe void pinAccount(CVTEvents.PinAccountsEvent pinEvent) { browseVisualizeTabPane.setSelectedIndex(1); } + + @Subscribe + void handle(final CVTEvents.FilterChangeEvent filterChangeEvent) { + currentFilter = filterChangeEvent.getNewFilter(); + } /** * This method is called from within the constructor to initialize the form. @@ -103,7 +116,7 @@ public final class CVTTopComponent extends TopComponent { // //GEN-BEGIN:initComponents private void initComponents() { - filterTabPane = new JTabbedPane(); + filterTabbedPane = new JTabbedPane(); filterTabPanel = new JPanel(); filtersPane = new FiltersPanel(); splitPane = new JSplitPane(); @@ -113,17 +126,18 @@ public final class CVTTopComponent extends TopComponent { setLayout(new BorderLayout()); - filterTabPane.addMouseListener(new MouseAdapter() { + filterTabbedPane.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { - filterTabPaneMouseClicked(evt); + filterTabbedPaneMouseClicked(evt); } }); - filterTabPanel.add(filtersPane); + filterTabPanel.setLayout(new BorderLayout()); + filterTabPanel.add(filtersPane, BorderLayout.CENTER); - filterTabPane.addTab(NbBundle.getMessage(CVTTopComponent.class, "CVTTopComponent.filterTabPanel.TabConstraints.tabTitle"), filterTabPanel); // NOI18N + filterTabbedPane.addTab(NbBundle.getMessage(CVTTopComponent.class, "CVTTopComponent.filterTabPanel.TabConstraints.tabTitle"), filterTabPanel); // NOI18N - add(filterTabPane, BorderLayout.WEST); + add(filterTabbedPane, BorderLayout.WEST); splitPane.setDividerLocation(1); splitPane.setResizeWeight(0.25); @@ -138,15 +152,17 @@ public final class CVTTopComponent extends TopComponent { add(splitPane, BorderLayout.CENTER); }// //GEN-END:initComponents - private void filterTabPaneMouseClicked(MouseEvent evt) {//GEN-FIRST:event_filterTabPaneMouseClicked - int index = filterTabPane.indexAtLocation(evt.getX(), evt.getY()); + private void filterTabbedPaneMouseClicked(MouseEvent evt) {//GEN-FIRST:event_filterTabPaneMouseClicked + int index = filterTabbedPane.indexAtLocation(evt.getX(), evt.getY()); if(index != -1) { if(filtersVisible) { + filterTabbedPane.setIconAt(0, new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/arrow.png"))); filterTabPanel.removeAll(); filterTabPanel.revalidate(); filtersVisible = false; } else { - filterTabPanel.add(filtersPane); + filterTabbedPane.setIconAt(0, new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/arrow-180.png"))); + filterTabPanel.add(filtersPane, BorderLayout.CENTER); filterTabPanel.revalidate(); filtersVisible = true; } @@ -157,7 +173,7 @@ public final class CVTTopComponent extends TopComponent { // Variables declaration - do not modify//GEN-BEGIN:variables private AccountsBrowser accountsBrowser; private JTabbedPane browseVisualizeTabPane; - private JTabbedPane filterTabPane; + private JTabbedPane filterTabbedPane; private JPanel filterTabPanel; private FiltersPanel filtersPane; private JSplitPane splitPane; diff --git a/Core/src/org/sleuthkit/autopsy/communications/FiltersPanel.form b/Core/src/org/sleuthkit/autopsy/communications/FiltersPanel.form index 33fe6d5228..c1b520127e 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/FiltersPanel.form +++ b/Core/src/org/sleuthkit/autopsy/communications/FiltersPanel.form @@ -18,6 +18,7 @@ + @@ -37,7 +38,7 @@ - + @@ -128,7 +129,7 @@ - + @@ -222,7 +223,7 @@ - + @@ -325,7 +326,7 @@ - + @@ -422,7 +423,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/communications/FiltersPanel.java b/Core/src/org/sleuthkit/autopsy/communications/FiltersPanel.java index a9c6f58e4e..61485832b0 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/FiltersPanel.java +++ b/Core/src/org/sleuthkit/autopsy/communications/FiltersPanel.java @@ -477,6 +477,7 @@ final public class FiltersPanel extends JPanel { setLayout(new java.awt.GridBagLayout()); + scrollPane.setAutoscrolls(true); scrollPane.setBorder(null); mainPanel.setLayout(new java.awt.GridBagLayout()); @@ -541,7 +542,7 @@ final public class FiltersPanel extends JPanel { gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; - gridBagConstraints.insets = new java.awt.Insets(15, 0, 15, 0); + gridBagConstraints.insets = new java.awt.Insets(15, 0, 15, 25); mainPanel.add(limitPane, gridBagConstraints); startDatePicker.setEnabled(false); @@ -608,7 +609,7 @@ final public class FiltersPanel extends JPanel { gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(15, 0, 0, 0); + gridBagConstraints.insets = new java.awt.Insets(15, 0, 0, 25); mainPanel.add(dateRangePane, gridBagConstraints); devicesPane.setLayout(new java.awt.GridBagLayout()); @@ -686,7 +687,7 @@ final public class FiltersPanel extends JPanel { gridBagConstraints.ipady = 100; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(15, 0, 0, 0); + gridBagConstraints.insets = new java.awt.Insets(15, 0, 0, 25); mainPanel.add(devicesPane, gridBagConstraints); accountTypesPane.setLayout(new java.awt.GridBagLayout()); @@ -760,7 +761,7 @@ final public class FiltersPanel extends JPanel { gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(15, 0, 0, 0); + gridBagConstraints.insets = new java.awt.Insets(15, 0, 0, 25); mainPanel.add(accountTypesPane, gridBagConstraints); topPane.setLayout(new java.awt.GridBagLayout()); @@ -810,6 +811,7 @@ final public class FiltersPanel extends JPanel { gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_END; gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 25); mainPanel.add(topPane, gridBagConstraints); scrollPane.setViewportView(mainPanel); diff --git a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form index 4d8b4860dc..910b2a8bd3 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form +++ b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form @@ -15,7 +15,7 @@ - + @@ -40,9 +40,9 @@ - + - + diff --git a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java index 4d689f0642..cd52af336c 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java +++ b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java @@ -47,8 +47,6 @@ import java.awt.FlowLayout; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -113,7 +111,7 @@ import org.sleuthkit.datamodel.AccountDeviceInstance; import org.sleuthkit.datamodel.CommunicationsFilter; import org.sleuthkit.datamodel.CommunicationsManager; import org.sleuthkit.datamodel.TskCoreException; -import org.sleuthkit.autopsy.corecomponents.WrapLayout; +import org.sleuthkit.autopsy.uicomponents.WrapLayout; /** * A panel that goes in the Visualize tab of the Communications Visualization * Tool. Hosts an JGraphX mxGraphComponent that implements the communications @@ -410,9 +408,9 @@ final public class VisualizationPanel extends JPanel { placeHolderPanel.setLayout(placeHolderPanelLayout); placeHolderPanelLayout.setHorizontalGroup(placeHolderPanelLayout.createParallelGroup(GroupLayout.LEADING) .add(placeHolderPanelLayout.createSequentialGroup() - .addContainerGap(315, Short.MAX_VALUE) + .addContainerGap(316, Short.MAX_VALUE) .add(jTextArea1, GroupLayout.PREFERRED_SIZE, 424, GroupLayout.PREFERRED_SIZE) - .addContainerGap(482, Short.MAX_VALUE)) + .addContainerGap(481, Short.MAX_VALUE)) ); placeHolderPanelLayout.setVerticalGroup(placeHolderPanelLayout.createParallelGroup(GroupLayout.LEADING) .add(placeHolderPanelLayout.createSequentialGroup() diff --git a/Core/src/org/sleuthkit/autopsy/communications/images/arrow-180.png b/Core/src/org/sleuthkit/autopsy/communications/images/arrow-180.png new file mode 100755 index 0000000000000000000000000000000000000000..4d2aa3ccb2d59ecf6cc1db2006bc330a7b32423c GIT binary patch literal 1022 zcmVRjB2*F4(xR45i}(ZdXOyZf!3Qo}2)YslD~eKZV@Gh)g_|}sRsu<1 zNhZl;9-eb2GfkSwyTyeUPVOCY=brC;=W)+)mSw@e96bEvA<|Fp{b>+Haa{xfcxNt% zv*vgncodvvd{sgQN2)1Uj>WwHK<0lwIBo-IV#toZjaoi%X^%u_zn=qqF58qzr@_$m z#)7aOV*>y!n{7yWy#Scycdj0gVlfS}S-Wl+Mkxd2Z!bn# z1;CUKT{|Q#F6L1Ay3Y-RcNLP=W`%fY1puRc`1%oPVIfE3`{rM-!o0>R!~O7N|ulGpOEI~RZvxLzZ!-GgIA79j`768`Wgyr z%UwGxInS@&&3ZB*qd(=*fs@kQT)Lui8u56JNuz^+w6}|Hwul>*-@SFZV7U%kHHd+Y z0GRT7Lub(E^(oi!fLx9;Ba3xGW6vxo@pO*kuuh0f{C>YH^h_67835BX$X!60R82W4 zNMof-rBY0}SM-x|`%II8qCNCp9!oRbs6L+$!35kCwl5saO2J9iWyACYRG(2Kb^~Hi(H&N>5MFwgO*RT3v<6;vZN_ra&X=c%g>y zpmV%E0|%sr&G@d4=jq5y9y7=*2pI^XX6*5lJUV<%n*I@m3|)Ji0LWj-*5Gy@v;{=4 z3Q^^zpyP^yJ9s8M2-L{Xn&%K4R{?-cSD5_wXmU#K>pv@f|CR8hI1~!Nw~va_Y$hN$ zrD7$t3QW9t@manwcwU-`B+K@+@qShbu{Apdg}~d~rj%mBG{f(oe^3s0cR<<~C>7Dq z0*V@sR_+46Mko^#;jd5MDhGFmKt;ulqy;}qC6YX4MU%H-Jv|`af$1NAngEJbH0UMhP#e4t@P%kp+dR4f@RP>ps(jdaC~iTQ`ml_N>GG~EjfJ;7+cU4yC5jwV&mbeA13r&5bEp%5o`Zu18|t2 sS*o^a4eyT~U0u}+(trPT{8xYh0B3Hci}D$em;e9(07*qoM6N<$g7{g=ssI20 literal 0 HcmV?d00001 diff --git a/Core/src/org/sleuthkit/autopsy/communications/images/arrow.png b/Core/src/org/sleuthkit/autopsy/communications/images/arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..12077d33242acb0933fb8a1eb1e9b283173bf3b6 GIT binary patch literal 1062 zcmV+>1ljwEP)d$S)&?kl^eV&NR`W^b9D_uDuB_hydyz7PMhDe#Y*Mqj)7EBzD;EG&31)W6H*DIij(Awk%dwK@v83a%?qRH*h@7lsGA5=Ww`IzUcc+g<_S zgXalp1Tiz?z|g?nL=a6EB2qu;f`<`^00IaPzJIr2u)llF<9O$~<$1j~ZyJDd*unEa zWwu0ZXB)umjXQ~)rv{*GDdUN#3MvHH-U=``dP_Q26F5%=K+a2r+M5*tbhe=Lk+H;Y zo(h1(wuGnRdaVU3&;0e9f%67}YYKo)Jxln%pix`6mX*#~O6Q3H3iI=84I$?_r3vRU gZU6g!$G-#^01aB=1TgL}r2qf`07*qoM6N<$g5+G`YXATM literal 0 HcmV?d00001 diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java index 3199dbd7e8..807acc5e07 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java @@ -56,6 +56,7 @@ import static org.sleuthkit.autopsy.corecomponents.Bundle.*; import org.sleuthkit.autopsy.corecomponents.ResultViewerPersistence.SortCriterion; import org.sleuthkit.autopsy.coreutils.ImageUtils; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.uicomponents.WrapLayout; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.TskCoreException; diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/WrapLayout.java b/Core/src/org/sleuthkit/autopsy/uicomponents/WrapLayout.java old mode 100644 new mode 100755 similarity index 99% rename from Core/src/org/sleuthkit/autopsy/corecomponents/WrapLayout.java rename to Core/src/org/sleuthkit/autopsy/uicomponents/WrapLayout.java index 152d0e8647..92d4af32db --- a/Core/src/org/sleuthkit/autopsy/corecomponents/WrapLayout.java +++ b/Core/src/org/sleuthkit/autopsy/uicomponents/WrapLayout.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.sleuthkit.autopsy.corecomponents; +package org.sleuthkit.autopsy.uicomponents; import java.awt.Component; import java.awt.Container; From 1ac05409a04830314b4be97d911af0b18804d01d Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Thu, 3 Oct 2019 17:17:02 -0400 Subject: [PATCH 03/19] Fixed codacy issues --- .../org/sleuthkit/autopsy/communications/AccountsBrowser.java | 3 --- .../sleuthkit/autopsy/communications/VisualizationPanel.form | 4 ---- .../sleuthkit/autopsy/communications/VisualizationPanel.java | 2 -- Core/src/org/sleuthkit/autopsy/uicomponents/WrapLayout.java | 3 ++- 4 files changed, 2 insertions(+), 10 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.java b/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.java index acabf3889c..4ebcd9298e 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.java +++ b/Core/src/org/sleuthkit/autopsy/communications/AccountsBrowser.java @@ -64,8 +64,6 @@ public final class AccountsBrowser extends JPanel implements ExplorerManager.Pro private final Outline outline; private final ExplorerManager accountsTableEM = new ExplorerManager(); - - final private RelationshipBrowser relationshipBrowser; /* * This lookup proxies the selection lookup of both he accounts table and @@ -74,7 +72,6 @@ public final class AccountsBrowser extends JPanel implements ExplorerManager.Pro private final ProxyLookup proxyLookup; public AccountsBrowser(RelationshipBrowser relationshipBrowser) { - this.relationshipBrowser = relationshipBrowser; initComponents(); outline = outlineView.getOutline(); diff --git a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form index 910b2a8bd3..18d2d90b0d 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form +++ b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form @@ -1,10 +1,6 @@ - - - - diff --git a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java index cd52af336c..eb271714df 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java +++ b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java @@ -373,7 +373,6 @@ final public class VisualizationPanel extends JPanel { // //GEN-BEGIN:initComponents private void initComponents() { - jSeparator4 = new JSeparator(); borderLayoutPanel = new JPanel(); placeHolderPanel = new JPanel(); jTextArea1 = new JTextArea(); @@ -857,7 +856,6 @@ final public class VisualizationPanel extends JPanel { private JToolBar.Separator jSeparator1; private JToolBar.Separator jSeparator2; private JToolBar.Separator jSeparator3; - private JSeparator jSeparator4; private JTextArea jTextArea1; private JFXPanel notificationsJFXPanel; private JPanel placeHolderPanel; diff --git a/Core/src/org/sleuthkit/autopsy/uicomponents/WrapLayout.java b/Core/src/org/sleuthkit/autopsy/uicomponents/WrapLayout.java index 92d4af32db..5daf8d5646 100755 --- a/Core/src/org/sleuthkit/autopsy/uicomponents/WrapLayout.java +++ b/Core/src/org/sleuthkit/autopsy/uicomponents/WrapLayout.java @@ -33,7 +33,8 @@ import javax.swing.SwingUtilities; * https://tips4java.wordpress.com/2008/11/06/wrap-layout/ */ public class WrapLayout extends FlowLayout { - + + private static final long serialVersionUID = 1L; /** * Constructs a new WrapLayout with a left alignment and a * default 5-unit horizontal and vertical gap. From 2d0711eb0ccd6435ac19db7f502f87ae85c02927 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Fri, 4 Oct 2019 09:19:08 -0400 Subject: [PATCH 04/19] Changed filter pane icons --- .../autopsy/communications/CVTTopComponent.java | 6 +++--- .../communications/VisualizationPanel.java | 1 - .../autopsy/communications/images/arrow-left.png | Bin 0 -> 1666 bytes .../communications/images/arrow-right.png | Bin 0 -> 1688 bytes 4 files changed, 3 insertions(+), 4 deletions(-) create mode 100755 Core/src/org/sleuthkit/autopsy/communications/images/arrow-left.png create mode 100755 Core/src/org/sleuthkit/autopsy/communications/images/arrow-right.png diff --git a/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java b/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java index 69ea42c8aa..a11fde5622 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/communications/CVTTopComponent.java @@ -94,7 +94,7 @@ public final class CVTTopComponent extends TopComponent { CVTEvents.getCVTEventBus().register(accountsBrowser); CVTEvents.getCVTEventBus().register(filtersPane); - filterTabbedPane.setIconAt(0, new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/arrow-180.png"))); + filterTabbedPane.setIconAt(0, new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/arrow-left.png"))); filterTabbedPane.setTitleAt(0, ""); } @@ -156,12 +156,12 @@ public final class CVTTopComponent extends TopComponent { int index = filterTabbedPane.indexAtLocation(evt.getX(), evt.getY()); if(index != -1) { if(filtersVisible) { - filterTabbedPane.setIconAt(0, new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/arrow.png"))); + filterTabbedPane.setIconAt(0, new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/arrow-right.png"))); filterTabPanel.removeAll(); filterTabPanel.revalidate(); filtersVisible = false; } else { - filterTabbedPane.setIconAt(0, new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/arrow-180.png"))); + filterTabbedPane.setIconAt(0, new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/arrow-left.png"))); filterTabPanel.add(filtersPane, BorderLayout.CENTER); filterTabPanel.revalidate(); filtersVisible = true; diff --git a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java index eb271714df..263bb200e6 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java +++ b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java @@ -86,7 +86,6 @@ import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; -import javax.swing.JSeparator; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.JToolBar; diff --git a/Core/src/org/sleuthkit/autopsy/communications/images/arrow-left.png b/Core/src/org/sleuthkit/autopsy/communications/images/arrow-left.png new file mode 100755 index 0000000000000000000000000000000000000000..2e67c7c8071f6fe28cc2887bff49cb988dc5ee4e GIT binary patch literal 1666 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 O<-ez^pUXO@geCw*gTt)= literal 0 HcmV?d00001 From f92f47e28acd14c976a967424ec9ccd3f6469027 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Fri, 4 Oct 2019 09:55:19 -0400 Subject: [PATCH 05/19] updated icons --- .../communications/images/arrow-left.png | Bin 1666 -> 1769 bytes .../communications/images/arrow-right.png | Bin 1688 -> 1774 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/communications/images/arrow-left.png b/Core/src/org/sleuthkit/autopsy/communications/images/arrow-left.png index 2e67c7c8071f6fe28cc2887bff49cb988dc5ee4e..e00d9903487e6a0cc234ac1ca082b53c949b2a62 100755 GIT binary patch delta 1736 zcmV;(1~>VF4e1S#B#~ege*gz`Nliru;|c@~Dh+_tZ@d5i28c;SK~zY`m6mNxRM{EF z|M#9Vcf?2+c?lMhV*4D9X!1cw4}Ml~D#!TT^XXX=(h>k|r(9ez5HaKS1{j zY0HQ1mYA%qn`n@=Y;hZbYS6evVT}$$LNr9&4l|dTxx?IhPruwTe@GVB-sI*c=l;+6 z-E*Gj|J(<7gR85nixH6o0L{(K?;kyS^u5Hp#5fU2L}UYiy1KgWx3sie!kb)_zv#{h8d+_{2>4_5RTYe}sIKctvMeJdCFN)W z(9zMceR6Vge=Habrbv<$H4H;xjIo@Yoc`hA;T`~Rxm--%0MIx$H+MM{3V|^eF$^P# zbB^rn>=VPo!yf^_`Sa($>G%6T3kHMRWLegP5Q-#8EIT{pu5PftI4^XAPD0id_He>d&ky?dWMfByVivMk3;)8qhH zR#w)BV`F1y6RAHmG^DRRCOZIhc6OHT+qX|AB9Wh;A0;BOckf=|@p#TBv;zYJ$+fk$ z{~;pba5yv~iV=}0D=WLa)?4d?ya@nKojSGG<#I(VK!k|Q!oot)*4Fl`HItQ!ii!!# z2T|)5e+Lg9yq3^(bae3bi6mKo!bguD-C9~&dW$ip8HTY50P^zketZ4;^y(P=CW*CN| zC<+`7$NLFDPft&BV`JmrEr2G=vI2l*WMquhf7R7B0YFt%mHn##0Km3w+jeX((aw6t_ECnx7BfX%wD>yjiHs;b%^ ze>`~b=f1u^Wol|lt*@_FURwxHpFX|Q<#GjyNaW?^X^Bef^?HAk&D1=QZ&UhQ-`#TvheqM{;EUtj-&g!aOP3+a`Wm0wtf zj1tkR1^UYygFGHjW8&wN0PWnlQ`FSd98YMwySuYoF4z2;>JWE09HO$aa$r5^e--91fS2l$4lrb94Vz1U=k6VoSeMta=HGyf3mXDu)4bX z5)=xBPSn)YOx?eK|MB?v_@dkG{->&{r&Lw7TOet9dAZu@bVB}`hQ%ZzcJ=DjKWyK= zy~l31L)Uc%K-V-4nx=inN|-JE{r&&mv13PFdU`qx!>|L;gb=XX?caXWwuk{hQ&ZEg z6Di%^-rlvY@3I5H@#DweKH0Npk4Z$Lsj2Bt|8IjQTcG~7wzl`Ih2=yCxfayg+WNib e=H|a9#{UQD&k~4VE#CqF0000dq+{oe0=-{*ba=lMV1`~E&9mEvyzGlKyDU=Tni z(ZGH_*vz3bz_-#0y#eeXG2TJm0C0Mr{$%8IaE^>3(}DnCvkd^qQUG8Agk&!PK!gK; zAtnIe_XEIOeqrq@0=S^ZCx<2hfWE1==>V$2c>tgj%B6=0LxKYFQ3>&w$mj$X8zYJ5 zgKPjGNbuk=o-K?-O5)>qNqEU})OQ9R9BW}L3i+KPj9rcj38Er>69jCeE5-$bLlI#} zB$6PA=HO{0zn|N|*>cndp^%TqV#Q)HM!W=*Ac(;_d3bnWan4w0XGf6Xm?Y&1BPEW! zq=i33{?Q?^lcEG%zL1;1Luz#+SqUQHauiBy^y~Rir;y9}*NK<(GZq*St6jl5VQ|=A z+Td1#7R9d=aM_@)^MqhM4bjDY?1*@&>f8@8d~q2&aS zyy;|v^fdu-!Hn5KZyM$oNl~B395zL<1fOoArl9{=lS`Huqr80T9aP6FW#{(fzuCVO ziGb3}X_s|Qm$7$}YN~2a)Y_YeTsRKj*&r=Ul0Kfuio03xZAZtY;Va@{>F88$Zkr^( zprA*lHtFi_-VzlT_h#L$10&rZgkQu$Vc|Rri^=w#0paH%Xsdeb**3PeO?U6!Ej*p? zoL0LlKJZ#*em;llIyE)r)>$yp`Rv&yolHM!L`3g+Wu=4Ju%^cmgITK4XpVWLHQi}@ z@F2JD)F~?T-qr&u)kZH>u7a2Ob`~67c&DXhj%H+Jq~@iYR4Q#(DwRezP1`>CPi_1uhKWVZ$&hl_@cr^n`Sg_BC>8u(3I`}Y7BsyPx^yt8xF0>@sS(TOL zE#I?S$$-^2HL{#XD0?zc7^%ge4kJv{}EeyJrk zrAVvy<6BGQ@@ZD58XNls?UK;;j*gDcihBKX29sFGb=8Fn7b*<*Hqg7H>2j}CtFlb4 z44}i-`}+EZ)IaBsL5pK7bUk`5wt2a^y7tiEh(v{K$_EGD)LD+B zI(-O3M^^A&76f-Pzg6 z0}gdupFwpoOnwbp8xb+;vwBon{}th$XovXXZlY9F96WeXO+V;so!x0_cJuv?D*{$Y zX>SqoNG_SfvC#|nh4{!mecI0DmhW_juDHLuV}SY_@kj;zHU0P8wFz9VlHFBRRb_GU zolYb9oPIgX*l-}K&nHYJe;S{c%rBIu^>JJHBYSb6p8@arW6-TH~odW7PoI0 zHS3#rUo9@XPhua8aQ!+b!qRYUaLQqb3H~P8Czs{_NlGv-2rN% zdmSUNG@F!t)OaK(qk{2(RLaD;A8Q0p`Kn@9nBEh;^>h0l0;7!|i&>hykG3~V+oJUV zF`9HmJ~%k2yYbwaGXi*wAB5SadWxmKu)c-1zqHV5=+!HagkXK^YyNINO8d8A6eB2P z678Q?{d9aRy*7FC$EI%xJL4U2(tV_RtRovPGKO!*U28bM&C3F@shdSyACmgs(qVeq q|PL7%csO`qdp@ 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 O<-ez^pUXO@geCw*gTt)= From 36bee81153b01d48d832e88189ea9e9b3143e43d Mon Sep 17 00:00:00 2001 From: Ann Priestman Date: Fri, 4 Oct 2019 10:19:31 -0400 Subject: [PATCH 06/19] Added new button to hide filter panel --- docs/doxygen-user/communications.dox | 2 +- docs/doxygen-user/images/cvt_main.png | Bin 88944 -> 99668 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/doxygen-user/communications.dox b/docs/doxygen-user/communications.dox index c7c77e6a30..9efd0f02f1 100644 --- a/docs/doxygen-user/communications.dox +++ b/docs/doxygen-user/communications.dox @@ -14,7 +14,7 @@ The Communications Visualization Tool is loaded through the Tools->Communication \image html cvt_main.png -From the left hand column, you can choose which devices to display, which types of data to display, and optionally select a time range. You can also choose to limit the display to only the most recent communications. After any changes to the filters, use the Apply button to update the tables. +From the left hand column, you can choose which devices to display, which types of data to display, and optionally select a time range. You can also choose to limit the display to only the most recent communications. After any changes to the filters, use the Apply button to update the tables. You can hide this column by clicking the left arrow at the top of the column. The middle column displays each account, its device and type, and the number of associated messages (emails, call logs, etc.). By default it will be sorted in descending order of frequency. The middle column and the right hand column both have a \ref ui_quick_search feature which can be used to quickly find a visible item in their section's table. diff --git a/docs/doxygen-user/images/cvt_main.png b/docs/doxygen-user/images/cvt_main.png index 9093f0e9f803586429ec91b0c2e2af6682d4229a..1c9ec9e903368d5187e5274caee98562b1e6807c 100644 GIT binary patch literal 99668 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ì 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

!w>5ESdK%7`)e5r4X?&-`>5bdQel%~
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


From d48737de6634704091302dea2c6c2cf71651bf16 Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 13:34:52 -0400
Subject: [PATCH 07/19] Fixes for compiler warnings

---
 .../autopsy/timeline/actions/Bundle.properties-MERGED       | 2 ++
 .../autopsy/timeline/actions/SaveSnapshotAsReport.java      | 2 ++
 .../autopsy/recentactivity/Bundle.properties-MERGED         | 6 ++++++
 .../sleuthkit/autopsy/recentactivity/ExtractRecycleBin.java | 2 +-
 4 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/Core/src/org/sleuthkit/autopsy/timeline/actions/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/timeline/actions/Bundle.properties-MERGED
index aac5f8beef..2968ed43c4 100755
--- a/Core/src/org/sleuthkit/autopsy/timeline/actions/Bundle.properties-MERGED
+++ b/Core/src/org/sleuthkit/autopsy/timeline/actions/Bundle.properties-MERGED
@@ -38,8 +38,10 @@ SaveSnapShotAsReport.ReportSavedAt=Report saved at [{0}]
 SaveSnapShotAsReport.Success=Success
 SaveSnapShotAsReport_OK_Button=OK
 SaveSnapShotAsReport_Open_Button=Open Report
+# {0} - supplied report name
 SaveSnapShotAsReport_Path_Failure_Report=Failed to create report. Supplied report name has invalid characters: {0}
 SaveSnapShotAsReport_Report_Failed=Report failed
+# {0} - report location
 SaveSnapShotAsReport_success_message=Snapshot report successfully created at location: \n\n {0}
 Timeline.ModuleName=Timeline
 ViewArtifactInTimelineAction.displayName=View Result in Timeline... 
diff --git a/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshotAsReport.java b/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshotAsReport.java
index bb9cfc2328..6208714e06 100755
--- a/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshotAsReport.java
+++ b/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshotAsReport.java
@@ -84,7 +84,9 @@ public class SaveSnapshotAsReport extends Action {
         "SaveSnapShotAsReport.reportName.header=Enter a report name for the Timeline Snapshot Report.",
         "SaveSnapShotAsReport.duplicateReportNameError.text=A report with that name already exists.",
         "SaveSnapShotAsReport_Report_Failed=Report failed",
+        "# {0} - supplied report name",
         "SaveSnapShotAsReport_Path_Failure_Report=Failed to create report. Supplied report name has invalid characters: {0}",
+        "# {0} - report location",
         "SaveSnapShotAsReport_success_message=Snapshot report successfully created at location: \n\n {0}",
         "SaveSnapShotAsReport_Open_Button=Open Report",
         "SaveSnapShotAsReport_OK_Button=OK"
diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle.properties-MERGED b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle.properties-MERGED
index 4f2d1d4fd9..805e776717 100755
--- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle.properties-MERGED
+++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle.properties-MERGED
@@ -2,9 +2,14 @@ cannotBuildXmlParser=Unable to build XML parser:
 cannotLoadSEUQA=Unable to load Search Engine URL Query Analyzer settings file, SEUQAMappings.xml: 
 cannotParseXml=Unable to parse XML file: 
 ChromeCacheExtractor.moduleName=ChromeCacheExtractor
+# {0} - module name
+# {1} - row number
+# {2} - table length
+# {3} - cache path
 ChromeCacheExtractor.progressMsg={0}: Extracting cache entry {1} of {2} entries from {3}
 DataSourceUsage_AndroidMedia=Android Media Card
 DataSourceUsage_FlashDrive=Flash Drive
+# {0} - OS name
 DataSourceUsageAnalyzer.customVolume.label=OS Drive ({0})
 DataSourceUsageAnalyzer.parentModuleName=Recent Activity
 Extract.indexError.message=Failed to index artifact for keyword search.
@@ -183,6 +188,7 @@ RecentDocumentsByLnk.parentModuleName.noSpace=RecentActivity
 RecentDocumentsByLnk.parentModuleName=Recent Activity
 RegRipperFullNotFound=Full version RegRipper executable not found.
 RegRipperNotFound=Autopsy RegRipper executable not found.
+# {0} - file name
 SearchEngineURLQueryAnalyzer.init.exception.msg=Unable to find {0}.
 SearchEngineURLQueryAnalyzer.moduleName.text=Search Engine
 SearchEngineURLQueryAnalyzer.engineName.none=NONE
diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractRecycleBin.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractRecycleBin.java
index 3fa746cf82..d3af457a1f 100755
--- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractRecycleBin.java
+++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractRecycleBin.java
@@ -258,7 +258,7 @@ final class ExtractRecycleBin extends Extract {
                     addFileSystemFile(skCase, fsContent, parentFolder, fsContent.getName(), deletedTimeStamp);
                 } else if (fsContent.isDir()) {
                     String newPath = parentPath + "\\" + fsContent.getName();
-                    AbstractFile childFolder = getOrMakeFolder(skCase, (FsContent) fsContent, parentPath);
+                    AbstractFile childFolder = getOrMakeFolder(skCase, fsContent, parentPath);
                     popuplateDeletedDirectory(skCase, childFolder, fsContent.getChildren(), newPath, deletedTimeStamp);
                 }
             }

From 2624305fd8a9f24482e19d64ec7fe347867e8470 Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 14:20:17 -0400
Subject: [PATCH 08/19] Changed name (slightly) of new OpenCvLoader API

---
 .../sleuthkit/autopsy/contentviewers/MediaViewImagePanel.java | 2 +-
 Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java      | 2 +-
 CoreLibs/src/org/sleuthkit/autopsy/corelibs/OpenCvLoader.java | 4 ++--
 .../objectdetection/ObjectDetectectionFileIngestModule.java   | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/MediaViewImagePanel.java b/Core/src/org/sleuthkit/autopsy/contentviewers/MediaViewImagePanel.java
index 0e1b9c9fb1..e5793e9c3e 100644
--- a/Core/src/org/sleuthkit/autopsy/contentviewers/MediaViewImagePanel.java
+++ b/Core/src/org/sleuthkit/autopsy/contentviewers/MediaViewImagePanel.java
@@ -199,7 +199,7 @@ class MediaViewImagePanel extends JPanel implements MediaFileViewer.MediaViewPan
         imageTaggingOptions.setPopupSize(300, 150);
         
         //Disable image tagging for non-windows users or upon failure to load OpenCV.
-        if (!PlatformUtil.isWindowsOS() || !OpenCvLoader.hasOpenCvLoaded()) {
+        if (!PlatformUtil.isWindowsOS() || !OpenCvLoader.openCvIsLoaded()) {
             tagsMenu.setEnabled(false);
             imageTaggingOptions.setEnabled(false);
         }
diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java b/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java
index c2ed64987e..0016d84eb5 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java
@@ -121,7 +121,7 @@ public class ImageUtils {
         }
         DEFAULT_THUMBNAIL = tempImage;
         boolean tempFfmpegLoaded = false;
-        if (OpenCvLoader.hasOpenCvLoaded()) {
+        if (OpenCvLoader.openCvIsLoaded()) {
             try {
                 if (System.getProperty("os.arch").equals("amd64") || System.getProperty("os.arch").equals("x86_64")) { //NON-NLS
                     System.loadLibrary("opencv_ffmpeg248_64"); //NON-NLS
diff --git a/CoreLibs/src/org/sleuthkit/autopsy/corelibs/OpenCvLoader.java b/CoreLibs/src/org/sleuthkit/autopsy/corelibs/OpenCvLoader.java
index 79e4678e91..ffc08a597f 100644
--- a/CoreLibs/src/org/sleuthkit/autopsy/corelibs/OpenCvLoader.java
+++ b/CoreLibs/src/org/sleuthkit/autopsy/corelibs/OpenCvLoader.java
@@ -59,7 +59,7 @@ public final class OpenCvLoader {
      *
      * @return True or false.
      */
-    public static boolean hasOpenCvLoaded() {
+    public static boolean openCvIsLoaded() {
         return openCvLoaded;
     }
 
@@ -78,7 +78,7 @@ public final class OpenCvLoader {
      *                              of the core OpenCV library during static
      *                              initialization of this class.
      *
-     * @deprecated Use hasOpenCvLoaded instead.
+     * @deprecated Use openCvIsLoaded instead.
      */
     @Deprecated
     public static boolean isOpenCvLoaded() throws UnsatisfiedLinkError {
diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/objectdetection/ObjectDetectectionFileIngestModule.java b/Experimental/src/org/sleuthkit/autopsy/experimental/objectdetection/ObjectDetectectionFileIngestModule.java
index 9ba93585bf..be7a3c72a7 100644
--- a/Experimental/src/org/sleuthkit/autopsy/experimental/objectdetection/ObjectDetectectionFileIngestModule.java
+++ b/Experimental/src/org/sleuthkit/autopsy/experimental/objectdetection/ObjectDetectectionFileIngestModule.java
@@ -84,7 +84,7 @@ public class ObjectDetectectionFileIngestModule extends FileIngestModuleAdapter
             throw new IngestModule.IngestModuleException(errorMsg);
         }
         
-        if(!OpenCvLoader.hasOpenCvLoaded()) {
+        if(!OpenCvLoader.openCvIsLoaded()) {
             String errorMsg = Bundle.ObjectDetectionFileIngestModule_openCVNotLoaded();
             logger.log(Level.SEVERE, errorMsg);
             throw new IngestModule.IngestModuleException(errorMsg);

From 6e87cf2aec1c1a116b9bae51ed764034afb3aa2a Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 15:44:37 -0400
Subject: [PATCH 09/19] 4940 Fix SQLiteDBConnect

---
 .../autopsy/coreutils/SQLiteDBConnect.java    | 250 +++++++++++++-----
 1 file changed, 177 insertions(+), 73 deletions(-)

diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
index d6c9097cd3..c27c7d1ac8 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
@@ -2,7 +2,7 @@
  *
  * Autopsy Forensic Browser
  *
- * Copyright 2012-2018 Basis Technology Corp.
+ * Copyright 2012-2019 Basis Technology Corp.
  *
  * Copyright 2012 42six Solutions.
  * Contact: aebadirad  42six  com
@@ -30,108 +30,212 @@ import java.sql.Statement;
 import java.util.logging.Level;
 
 /**
- * Database connection class & utilities.
+ * An abstraction that loads a given SQLite driver, establishes a connection to
+ * a given database, and creates a statement for the connection to support basic
+ * SQL operations on the database.
  */
 public class SQLiteDBConnect implements AutoCloseable {
 
-    public String sDriver = "";
-    public String sUrl = null;
-    public int iTimeout = 30;
-    public Connection conn = null;
-    public Statement statement = null;
     private static final Logger logger = Logger.getLogger(SQLiteDBConnect.class.getName());
 
-    /*
-     * Stub constructor for quick instantiation o/t fly for using some of the
-     * ancillary stuff
+    /**
+     * Constructs an abstraction that loads a given SQLite driver, establishes a
+     * connection to a given database, and creates a statement for the
+     * connection to support basic SQL operations on the database.
+     *
+     * @param driver The SQLite driver class name.
+     * @param url    The SQLite database URL to which to connect.
+     *
+     * @throws SQLException If there is an error loading the driver,
+     *                      establishing the connection, or creating a statement
+     *                      for the connection.
      */
-    public SQLiteDBConnect() {
-    }
-
-    /*
-     * quick and dirty constructor to test the database passing the
-     * DriverManager name and the fully loaded url to handle
-     */
- /*
-     * NB this will typically be available if you make this class concrete and
-     * not abstract
-     */
-    public SQLiteDBConnect(String sDriverToLoad, String sUrlToLoad) throws SQLException {
-        init(sDriverToLoad, sUrlToLoad);
-    }
-
-    public final void init(String sDriverVar, String sUrlVar) throws SQLException {
-        setDriver(sDriverVar);
-        setUrl(sUrlVar);
-        setConnection();
-        setStatement();
-    }
-
-    private void setDriver(String sDriverVar) {
-        sDriver = sDriverVar;
-    }
-
-    private void setUrl(String sUrlVar) {
-        sUrl = sUrlVar;
-    }
-
-    public void setConnection() throws SQLException {
+    public SQLiteDBConnect(String driver, String url) throws SQLException {
+        sDriver = driver;
+        sUrl = url;
         try {
             Class.forName(sDriver);
-        } catch (ClassNotFoundException e) {
-
+        } catch (ClassNotFoundException ex) {
+            throw new SQLException(ex);
         }
         conn = DriverManager.getConnection(sUrl);
-    }
-
-    public Connection getConnection() {
-        return conn;
-    }
-
-    public void setStatement() throws SQLException {
-        if (conn == null) {
-            setConnection();
-        }
         statement = conn.createStatement();
-        statement.setQueryTimeout(iTimeout);  // set timeout to 30 sec.
+        statement.setQueryTimeout(iTimeout);
     }
 
-    public Statement getStatement() {
-        return statement;
-    }
-
-    public void executeStmt(String instruction) throws SQLException {
-        statement.executeUpdate(instruction);
-    }
-
-    /** processes an array of instructions e.g. a set of SQL command strings
-     * passed from a file
+    /**
+     * Executes an SQL statement. For use with statements that do not return
+     * result sets.
      *
-     * NB you should ensure you either handle empty lines in files by either
-     * removing them or parsing them out since they will generate spurious
-     * SQLExceptions when they are encountered during the iteration....
+     * @param sqlStatement The SQL statement to execute.
+     *
+     * @throws SQLException If there is an error executing the statement.
      */
-    public void executeStmt(String[] instructionSet) throws SQLException {
-        for (int i = 0; i < instructionSet.length; i++) {
-            executeStmt(instructionSet[i]);
+    public void executeStmt(String sqlStatement) throws SQLException {
+        statement.executeUpdate(sqlStatement);
+    }
+
+    /**
+     * Executes one or more SQL statements in sequence. For use with statements
+     * that do not return result sets.
+     *
+     * @param sqlStatements The SQL statements to execute.
+     *
+     * @throws SQLException If there is an error executing the statements.
+     */
+    public void executeStmt(String[] sqlStatements) throws SQLException {
+        for (String stmt : sqlStatements) {
+            executeStmt(stmt);
         }
     }
 
-    public ResultSet executeQry(String instruction) throws SQLException {
-        return statement.executeQuery(instruction);
+    /**
+     * Executes an SQL query and returns a result set. The caller should close
+     * the result set when finished with it, and should not make any other calls
+     * on this object until finished with the result set.
+     *
+     * @param sqlStatement The SQL query to execute.
+     *
+     * @return The result set.
+     *
+     * @throws SQLException If there is an error executing the query.
+     */
+    public ResultSet executeQry(String sqlStatement) throws SQLException {
+        return statement.executeQuery(sqlStatement);
     }
 
+    /**
+     * Closes the connection to the database. Should be called when the use of
+     * this object is completed, unless the object was constructed in a try with
+     * resources statement, in which case the closing is automatic when the
+     * object goes out of scope.
+     */
     public void closeConnection() {
+        if (conn == null) {
+            return;
+        }
         try {
             conn.close();
         } catch (SQLException ex) {
             logger.log(Level.WARNING, "Unable to close connection to SQLite DB at " + sUrl, ex);
         }
-        //Implementing Autoclosable.close() allows this class to be used in try-with-resources.
     }
 
     @Override
     public void close() {
         closeConnection();
     }
+
+    /*
+     * Partially constructs a utility object for doing basic operations on a
+     * SQLite database. The object is not in a usable state. Further
+     * initialization is required. See init() method.
+     *
+     * @deprecated Do not use.
+     */
+    @Deprecated
+    public SQLiteDBConnect() {
+    }
+
+    /**
+     * Loads a given SQLite driver, establishes a connection to a given
+     * database, and creates a statement for the connection.
+     *
+     * @param driver The SQLite driver class name.
+     * @param url    The SQLite database URL to which to connect.
+     *
+     * @throws SQLException If there is an error establishing the connection or
+     *                      creating a statement for the connection.
+     *
+     * @deprecated Do not use.
+     */
+    @Deprecated
+    public final void init(String driver, String url) throws SQLException {
+        sDriver = driver;
+        sUrl = url;
+        if (conn != null) {
+            closeConnection();
+        }
+        setConnection();
+        setStatement();
+    }
+
+    /**
+     * Gets the connection, if any, to the database.
+     *
+     * @return The connection to the database, may be null.
+     *
+     * @deprecated
+     */
+    @Deprecated
+    public Connection getConnection() {
+        return conn;
+    }
+
+    /**
+     * Sets or resets the connection to the SQLite database, if the SQLite
+     * driver and the dtabase URL have been set.
+     *
+     * @throws SQLException If there is an error loading the driver or
+     *                      establishing the connection.
+     *
+     * @deprecated Do not use.
+     */
+    @Deprecated
+    public void setConnection() throws SQLException {
+        if (sDriver == null || sDriver.isEmpty() || sUrl == null || sUrl.isEmpty()) {
+            throw new SQLException("Driver and or databse URl not initialized");
+        }
+        closeConnection();
+        try {
+            Class.forName(sDriver);
+        } catch (ClassNotFoundException ex) {
+            throw new SQLException(ex);
+        }
+        conn = DriverManager.getConnection(sUrl);
+    }
+
+    /**
+     * Creates a connection to the database if there is none, and creates a
+     * statement using the connection.
+     *
+     * @throws SQLException If there is an error creating the connection or the
+     *                      staement.
+     *
+     * @deprecated Do not use.
+     */
+    @Deprecated
+    public void setStatement() throws SQLException {
+        if (conn == null) {
+            setConnection();
+        }
+        statement = conn.createStatement();
+        statement.setQueryTimeout(iTimeout);
+    }
+
+    /**
+     * Gets the statement, if any, associated with the connection top the
+     * database, if any.
+     *
+     * @return The statement, may be null.
+     *
+     * @deprecated Do not use.
+     */
+    @Deprecated
+    public Statement getStatement() {
+        return statement;
+    }
+
+    /*
+     * The lack of encapsulation of these fields is an error. Access to them
+     * outside of instances of this class is deprecated.
+     *
+     * @deprecated Do not access.
+     */
+    public String sDriver = "";
+    public String sUrl = null;
+    public int iTimeout = 30;
+    public Connection conn = null;
+    public Statement statement = null;
+
 }

From cde9c380805d91a668cd7c85999bf92c30711f54 Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 15:49:27 -0400
Subject: [PATCH 10/19] 4940 Fix SQLiteDBConnect

---
 Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
index c27c7d1ac8..07b0f3ee55 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
@@ -37,6 +37,7 @@ import java.util.logging.Level;
 public class SQLiteDBConnect implements AutoCloseable {
 
     private static final Logger logger = Logger.getLogger(SQLiteDBConnect.class.getName());
+    private static final int STMT_EXEC_TIMEOUT_SECS = 30;
 
     /**
      * Constructs an abstraction that loads a given SQLite driver, establishes a
@@ -60,7 +61,7 @@ public class SQLiteDBConnect implements AutoCloseable {
         }
         conn = DriverManager.getConnection(sUrl);
         statement = conn.createStatement();
-        statement.setQueryTimeout(iTimeout);
+        statement.setQueryTimeout(STMT_EXEC_TIMEOUT_SECS);
     }
 
     /**

From b897243a51693f9cda7b7f068e137ffefd071c37 Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 15:50:53 -0400
Subject: [PATCH 11/19] 4940 Fix SQLiteDBConnect

---
 Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
index 07b0f3ee55..b738bd4c0b 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
@@ -235,7 +235,7 @@ public class SQLiteDBConnect implements AutoCloseable {
      */
     public String sDriver = "";
     public String sUrl = null;
-    public int iTimeout = 30;
+    public int iTimeout = STMT_EXEC_TIMEOUT_SECS;
     public Connection conn = null;
     public Statement statement = null;
 

From 1a571c4545ef12c724687038a80509e8679798ff Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 15:52:42 -0400
Subject: [PATCH 12/19] 4940 Fix SQLiteDBConnect

---
 Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
index b738bd4c0b..6f37cbfe5f 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
@@ -166,7 +166,7 @@ public class SQLiteDBConnect implements AutoCloseable {
      *
      * @return The connection to the database, may be null.
      *
-     * @deprecated
+     * @deprecated Do not use.
      */
     @Deprecated
     public Connection getConnection() {

From cb7754290c24b5b3725cf72a12e984a0734c32a8 Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 15:54:30 -0400
Subject: [PATCH 13/19] 4940 Fix SQLiteDBConnect

---
 .../autopsy/coreutils/SQLiteDBConnect.java    | 24 +++++++++----------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
index 6f37cbfe5f..5f11e867d9 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
@@ -161,18 +161,6 @@ public class SQLiteDBConnect implements AutoCloseable {
         setStatement();
     }
 
-    /**
-     * Gets the connection, if any, to the database.
-     *
-     * @return The connection to the database, may be null.
-     *
-     * @deprecated Do not use.
-     */
-    @Deprecated
-    public Connection getConnection() {
-        return conn;
-    }
-
     /**
      * Sets or resets the connection to the SQLite database, if the SQLite
      * driver and the dtabase URL have been set.
@@ -196,6 +184,18 @@ public class SQLiteDBConnect implements AutoCloseable {
         conn = DriverManager.getConnection(sUrl);
     }
 
+    /**
+     * Gets the connection, if any, to the database.
+     *
+     * @return The connection to the database, may be null.
+     *
+     * @deprecated Do not use.
+     */
+    @Deprecated
+    public Connection getConnection() {
+        return conn;
+    }
+    
     /**
      * Creates a connection to the database if there is none, and creates a
      * statement using the connection.

From 917919398dbc526c1292ec014b7291fdf9c7154a Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 15:55:49 -0400
Subject: [PATCH 14/19] 4940 Fix SQLiteDBConnect

---
 Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
index 5f11e867d9..16a0143a39 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
@@ -130,7 +130,7 @@ public class SQLiteDBConnect implements AutoCloseable {
     /*
      * Partially constructs a utility object for doing basic operations on a
      * SQLite database. The object is not in a usable state. Further
-     * initialization is required. See init() method.
+     * initialization is required. See methods below.
      *
      * @deprecated Do not use.
      */

From e37d49d90b81dbb6503becb6816eacff4ca54896 Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 15:57:47 -0400
Subject: [PATCH 15/19] 4940 Fix SQLiteDBConnect

---
 .../org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java    | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
index 16a0143a39..6ed93d2975 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
@@ -154,9 +154,7 @@ public class SQLiteDBConnect implements AutoCloseable {
     public final void init(String driver, String url) throws SQLException {
         sDriver = driver;
         sUrl = url;
-        if (conn != null) {
-            closeConnection();
-        }
+        closeConnection();
         setConnection();
         setStatement();
     }
@@ -195,7 +193,7 @@ public class SQLiteDBConnect implements AutoCloseable {
     public Connection getConnection() {
         return conn;
     }
-    
+
     /**
      * Creates a connection to the database if there is none, and creates a
      * statement using the connection.

From 99c6856a087cddc2d658e19deffae32bca295b23 Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 16:01:35 -0400
Subject: [PATCH 16/19] 4940 Fix SQLiteDBConnect

---
 Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
index 6ed93d2975..a22071fa78 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/SQLiteDBConnect.java
@@ -161,7 +161,7 @@ public class SQLiteDBConnect implements AutoCloseable {
 
     /**
      * Sets or resets the connection to the SQLite database, if the SQLite
-     * driver and the dtabase URL have been set.
+     * driver and the database URL have been set.
      *
      * @throws SQLException If there is an error loading the driver or
      *                      establishing the connection.
@@ -213,7 +213,7 @@ public class SQLiteDBConnect implements AutoCloseable {
     }
 
     /**
-     * Gets the statement, if any, associated with the connection top the
+     * Gets the statement, if any, associated with the connection to the
      * database, if any.
      *
      * @return The statement, may be null.

From 04feb78a63fcbb96cbdabc52ac396586881ba385 Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 16:28:39 -0400
Subject: [PATCH 17/19] Clarify docs for AppSQLiteDD.findAppDatabases

---
 .../autopsy/coreutils/AppSQLiteDB.java        | 215 +++++++++---------
 1 file changed, 108 insertions(+), 107 deletions(-)

diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java b/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java
index 0929bf8078..2e0564d836 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java
@@ -16,7 +16,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.sleuthkit.autopsy.coreutils;
 
 import java.io.Closeable;
@@ -43,74 +42,76 @@ import org.sleuthkit.datamodel.SleuthkitCase;
 import org.sleuthkit.datamodel.TskCoreException;
 
 /**
- * An abstraction around an SQLite app DB found in a data source.
- * This class makes a copy of it, along with any meta files (WAL, SHM),
- * opens a SQLite connection to it, and runs queries on it.
+ * An abstraction around an SQLite app DB found in a data source. This class
+ * makes a copy of it, along with any meta files (WAL, SHM), opens a SQLite
+ * connection to it, and runs queries on it.
  */
 public final class AppSQLiteDB {
+
     private final Logger logger = Logger.getLogger(AppSQLiteDB.class.getName());
-    
+
     private final AbstractFile dbAbstractFile;  // AbstractFile for the DB file
-    
+
     private final Connection connection;
     private final Statement statement;
-    
-    
+
     /**
-     * Class to abstract the abstract file for a DB file and its  on disk copy
-     * 
+     * Class to abstract the abstract file for a DB file and its on disk copy
+     *
      */
     private static final class AppSQLiteDBFileBundle {
+
         private final AbstractFile dbAbstractFile;
         private final File dbFileCopy;
-        
+
         AppSQLiteDBFileBundle(AbstractFile dbAbstractFile, File dbFileCopy) {
             this.dbAbstractFile = dbAbstractFile;
             this.dbFileCopy = dbFileCopy;
         }
-        
+
         AbstractFile getAbstractFile() {
             return dbAbstractFile;
         }
-        
+
         File getFileCopy() {
             return dbFileCopy;
         }
-        
+
     }
-    
+
     private AppSQLiteDB(AppSQLiteDBFileBundle appSQLiteDBFileBundle) throws ClassNotFoundException, SQLException {
         this.dbAbstractFile = appSQLiteDBFileBundle.getAbstractFile();
-        
+
         Class.forName("org.sqlite.JDBC"); //NON-NLS //load JDBC driver
         connection = DriverManager.getConnection("jdbc:sqlite:" + appSQLiteDBFileBundle.getFileCopy().getPath()); //NON-NLS
         statement = connection.createStatement();
     }
-    
-   
+
     /**
-     * Looks for the given SQLIte database filename, with matching path substring. 
-     * It looks for exact name or a pattern match based on a input parameter.
-     * It makes a copy of each matching file, and creates an instance of 
-     * AppSQLiteDB to help query the DB. 
-     * 
-     * A list of AppSQLiteDB instances is returned, one for each 
-     * match found.
-     * 
-     * @param dataSource data source to search in 
-     * @param dbName db file name to search
-     * @param matchExactName whether to look for exact file name or a pattern match
-     * @param parentPathSubstr path substring to match
-     * 
-     * @return A list of abstract files matching the specified name and path.
-     *         Returns an empty list if no matching database is found.
+     * Looks for application SQLite database files with a given name or name
+     * substring and a given parent path or parent path substring. For each
+     * database file found, a temporary copy is made and an open connection to
+     * the database in the form of an AppSQLiteDB object is created and
+     * returned.
+     *
+     * @param dataSource       The data source to be searched for the database
+     *                         files.
+     * @param dbFileName       The database file name or file name substring for
+     *                         which to search.
+     * @param matchExactName   Whether or not the database file name argument is
+     *                         the full database file name or a substring.
+     * @param parentPathSubstr The parent path substring, may be the empty
+     *                         string to mathc any parent path.
+     *
+     * @return A list, possibly empty, of AppSQLiteDB objects for the files that
+     *         were found, copied, and connected to.
      */
     public static Collection findAppDatabases(DataSource dataSource,
-            String dbName, boolean matchExactName, String parentPathSubstr) {
-        
-        List appDbs = new ArrayList<> ();
+            String dbFileName, boolean matchExactName, String parentPathSubstr) {
+
+        List appDbs = new ArrayList<>();
         try {
-            Collection dbFileBundles = findAndCopySQLiteDB( dataSource,  dbName,  matchExactName, parentPathSubstr, false);
+            Collection dbFileBundles = findAndCopySQLiteDB(dataSource, dbFileName, matchExactName, parentPathSubstr, false);
             dbFileBundles.forEach((dbFileBundle) -> {
                 try {
                     AppSQLiteDB appSQLiteDB = new AppSQLiteDB(dbFileBundle);
@@ -120,102 +121,105 @@ public final class AppSQLiteDB {
                 }
             });
         } catch (TskCoreException ex) {
-            Logger.getLogger(AppSQLiteDB.class.getName()).log(Level.SEVERE, String.format("Error finding App database files with name = '%s' and path = '%s'.", dbName, parentPathSubstr), ex); //NON-NLS
+            Logger.getLogger(AppSQLiteDB.class.getName()).log(Level.SEVERE, String.format("Error finding App database files with name = '%s' and path = '%s'.", dbFileName, parentPathSubstr), ex); //NON-NLS
         }
-        
+
         return appDbs;
     }
-    
+
     public AbstractFile getDBFile() {
         return this.dbAbstractFile;
     }
-    
+
     /**
      * Attaches a database to the current connection.
-     * 
-     * Finds the specified database file in the specified folder.  
-     * If found, makes copy of the database in the case folder and
-     * run ATTACH DATABASE sql.
-     * 
+     *
+     * Finds the specified database file in the specified folder. If found,
+     * makes copy of the database in the case folder and run ATTACH DATABASE
+     * sql.
+     *
      * @param dataSource data source in which to look file the db file
-     * @param dbName name of db file to look for
-     * @param dbPath path in which to look for the db file
-     * @param dbAlias alias name to attach the database as
-     * 
-     * @return abstract file for the matching db file.
-     *         null if no match is found.
+     * @param dbName     name of db file to look for
+     * @param dbPath     path in which to look for the db file
+     * @param dbAlias    alias name to attach the database as
+     *
+     * @return abstract file for the matching db file. null if no match is
+     *         found.
      *
      * @throws SQLException in case of an SQL error
      */
-    public AbstractFile attachDatabase(DataSource dataSource, String dbName, 
-                    String dbPath, String dbAlias) throws SQLException {
+    public AbstractFile attachDatabase(DataSource dataSource, String dbName,
+            String dbPath, String dbAlias) throws SQLException {
         try {
             // find and copy DB files with exact name and path.
-            Collection dbFileBundles = findAndCopySQLiteDB(dataSource,  dbName, true, dbPath, true);
+            Collection dbFileBundles = findAndCopySQLiteDB(dataSource, dbName, true, dbPath, true);
             if (!dbFileBundles.isEmpty()) {
                 AppSQLiteDBFileBundle dbFileBundle = dbFileBundles.iterator().next();
                 String attachDbSql = String.format("ATTACH DATABASE '%s' AS '%s'", dbFileBundle.getFileCopy().getPath(), dbAlias); //NON-NLS
-                statement.executeUpdate(attachDbSql); 
-                    
+                statement.executeUpdate(attachDbSql);
+
                 return dbFileBundle.getAbstractFile();
             }
         } catch (TskCoreException ex) {
             Logger.getLogger(AppSQLiteDB.class.getName()).log(Level.SEVERE, String.format("Error attaching to App database files with name = '%s' and path = '%s'.", dbName, dbPath), ex); //NON-NLS
         }
-        
+
         return null;
     }
-    
+
     /**
-     * Finds database file with the specified name, makes a copy of the file in the case directory, 
-     * and returns the AbstractFile as well as the file copy.
-     * 
-     * @param dataSource data source to search in 
-     * @param dbName db file name to search
-     * @param matchExactName whether to look for exact file name or a pattern match
-     * @param dbPath path to match
-     * @param matchExactPath whether to look for exact path name or a substring match
-     * 
+     * Finds database file with the specified name, makes a copy of the file in
+     * the case directory, and returns the AbstractFile as well as the file
+     * copy.
+     *
+     * @param dataSource     data source to search in
+     * @param dbName         db file name to search
+     * @param matchExactName whether to look for exact file name or a pattern
+     *                       match
+     * @param dbPath         path to match
+     * @param matchExactPath whether to look for exact path name or a substring
+     *                       match
+     *
      * @return a collection of AppSQLiteDBFileBundle
-     * 
-     * @throws TskCoreException 
+     *
+     * @throws TskCoreException
      */
-    private static Collection findAndCopySQLiteDB(DataSource dataSource, String dbName, 
-                    boolean matchExactName,  String dbPath, boolean matchExactPath) throws TskCoreException {
-        
+    private static Collection findAndCopySQLiteDB(DataSource dataSource, String dbName,
+            boolean matchExactName, String dbPath, boolean matchExactPath) throws TskCoreException {
+
         Case openCase;
         try {
             openCase = Case.getCurrentCaseThrows();
         } catch (NoCurrentCaseException ex) {
             throw new TskCoreException("Failed to get current case.", ex);
         }
-        
-        List dbFileBundles = new ArrayList<> ();
+
+        List dbFileBundles = new ArrayList<>();
         long fileId = 0;
         String localDiskPath = "";
-        
+
         SleuthkitCase skCase = openCase.getSleuthkitCase();
         String parentPath = dbPath.replace("\\", "/");
         parentPath = SleuthkitCase.escapeSingleQuotes(parentPath);
-        
+
         String whereClause;
         if (matchExactName) {
             whereClause = String.format("LOWER(name) = LOWER('%s')", dbName);
         } else {
-            whereClause = String.format("LOWER(name) LIKE LOWER('%%%s%%') AND LOWER(name) NOT LIKE LOWER('%%journal%%')", dbName );
+            whereClause = String.format("LOWER(name) LIKE LOWER('%%%s%%') AND LOWER(name) NOT LIKE LOWER('%%journal%%')", dbName);
         }
         if (matchExactPath) {
-            whereClause += String.format(" AND LOWER(parent_path) = LOWER('%s')", parentPath );
+            whereClause += String.format(" AND LOWER(parent_path) = LOWER('%s')", parentPath);
         } else {
-            whereClause += String.format(" AND LOWER(parent_path) LIKE LOWER('%%%s%%')", parentPath );
+            whereClause += String.format(" AND LOWER(parent_path) LIKE LOWER('%%%s%%')", parentPath);
         }
         whereClause += String.format(" AND data_source_obj_id = %s", dataSource.getId());
-        
+
         List absFiles = skCase.findAllFilesWhere(whereClause);
         for (AbstractFile absFile : absFiles) {
             try {
                 localDiskPath = openCase.getTempDirectory()
-                                        + File.separator + absFile.getId() + absFile.getName();
+                        + File.separator + absFile.getId() + absFile.getName();
                 File jFile = new java.io.File(localDiskPath);
                 fileId = absFile.getId();
                 ContentUtils.writeToFile(absFile, jFile);
@@ -231,61 +235,58 @@ public final class AppSQLiteDB {
                 Logger.getLogger(AppSQLiteDB.class.getName()).log(Level.WARNING, String.format("Error reading content from file '%s' (id=%d).", absFile.getName(), fileId), ex); //NON-NLS
             } catch (IOException | NoCurrentCaseException | TskCoreException ex) {
                 Logger.getLogger(AppSQLiteDB.class.getName()).log(Level.SEVERE, String.format("Error creating AppSQLiteDB  for file '%s' (id=%d) to  copied to '%s'.", absFile.getName(), fileId, localDiskPath), ex); //NON-NLS
-            } 
+            }
         }
-        
+
         return dbFileBundles;
     }
-    
+
     /**
      * Detaches the specified database from the connection
-     * 
+     *
      * @param dbAlias alias for database to detach
-     * 
-     * @throws SQLException 
+     *
+     * @throws SQLException
      */
-    public void detachDatabase(String dbAlias) throws SQLException  {
+    public void detachDatabase(String dbAlias) throws SQLException {
         String detachDbSql = String.format("DETACH DATABASE '%s'", dbAlias);
         statement.executeUpdate(detachDbSql); //NON-NLS
     }
-     
-    
+
     /**
      * Runs the given query on the database and returns result set.
-
+     *
      * @param queryStr SQL string for the query to run
-     * 
-     * @return ResultSet from running the query. 
-     * 
+     *
+     * @return ResultSet from running the query.
+     *
      * @throws SQLException in case of an error.
-     *         
+     *
      */
     public ResultSet runQuery(String queryStr) throws SQLException {
         ResultSet resultSet = null;
-       
+
         if (null != queryStr) {
             resultSet = statement.executeQuery(queryStr); //NON-NLS
-        } 
+        }
         return resultSet;
     }
-    
+
     /**
      * Closes the DB connection.
-     * 
+     *
      */
     public void close() {
-        
+
         // Close the DB connection
         try {
             statement.close();
             connection.close();
         } catch (SQLException e) {
             logger.log(Level.SEVERE, "Error closing the database", e); //NON-NLS
-        } 
+        }
     }
-    
-    
-    
+
     /**
      * Searches for a meta file associated with the give SQLite database. If
      * found, it copies this file into the temp directory of the current case.
@@ -313,11 +314,11 @@ public final class AppSQLiteDB {
         if (metaFiles != null) {
             for (AbstractFile metaFile : metaFiles) {
                 String localDiskPath = openCase.getTempDirectory()
-                                            + File.separator + sqliteFile.getId() + metaFile.getName();
+                        + File.separator + sqliteFile.getId() + metaFile.getName();
                 File localMetaFile = new File(localDiskPath);
                 if (!localMetaFile.exists()) {
                     ContentUtils.writeToFile(metaFile, localMetaFile);
-                }  
+                }
             }
         }
     }

From d9a6a35b7c6a1b17995b9a7e52923b1b08792321 Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 16:30:28 -0400
Subject: [PATCH 18/19] Clarify docs for AppSQLiteDD.findAppDatabases

---
 Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java b/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java
index 2e0564d836..af7cb895da 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java
@@ -100,8 +100,8 @@ public final class AppSQLiteDB {
      *                         which to search.
      * @param matchExactName   Whether or not the database file name argument is
      *                         the full database file name or a substring.
-     * @param parentPathSubstr The parent path substring, may be the empty
-     *                         string to mathc any parent path.
+     * @param parentPathSubstr The parent path substring, may pass the empty
+     *                         string to match any parent path.
      *
      * @return A list, possibly empty, of AppSQLiteDB objects for the files that
      *         were found, copied, and connected to.

From 515c736e7ee834ee52e783cb5d7ab006c5231e24 Mon Sep 17 00:00:00 2001
From: Richard Cordovano 
Date: Fri, 4 Oct 2019 16:31:10 -0400
Subject: [PATCH 19/19] Clarify docs for AppSQLiteDD.findAppDatabases

---
 Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java | 1 -
 1 file changed, 1 deletion(-)

diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java b/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java
index af7cb895da..219d0497ff 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/AppSQLiteDB.java
@@ -18,7 +18,6 @@
  */
 package org.sleuthkit.autopsy.coreutils;
 
-import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.sql.Connection;