diff --git a/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties b/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties
index 0161fd855c..27068a5f55 100644
--- a/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties
+++ b/Core/src/org/sleuthkit/autopsy/communications/Bundle.properties
@@ -23,6 +23,15 @@ CVTTopComponent.vizPanel.TabConstraints.tabTitle_1=Visualize
VisualizationPanel.jButton6.text=Hierarchy
VisualizationPanel.jButton7.text=Circle
VisualizationPanel.jButton8.text=Organic
-VisualizationPanel.zoomOutButton.text=
-VisualizationPanel.zoomInButton.text=
VisualizationPanel.fitGraphButton.text=
+VisualizationPanel.statusLabel.text=
+VisualizationPanel.jTextArea1.text=Right-click an account in the Browse Accounts table, and select 'Visualize' to begin.
+VisualizationPanel.jLabel1.text=Layouts:
+VisualizationPanel.fitZoomButton.text=
+VisualizationPanel.zoomActualButton.text=
+VisualizationPanel.zoomInButton.text=
+VisualizationPanel.zoomOutButton.text=
+VisualizationPanel.circleLayoutButton.text=Circle
+VisualizationPanel.OrganicLayoutButton.text=Organic
+VisualizationPanel.fastOrganicLayoutButton.text=Fast Organic
+VisualizationPanel.hierarchyLayoutButton.text=Hierarchy
diff --git a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form
index 13517bf10b..baca6eec89 100644
--- a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form
+++ b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.form
@@ -11,7 +11,7 @@
-
+
@@ -38,68 +38,216 @@
-
+
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -120,22 +268,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -152,43 +284,37 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java
index 096abcc93a..0dd0c4844d 100644
--- a/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/communications/VisualizationPanel.java
@@ -52,16 +52,19 @@ import java.util.logging.Level;
import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.JButton;
+import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JProgressBar;
import javax.swing.JSplitPane;
+import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
import org.jdesktop.layout.GroupLayout;
+import org.jdesktop.layout.LayoutStyle;
import org.openide.explorer.ExplorerManager;
import org.openide.explorer.ExplorerUtils;
import org.openide.nodes.Node;
@@ -289,11 +292,15 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
}
private void rebuildGraph() throws TskCoreException {
-
- SwingWorker, ?> rebuild = graph.rebuild(new ProgressIndicatorImpl(), commsManager, currentFilter);
-
- rebuild.execute();
-
+ if (graph.hasPinnedAccounts()) {
+ borderLayoutPanel.remove(jPanel1);
+ borderLayoutPanel.add(graphComponent, BorderLayout.CENTER);
+ SwingWorker, ?> rebuild = graph.rebuild(new ProgressIndicatorImpl(), commsManager, currentFilter);
+ rebuild.execute();
+ } else {
+ borderLayoutPanel.remove(graphComponent);
+ borderLayoutPanel.add(jPanel1, BorderLayout.CENTER);
+ }
}
@Override
@@ -348,17 +355,23 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
splitPane = new JSplitPane();
borderLayoutPanel = new JPanel();
- jToolBar1 = new JToolBar();
- jButton6 = new JButton();
- jButton1 = new JButton();
- jButton8 = new JButton();
- jButton7 = new JButton();
+ jToolBar2 = new JToolBar();
+ statusLabel = new JLabel();
+ progresPanel = new JPanel();
+ progressBar = new JProgressBar();
+ jPanel1 = new JPanel();
+ jTextArea1 = new JTextArea();
+ jPanel2 = new JPanel();
+ jLabel1 = new JLabel();
+ hierarchyLayoutButton = new JButton();
+ fastOrganicLayoutButton = new JButton();
+ OrganicLayoutButton = new JButton();
+ circleLayoutButton = new JButton();
jSeparator1 = new JToolBar.Separator();
zoomOutButton = new JButton();
- fitGraphButton = new JButton();
zoomInButton = new JButton();
- statusPanel = new JPanel();
- progressBar = new JProgressBar();
+ zoomActualButton = new JButton();
+ fitZoomButton = new JButton();
setLayout(new BorderLayout());
@@ -367,52 +380,96 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
borderLayoutPanel.setLayout(new BorderLayout());
- jToolBar1.setRollover(true);
+ jToolBar2.setFloatable(false);
+ jToolBar2.setRollover(true);
- jButton6.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.jButton6.text")); // NOI18N
- jButton6.setFocusable(false);
- jButton6.setHorizontalTextPosition(SwingConstants.CENTER);
- jButton6.setVerticalTextPosition(SwingConstants.BOTTOM);
- jButton6.addActionListener(new ActionListener() {
+ statusLabel.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.statusLabel.text")); // NOI18N
+ jToolBar2.add(statusLabel);
+
+ progressBar.setMaximumSize(new Dimension(200, 14));
+ progressBar.setStringPainted(true);
+
+ GroupLayout progresPanelLayout = new GroupLayout(progresPanel);
+ progresPanel.setLayout(progresPanelLayout);
+ progresPanelLayout.setHorizontalGroup(progresPanelLayout.createParallelGroup(GroupLayout.LEADING)
+ .add(GroupLayout.TRAILING, progresPanelLayout.createSequentialGroup()
+ .add(0, 651, Short.MAX_VALUE)
+ .add(progressBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
+ );
+ progresPanelLayout.setVerticalGroup(progresPanelLayout.createParallelGroup(GroupLayout.LEADING)
+ .add(GroupLayout.TRAILING, progresPanelLayout.createSequentialGroup()
+ .add(0, 0, 0)
+ .add(progressBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
+ );
+
+ jToolBar2.add(progresPanel);
+
+ borderLayoutPanel.add(jToolBar2, BorderLayout.PAGE_END);
+
+ jTextArea1.setBackground(new Color(240, 240, 240));
+ jTextArea1.setColumns(20);
+ jTextArea1.setLineWrap(true);
+ jTextArea1.setRows(5);
+ jTextArea1.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.jTextArea1.text")); // NOI18N
+
+ GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
+ jPanel1.setLayout(jPanel1Layout);
+ jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.LEADING)
+ .add(GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
+ .addContainerGap(213, Short.MAX_VALUE)
+ .add(jTextArea1, GroupLayout.PREFERRED_SIZE, 372, GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(214, Short.MAX_VALUE))
+ );
+ jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.LEADING)
+ .add(GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
+ .addContainerGap(200, Short.MAX_VALUE)
+ .add(jTextArea1, GroupLayout.PREFERRED_SIZE, 43, GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(200, Short.MAX_VALUE))
+ );
+
+ borderLayoutPanel.add(jPanel1, BorderLayout.CENTER);
+
+ jLabel1.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.jLabel1.text")); // NOI18N
+
+ hierarchyLayoutButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.hierarchyLayoutButton.text")); // NOI18N
+ hierarchyLayoutButton.setFocusable(false);
+ hierarchyLayoutButton.setHorizontalTextPosition(SwingConstants.CENTER);
+ hierarchyLayoutButton.setVerticalTextPosition(SwingConstants.BOTTOM);
+ hierarchyLayoutButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
- jButton6ActionPerformed(evt);
+ hierarchyLayoutButtonActionPerformed(evt);
}
});
- jToolBar1.add(jButton6);
- jButton1.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.jButton1.text")); // NOI18N
- jButton1.setFocusable(false);
- jButton1.setHorizontalTextPosition(SwingConstants.CENTER);
- jButton1.setVerticalTextPosition(SwingConstants.BOTTOM);
- jButton1.addActionListener(new ActionListener() {
+ fastOrganicLayoutButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.fastOrganicLayoutButton.text")); // NOI18N
+ fastOrganicLayoutButton.setFocusable(false);
+ fastOrganicLayoutButton.setHorizontalTextPosition(SwingConstants.CENTER);
+ fastOrganicLayoutButton.setVerticalTextPosition(SwingConstants.BOTTOM);
+ fastOrganicLayoutButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
- jButton1ActionPerformed(evt);
+ fastOrganicLayoutButtonActionPerformed(evt);
}
});
- jToolBar1.add(jButton1);
- jButton8.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.jButton8.text")); // NOI18N
- jButton8.setFocusable(false);
- jButton8.setHorizontalTextPosition(SwingConstants.CENTER);
- jButton8.setVerticalTextPosition(SwingConstants.BOTTOM);
- jButton8.addActionListener(new ActionListener() {
+ OrganicLayoutButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.OrganicLayoutButton.text")); // NOI18N
+ OrganicLayoutButton.setFocusable(false);
+ OrganicLayoutButton.setHorizontalTextPosition(SwingConstants.CENTER);
+ OrganicLayoutButton.setVerticalTextPosition(SwingConstants.BOTTOM);
+ OrganicLayoutButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
- jButton8ActionPerformed(evt);
+ OrganicLayoutButtonActionPerformed(evt);
}
});
- jToolBar1.add(jButton8);
- jButton7.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.jButton7.text")); // NOI18N
- jButton7.setFocusable(false);
- jButton7.setHorizontalTextPosition(SwingConstants.CENTER);
- jButton7.setVerticalTextPosition(SwingConstants.BOTTOM);
- jButton7.addActionListener(new ActionListener() {
+ circleLayoutButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.circleLayoutButton.text")); // NOI18N
+ circleLayoutButton.setFocusable(false);
+ circleLayoutButton.setHorizontalTextPosition(SwingConstants.CENTER);
+ circleLayoutButton.setVerticalTextPosition(SwingConstants.BOTTOM);
+ circleLayoutButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
- jButton7ActionPerformed(evt);
+ circleLayoutButtonActionPerformed(evt);
}
});
- jToolBar1.add(jButton7);
- jToolBar1.add(jSeparator1);
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
@@ -424,19 +481,6 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
zoomOutButtonActionPerformed(evt);
}
});
- jToolBar1.add(zoomOutButton);
-
- fitGraphButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/magnifier-zoom-fit.png"))); // NOI18N
- fitGraphButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.fitGraphButton.text")); // NOI18N
- fitGraphButton.setFocusable(false);
- fitGraphButton.setHorizontalTextPosition(SwingConstants.CENTER);
- fitGraphButton.setVerticalTextPosition(SwingConstants.BOTTOM);
- fitGraphButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent evt) {
- fitGraphButtonActionPerformed(evt);
- }
- });
- jToolBar1.add(fitGraphButton);
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
@@ -448,38 +492,86 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
zoomInButtonActionPerformed(evt);
}
});
- jToolBar1.add(zoomInButton);
- borderLayoutPanel.add(jToolBar1, BorderLayout.NORTH);
+ 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.setFocusable(false);
+ zoomActualButton.setHorizontalTextPosition(SwingConstants.CENTER);
+ zoomActualButton.setVerticalTextPosition(SwingConstants.BOTTOM);
+ zoomActualButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent evt) {
+ zoomActualButtonActionPerformed(evt);
+ }
+ });
- progressBar.setMaximumSize(new Dimension(200, 14));
- progressBar.setStringPainted(true);
+ 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
+ fitZoomButton.setFocusable(false);
+ fitZoomButton.setHorizontalTextPosition(SwingConstants.CENTER);
+ fitZoomButton.setVerticalTextPosition(SwingConstants.BOTTOM);
+ fitZoomButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent evt) {
+ fitZoomButtonActionPerformed(evt);
+ }
+ });
- GroupLayout statusPanelLayout = new GroupLayout(statusPanel);
- statusPanel.setLayout(statusPanelLayout);
- statusPanelLayout.setHorizontalGroup(statusPanelLayout.createParallelGroup(GroupLayout.LEADING)
- .add(GroupLayout.TRAILING, statusPanelLayout.createSequentialGroup()
- .addContainerGap(516, Short.MAX_VALUE)
- .add(progressBar, GroupLayout.PREFERRED_SIZE, 200, GroupLayout.PREFERRED_SIZE)
- .addContainerGap())
- );
- statusPanelLayout.setVerticalGroup(statusPanelLayout.createParallelGroup(GroupLayout.LEADING)
- .add(GroupLayout.TRAILING, statusPanelLayout.createSequentialGroup()
+ GroupLayout jPanel2Layout = new GroupLayout(jPanel2);
+ jPanel2.setLayout(jPanel2Layout);
+ jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(GroupLayout.LEADING)
+ .add(jPanel2Layout.createSequentialGroup()
.add(3, 3, 3)
- .add(progressBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+ .add(jLabel1)
+ .addPreferredGap(LayoutStyle.RELATED)
+ .add(fastOrganicLayoutButton)
+ .addPreferredGap(LayoutStyle.RELATED)
+ .add(OrganicLayoutButton)
+ .addPreferredGap(LayoutStyle.RELATED)
+ .add(hierarchyLayoutButton)
+ .addPreferredGap(LayoutStyle.RELATED)
+ .add(circleLayoutButton)
+ .addPreferredGap(LayoutStyle.RELATED)
+ .add(jSeparator1, GroupLayout.PREFERRED_SIZE, 10, GroupLayout.PREFERRED_SIZE)
+ .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)
+ .addContainerGap(214, Short.MAX_VALUE))
+ );
+ jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(GroupLayout.LEADING)
+ .add(jPanel2Layout.createSequentialGroup()
+ .add(3, 3, 3)
+ .add(jPanel2Layout.createParallelGroup(GroupLayout.CENTER)
+ .add(jLabel1, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE)
+ .add(hierarchyLayoutButton)
+ .add(fastOrganicLayoutButton)
+ .add(OrganicLayoutButton)
+ .add(circleLayoutButton)
+ .add(jSeparator1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .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(3, 3, 3))
);
- borderLayoutPanel.add(statusPanel, BorderLayout.SOUTH);
+ borderLayoutPanel.add(jPanel2, BorderLayout.PAGE_START);
splitPane.setLeftComponent(borderLayoutPanel);
add(splitPane, BorderLayout.CENTER);
}// //GEN-END:initComponents
- private void jButton1ActionPerformed(ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
- morph(new mxFastOrganicLayout(graph));
- }//GEN-LAST:event_jButton1ActionPerformed
+ private void fitZoomButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_fitZoomButtonActionPerformed
+ fitGraph();
+ }//GEN-LAST:event_fitZoomButtonActionPerformed
+
+ private void zoomActualButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_zoomActualButtonActionPerformed
+ graphComponent.zoomActual();
+ }//GEN-LAST:event_zoomActualButtonActionPerformed
private void zoomInButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_zoomInButtonActionPerformed
graphComponent.zoomIn();
@@ -489,17 +581,21 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
graphComponent.zoomOut();
}//GEN-LAST:event_zoomOutButtonActionPerformed
- private void jButton6ActionPerformed(ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
- morph(new mxHierarchicalLayout(graph));
- }//GEN-LAST:event_jButton6ActionPerformed
-
- private void jButton7ActionPerformed(ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed
+ private void circleLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_circleLayoutButtonActionPerformed
morph(new mxCircleLayout(graph));
- }//GEN-LAST:event_jButton7ActionPerformed
+ }//GEN-LAST:event_circleLayoutButtonActionPerformed
- private void jButton8ActionPerformed(ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed
+ private void OrganicLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_OrganicLayoutButtonActionPerformed
applyOrganicLayout(10);
- }//GEN-LAST:event_jButton8ActionPerformed
+ }//GEN-LAST:event_OrganicLayoutButtonActionPerformed
+
+ private void fastOrganicLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_fastOrganicLayoutButtonActionPerformed
+ morph(new mxFastOrganicLayout(graph));
+ }//GEN-LAST:event_fastOrganicLayoutButtonActionPerformed
+
+ private void hierarchyLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_hierarchyLayoutButtonActionPerformed
+ morph(new mxHierarchicalLayout(graph));
+ }//GEN-LAST:event_hierarchyLayoutButtonActionPerformed
private void applyOrganicLayout(int iterations) {
mxOrganicLayout mxOrganicLayout = new mxOrganicLayout(graph) {
@@ -513,10 +609,6 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
morph(mxOrganicLayout);
}
- private void fitGraphButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_fitGraphButtonActionPerformed
- fitGraph();
- }//GEN-LAST:event_fitGraphButtonActionPerformed
-
private void fitGraph() {
final Object[] childVertices = graph.getChildVertices(graph.getDefaultParent());
mxRectangle boundsForCells = graph.getBoundsForCells(childVertices, true, true, true);
@@ -529,10 +621,6 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
}
graph.getView().setTranslate(new mxPoint(translate.getX() - boundsForCells.getX(), translate.getY() - boundsForCells.getY()));
-
-// graphComponent.zoomActual();
-// graphComponent.zoomAndCenter();
-// graph.getGraphBounds().getWidth()
}
private void morph(mxIGraphLayout layout) {
@@ -560,17 +648,23 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
}
// Variables declaration - do not modify//GEN-BEGIN:variables
+ private JButton OrganicLayoutButton;
private JPanel borderLayoutPanel;
- private JButton fitGraphButton;
- private JButton jButton1;
- private JButton jButton6;
- private JButton jButton7;
- private JButton jButton8;
+ private JButton circleLayoutButton;
+ private JButton fastOrganicLayoutButton;
+ private JButton fitZoomButton;
+ private JButton hierarchyLayoutButton;
+ private JLabel jLabel1;
+ private JPanel jPanel1;
+ private JPanel jPanel2;
private JToolBar.Separator jSeparator1;
- private JToolBar jToolBar1;
+ private JTextArea jTextArea1;
+ private JToolBar jToolBar2;
+ private JPanel progresPanel;
private JProgressBar progressBar;
private JSplitPane splitPane;
- private JPanel statusPanel;
+ private JLabel statusLabel;
+ private JButton zoomActualButton;
private JButton zoomInButton;
private JButton zoomOutButton;
// End of variables declaration//GEN-END:variables
diff --git a/Core/src/org/sleuthkit/autopsy/communications/mxGraphImpl.java b/Core/src/org/sleuthkit/autopsy/communications/mxGraphImpl.java
index 5f7397b1b5..da235f1526 100644
--- a/Core/src/org/sleuthkit/autopsy/communications/mxGraphImpl.java
+++ b/Core/src/org/sleuthkit/autopsy/communications/mxGraphImpl.java
@@ -30,7 +30,6 @@ import com.mxgraph.view.mxStylesheet;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -77,6 +76,7 @@ final class mxGraphImpl extends mxGraph {
public mxGraphImpl() {
super(mxStylesheet);
+ setAutoSizeCells(true);
setCellsCloneable(false);
setDropEnabled(false);
setCellsCloneable(false);
@@ -167,38 +167,6 @@ final class mxGraphImpl extends mxGraph {
lockedAccountDevices.clear();
}
- private static class RelationshipModel {
-
- @Override
- public String toString() {
- return adiKey1.getAccountDeviceInstance().getAccount().getTypeSpecificID()
- + "<-" + relationshipSources.size() + "->"
- + adiKey2.getAccountDeviceInstance().getAccount().getTypeSpecificID();
- }
-
- private final List relationshipSources;
- private final AccountDeviceInstanceKey adiKey1;
- private final AccountDeviceInstanceKey adiKey2;
-
- private RelationshipModel(List relationships, AccountDeviceInstanceKey adiKey1, AccountDeviceInstanceKey adiKey2) {
- this.relationshipSources = relationships;
- this.adiKey1 = adiKey1;
- this.adiKey2 = adiKey2;
- }
-
- public List getSources() {
- return Collections.unmodifiableList(relationshipSources);
- }
-
- public AccountDeviceInstanceKey getAccount1() {
- return adiKey1;
- }
-
- public AccountDeviceInstanceKey getAccount2() {
- return adiKey2;
- }
- }
-
private mxCell getOrCreateVertex(AccountDeviceInstanceKey accountDeviceInstanceKey) {
final AccountDeviceInstance accountDeviceInstance = accountDeviceInstanceKey.getAccountDeviceInstance();
final String name =// accountDeviceInstance.getDeviceId() + ":" +
@@ -245,7 +213,10 @@ final class mxGraphImpl extends mxGraph {
return edge;
}
- class SwingWorkerImpl extends SwingWorker, mxGraphImpl.RelationshipModel> {
+ boolean hasPinnedAccounts() {
+ return pinnedAccountDevices.isEmpty() == false; }
+
+ class SwingWorkerImpl extends SwingWorker {
private final ProgressIndicator progress;
private final CommunicationsManager commsManager;
@@ -258,11 +229,9 @@ final class mxGraphImpl extends mxGraph {
}
@Override
- protected Set doInBackground() throws Exception {
-
+ protected Void doInBackground() throws Exception {
progress.start("Loading accounts", pinnedAccountDevices.size());
int i = 0;
- Set relationshipModels = new HashSet<>();
try {
/**
* set to keep track of accounts related to pinned accounts
@@ -296,9 +265,8 @@ final class mxGraphImpl extends mxGraph {
adiKey2.getAccountDeviceInstance(),
currentFilter);
if (relationships.size() > 0) {
- mxGraphImpl.RelationshipModel relationshipModel = new RelationshipModel(relationships, adiKey1, adiKey2);
- publish(relationshipModel);
- progress.progress(relationshipModel.toString());
+ mxCell addEdge = addEdge(relationships, adiKey1, adiKey2);
+ progress.progress(addEdge.getId());
}
}
progress.progress(i);
@@ -307,17 +275,7 @@ final class mxGraphImpl extends mxGraph {
logger.log(Level.SEVERE, "Error", tskCoreException);
} finally {
}
- return relationshipModels;
- }
-
- @Override
- protected void process(List chunks) {
- super.process(chunks);
- for (mxGraphImpl.RelationshipModel relationShipModel : chunks) {
- mxCell addEdge = addEdge(relationShipModel.getSources(),
- relationShipModel.getAccount1(),
- relationShipModel.getAccount2());
- }
+ return null;
}
@Override