mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-18 10:37:43 +00:00
improve fitGraph and other small tweaks
This commit is contained in:
parent
9225730f02
commit
cce4e918cd
@ -24,7 +24,7 @@ VisualizationPanel.jButton6.text=Hierarchy
|
|||||||
VisualizationPanel.jButton7.text=Circle
|
VisualizationPanel.jButton7.text=Circle
|
||||||
VisualizationPanel.jButton8.text=Organic
|
VisualizationPanel.jButton8.text=Organic
|
||||||
VisualizationPanel.fitGraphButton.text=
|
VisualizationPanel.fitGraphButton.text=
|
||||||
VisualizationPanel.statusLabel.text=
|
VisualizationPanel.statusLabel.text=\
|
||||||
VisualizationPanel.jTextArea1.text=Right-click an account in the Browse Accounts table, and select 'Visualize' to begin.
|
VisualizationPanel.jTextArea1.text=Right-click an account in the Browse Accounts table, and select 'Visualize' to begin.
|
||||||
VisualizationPanel.jLabel1.text=Layouts:
|
VisualizationPanel.jLabel1.text=Layouts:
|
||||||
VisualizationPanel.fitZoomButton.text=
|
VisualizationPanel.fitZoomButton.text=
|
||||||
@ -32,8 +32,12 @@ VisualizationPanel.zoomActualButton.text=
|
|||||||
VisualizationPanel.zoomInButton.text=
|
VisualizationPanel.zoomInButton.text=
|
||||||
VisualizationPanel.zoomOutButton.text=
|
VisualizationPanel.zoomOutButton.text=
|
||||||
VisualizationPanel.circleLayoutButton.text=Circle
|
VisualizationPanel.circleLayoutButton.text=Circle
|
||||||
VisualizationPanel.OrganicLayoutButton.text=Organic
|
|
||||||
VisualizationPanel.fastOrganicLayoutButton.text=Fast Organic
|
VisualizationPanel.fastOrganicLayoutButton.text=Fast Organic
|
||||||
VisualizationPanel.hierarchyLayoutButton.text=Hierarchy
|
VisualizationPanel.hierarchyLayoutButton.text=Hierarchy
|
||||||
VisualizationPanel.jLabel2.text=Zoom:
|
VisualizationPanel.jLabel2.text=Zoom:
|
||||||
VisualizationPanel.zoomLabel.text=100%
|
VisualizationPanel.zoomLabel.text=100%
|
||||||
|
VisualizationPanel.zoomOutButton.toolTipText=Zoom out
|
||||||
|
VisualizationPanel.zoomInButton.toolTipText=Zoom in
|
||||||
|
VisualizationPanel.zoomActualButton.toolTipText=reset zoom
|
||||||
|
VisualizationPanel.fitZoomButton.toolTipText=fit visualization
|
||||||
|
VisualizationPanel.organicLayoutButton.text=Organic
|
||||||
|
@ -97,7 +97,7 @@
|
|||||||
</Container>
|
</Container>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
<Container class="javax.swing.JPanel" name="jPanel1">
|
<Container class="javax.swing.JPanel" name="placeHolderPanel">
|
||||||
<Constraints>
|
<Constraints>
|
||||||
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
|
||||||
<BorderConstraints direction="Center"/>
|
<BorderConstraints direction="Center"/>
|
||||||
@ -140,7 +140,7 @@
|
|||||||
</Component>
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
<Container class="javax.swing.JPanel" name="jPanel2">
|
<Container class="javax.swing.JPanel" name="toolbar">
|
||||||
<Constraints>
|
<Constraints>
|
||||||
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
|
||||||
<BorderConstraints direction="First"/>
|
<BorderConstraints direction="First"/>
|
||||||
@ -156,7 +156,7 @@
|
|||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="fastOrganicLayoutButton" min="-2" max="-2" attributes="0"/>
|
<Component id="fastOrganicLayoutButton" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="OrganicLayoutButton" min="-2" max="-2" attributes="0"/>
|
<Component id="organicLayoutButton" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="hierarchyLayoutButton" min="-2" max="-2" attributes="0"/>
|
<Component id="hierarchyLayoutButton" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
@ -171,7 +171,7 @@
|
|||||||
<Component id="zoomActualButton" min="-2" pref="33" max="-2" attributes="0"/>
|
<Component id="zoomActualButton" min="-2" pref="33" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="fitZoomButton" min="-2" pref="32" max="-2" attributes="0"/>
|
<Component id="fitZoomButton" min="-2" pref="32" max="-2" attributes="0"/>
|
||||||
<EmptySpace pref="110" max="32767" attributes="0"/>
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="zoomLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="zoomLabel" min="-2" max="-2" attributes="0"/>
|
||||||
@ -187,7 +187,7 @@
|
|||||||
<Component id="jLabel1" alignment="2" min="-2" pref="25" max="-2" attributes="0"/>
|
<Component id="jLabel1" alignment="2" min="-2" pref="25" max="-2" attributes="0"/>
|
||||||
<Component id="hierarchyLayoutButton" alignment="2" min="-2" max="-2" attributes="0"/>
|
<Component id="hierarchyLayoutButton" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="fastOrganicLayoutButton" alignment="2" min="-2" max="-2" attributes="0"/>
|
<Component id="fastOrganicLayoutButton" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="OrganicLayoutButton" alignment="2" min="-2" max="-2" attributes="0"/>
|
<Component id="organicLayoutButton" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="circleLayoutButton" alignment="2" min="-2" max="-2" attributes="0"/>
|
<Component id="circleLayoutButton" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="jSeparator1" alignment="2" max="32767" attributes="0"/>
|
<Component id="jSeparator1" alignment="2" max="32767" attributes="0"/>
|
||||||
<Component id="zoomOutButton" alignment="2" min="-2" max="-2" attributes="0"/>
|
<Component id="zoomOutButton" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||||
@ -236,17 +236,17 @@
|
|||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fastOrganicLayoutButtonActionPerformed"/>
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fastOrganicLayoutButtonActionPerformed"/>
|
||||||
</Events>
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JButton" name="OrganicLayoutButton">
|
<Component class="javax.swing.JButton" name="organicLayoutButton">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.OrganicLayoutButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.organicLayoutButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
</Property>
|
</Property>
|
||||||
<Property name="focusable" type="boolean" value="false"/>
|
<Property name="focusable" type="boolean" value="false"/>
|
||||||
<Property name="horizontalTextPosition" type="int" value="0"/>
|
<Property name="horizontalTextPosition" type="int" value="0"/>
|
||||||
<Property name="verticalTextPosition" type="int" value="3"/>
|
<Property name="verticalTextPosition" type="int" value="3"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
<Events>
|
<Events>
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="OrganicLayoutButtonActionPerformed"/>
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="organicLayoutButtonActionPerformed"/>
|
||||||
</Events>
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JButton" name="circleLayoutButton">
|
<Component class="javax.swing.JButton" name="circleLayoutButton">
|
||||||
@ -272,6 +272,9 @@
|
|||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.zoomOutButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.zoomOutButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
</Property>
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.zoomOutButton.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
<Property name="focusable" type="boolean" value="false"/>
|
<Property name="focusable" type="boolean" value="false"/>
|
||||||
<Property name="horizontalTextPosition" type="int" value="0"/>
|
<Property name="horizontalTextPosition" type="int" value="0"/>
|
||||||
<Property name="verticalTextPosition" type="int" value="3"/>
|
<Property name="verticalTextPosition" type="int" value="3"/>
|
||||||
@ -288,6 +291,9 @@
|
|||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.zoomInButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.zoomInButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
</Property>
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.zoomInButton.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
<Property name="focusable" type="boolean" value="false"/>
|
<Property name="focusable" type="boolean" value="false"/>
|
||||||
<Property name="horizontalTextPosition" type="int" value="0"/>
|
<Property name="horizontalTextPosition" type="int" value="0"/>
|
||||||
<Property name="verticalTextPosition" type="int" value="3"/>
|
<Property name="verticalTextPosition" type="int" value="3"/>
|
||||||
@ -304,6 +310,9 @@
|
|||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.zoomActualButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.zoomActualButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
</Property>
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.zoomActualButton.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
<Property name="focusable" type="boolean" value="false"/>
|
<Property name="focusable" type="boolean" value="false"/>
|
||||||
<Property name="horizontalTextPosition" type="int" value="0"/>
|
<Property name="horizontalTextPosition" type="int" value="0"/>
|
||||||
<Property name="verticalTextPosition" type="int" value="3"/>
|
<Property name="verticalTextPosition" type="int" value="3"/>
|
||||||
@ -320,6 +329,9 @@
|
|||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.fitZoomButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.fitZoomButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
</Property>
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/communications/Bundle.properties" key="VisualizationPanel.fitZoomButton.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
<Property name="focusable" type="boolean" value="false"/>
|
<Property name="focusable" type="boolean" value="false"/>
|
||||||
<Property name="horizontalTextPosition" type="int" value="0"/>
|
<Property name="horizontalTextPosition" type="int" value="0"/>
|
||||||
<Property name="verticalTextPosition" type="int" value="3"/>
|
<Property name="verticalTextPosition" type="int" value="3"/>
|
||||||
|
@ -43,6 +43,8 @@ import java.awt.event.ActionListener;
|
|||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.event.MouseWheelEvent;
|
import java.awt.event.MouseWheelEvent;
|
||||||
|
import java.beans.PropertyChangeEvent;
|
||||||
|
import java.beans.PropertyChangeListener;
|
||||||
import java.beans.PropertyVetoException;
|
import java.beans.PropertyVetoException;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -120,19 +122,20 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
private CommunicationsManager commsManager;
|
private CommunicationsManager commsManager;
|
||||||
private CommunicationsFilter currentFilter;
|
private CommunicationsFilter currentFilter;
|
||||||
private final mxRubberband rubberband;
|
private final mxRubberband rubberband;
|
||||||
private mxFastOrganicLayout mxFastOrganicLayout;
|
private final mxFastOrganicLayout fastOrganicLayout;
|
||||||
private mxCircleLayout mxCircleLayout;
|
private final mxCircleLayout circleLayout;
|
||||||
private final mxOrganicLayout mxOrganicLayout;
|
private final mxOrganicLayout organicLayout;
|
||||||
private mxHierarchicalLayout mxHierarchicalLayout;
|
private final mxHierarchicalLayout hierarchicalLayout;
|
||||||
|
private SwingWorker<?, ?> worker;
|
||||||
|
|
||||||
public VisualizationPanel() {
|
public VisualizationPanel() {
|
||||||
initComponents();
|
initComponents();
|
||||||
graph = new mxGraphImpl();
|
graph = new mxGraphImpl();
|
||||||
|
|
||||||
mxFastOrganicLayout = new mxFastOrganicLayoutImpl(graph);
|
fastOrganicLayout = new mxFastOrganicLayoutImpl(graph);
|
||||||
mxCircleLayout = new mxCircleLayoutImpl(graph);
|
circleLayout = new mxCircleLayoutImpl(graph);
|
||||||
mxOrganicLayout = new mxOrganicLayoutImpl(graph);
|
organicLayout = new mxOrganicLayoutImpl(graph);
|
||||||
mxHierarchicalLayout = new mxHierarchicalLayoutImpl(graph);
|
hierarchicalLayout = new mxHierarchicalLayoutImpl(graph);
|
||||||
|
|
||||||
graphComponent = new mxGraphComponent(graph);
|
graphComponent = new mxGraphComponent(graph);
|
||||||
graphComponent.setAutoExtend(true);
|
graphComponent.setAutoExtend(true);
|
||||||
@ -249,7 +252,6 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
graph.getModel().endUpdate();
|
graph.getModel().endUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
applyOrganicLayout(10);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@ -269,7 +271,6 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
graph.getModel().endUpdate();
|
graph.getModel().endUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
applyOrganicLayout(10);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@ -287,18 +288,30 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
graph.getModel().endUpdate();
|
graph.getModel().endUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
applyOrganicLayout(10);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rebuildGraph() throws TskCoreException {
|
private void rebuildGraph() throws TskCoreException {
|
||||||
if (graph.hasPinnedAccounts()) {
|
if (graph.hasPinnedAccounts()) {
|
||||||
borderLayoutPanel.remove(jPanel1);
|
borderLayoutPanel.remove(placeHolderPanel);
|
||||||
borderLayoutPanel.add(graphComponent, BorderLayout.CENTER);
|
borderLayoutPanel.add(graphComponent, BorderLayout.CENTER);
|
||||||
SwingWorker<?, ?> rebuild = graph.rebuild(new ProgressIndicatorImpl(), commsManager, currentFilter);
|
if (worker != null) {
|
||||||
rebuild.execute();
|
worker.cancel(true);
|
||||||
|
}
|
||||||
|
worker = graph.rebuild(new ProgressIndicatorImpl(), commsManager, currentFilter);
|
||||||
|
|
||||||
|
worker.addPropertyChangeListener(new PropertyChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void propertyChange(PropertyChangeEvent evt) {
|
||||||
|
if (worker.isDone()) {
|
||||||
|
applyOrganicLayout(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
worker.execute();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
borderLayoutPanel.remove(graphComponent);
|
borderLayoutPanel.remove(graphComponent);
|
||||||
borderLayoutPanel.add(jPanel1, BorderLayout.CENTER);
|
borderLayoutPanel.add(placeHolderPanel, BorderLayout.CENTER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,13 +371,13 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
statusLabel = new JLabel();
|
statusLabel = new JLabel();
|
||||||
progresPanel = new JPanel();
|
progresPanel = new JPanel();
|
||||||
progressBar = new JProgressBar();
|
progressBar = new JProgressBar();
|
||||||
jPanel1 = new JPanel();
|
placeHolderPanel = new JPanel();
|
||||||
jTextArea1 = new JTextArea();
|
jTextArea1 = new JTextArea();
|
||||||
jPanel2 = new JPanel();
|
toolbar = new JPanel();
|
||||||
jLabel1 = new JLabel();
|
jLabel1 = new JLabel();
|
||||||
hierarchyLayoutButton = new JButton();
|
hierarchyLayoutButton = new JButton();
|
||||||
fastOrganicLayoutButton = new JButton();
|
fastOrganicLayoutButton = new JButton();
|
||||||
OrganicLayoutButton = new JButton();
|
organicLayoutButton = new JButton();
|
||||||
circleLayoutButton = new JButton();
|
circleLayoutButton = new JButton();
|
||||||
jSeparator1 = new JToolBar.Separator();
|
jSeparator1 = new JToolBar.Separator();
|
||||||
zoomOutButton = new JButton();
|
zoomOutButton = new JButton();
|
||||||
@ -416,22 +429,22 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
jTextArea1.setRows(5);
|
jTextArea1.setRows(5);
|
||||||
jTextArea1.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.jTextArea1.text")); // NOI18N
|
jTextArea1.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.jTextArea1.text")); // NOI18N
|
||||||
|
|
||||||
GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
|
GroupLayout placeHolderPanelLayout = new GroupLayout(placeHolderPanel);
|
||||||
jPanel1.setLayout(jPanel1Layout);
|
placeHolderPanel.setLayout(placeHolderPanelLayout);
|
||||||
jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.LEADING)
|
placeHolderPanelLayout.setHorizontalGroup(placeHolderPanelLayout.createParallelGroup(GroupLayout.LEADING)
|
||||||
.add(GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
|
.add(GroupLayout.TRAILING, placeHolderPanelLayout.createSequentialGroup()
|
||||||
.addContainerGap(213, Short.MAX_VALUE)
|
.addContainerGap(213, Short.MAX_VALUE)
|
||||||
.add(jTextArea1, GroupLayout.PREFERRED_SIZE, 372, GroupLayout.PREFERRED_SIZE)
|
.add(jTextArea1, GroupLayout.PREFERRED_SIZE, 372, GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap(214, Short.MAX_VALUE))
|
.addContainerGap(214, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.LEADING)
|
placeHolderPanelLayout.setVerticalGroup(placeHolderPanelLayout.createParallelGroup(GroupLayout.LEADING)
|
||||||
.add(GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
|
.add(GroupLayout.TRAILING, placeHolderPanelLayout.createSequentialGroup()
|
||||||
.addContainerGap(200, Short.MAX_VALUE)
|
.addContainerGap(200, Short.MAX_VALUE)
|
||||||
.add(jTextArea1, GroupLayout.PREFERRED_SIZE, 43, GroupLayout.PREFERRED_SIZE)
|
.add(jTextArea1, GroupLayout.PREFERRED_SIZE, 43, GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap(200, Short.MAX_VALUE))
|
.addContainerGap(200, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
|
|
||||||
borderLayoutPanel.add(jPanel1, BorderLayout.CENTER);
|
borderLayoutPanel.add(placeHolderPanel, BorderLayout.CENTER);
|
||||||
|
|
||||||
jLabel1.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.jLabel1.text")); // NOI18N
|
jLabel1.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.jLabel1.text")); // NOI18N
|
||||||
|
|
||||||
@ -455,13 +468,13 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
OrganicLayoutButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.OrganicLayoutButton.text")); // NOI18N
|
organicLayoutButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.organicLayoutButton.text")); // NOI18N
|
||||||
OrganicLayoutButton.setFocusable(false);
|
organicLayoutButton.setFocusable(false);
|
||||||
OrganicLayoutButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
organicLayoutButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
||||||
OrganicLayoutButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
organicLayoutButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||||
OrganicLayoutButton.addActionListener(new ActionListener() {
|
organicLayoutButton.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent evt) {
|
public void actionPerformed(ActionEvent evt) {
|
||||||
OrganicLayoutButtonActionPerformed(evt);
|
organicLayoutButtonActionPerformed(evt);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -477,6 +490,7 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
|
|
||||||
zoomOutButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/magnifier-zoom-out-red.png"))); // NOI18N
|
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
|
zoomOutButton.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomOutButton.text")); // NOI18N
|
||||||
|
zoomOutButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomOutButton.toolTipText")); // NOI18N
|
||||||
zoomOutButton.setFocusable(false);
|
zoomOutButton.setFocusable(false);
|
||||||
zoomOutButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
zoomOutButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
||||||
zoomOutButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
zoomOutButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||||
@ -488,6 +502,7 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
|
|
||||||
zoomInButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/magnifier-zoom-in-green.png"))); // NOI18N
|
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.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomInButton.text")); // NOI18N
|
||||||
|
zoomInButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomInButton.toolTipText")); // NOI18N
|
||||||
zoomInButton.setFocusable(false);
|
zoomInButton.setFocusable(false);
|
||||||
zoomInButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
zoomInButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
||||||
zoomInButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
zoomInButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||||
@ -499,6 +514,7 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
|
|
||||||
zoomActualButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/magnifier-zoom-actual.png"))); // NOI18N
|
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.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomActualButton.text")); // NOI18N
|
||||||
|
zoomActualButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomActualButton.toolTipText")); // NOI18N
|
||||||
zoomActualButton.setFocusable(false);
|
zoomActualButton.setFocusable(false);
|
||||||
zoomActualButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
zoomActualButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
||||||
zoomActualButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
zoomActualButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||||
@ -510,6 +526,7 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
|
|
||||||
fitZoomButton.setIcon(new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/communications/images/magnifier-zoom-fit.png"))); // NOI18N
|
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.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.fitZoomButton.text")); // NOI18N
|
||||||
|
fitZoomButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.fitZoomButton.toolTipText")); // NOI18N
|
||||||
fitZoomButton.setFocusable(false);
|
fitZoomButton.setFocusable(false);
|
||||||
fitZoomButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
fitZoomButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
||||||
fitZoomButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
fitZoomButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||||
@ -523,16 +540,16 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
|
|
||||||
zoomLabel.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomLabel.text")); // NOI18N
|
zoomLabel.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomLabel.text")); // NOI18N
|
||||||
|
|
||||||
GroupLayout jPanel2Layout = new GroupLayout(jPanel2);
|
GroupLayout toolbarLayout = new GroupLayout(toolbar);
|
||||||
jPanel2.setLayout(jPanel2Layout);
|
toolbar.setLayout(toolbarLayout);
|
||||||
jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(GroupLayout.LEADING)
|
toolbarLayout.setHorizontalGroup(toolbarLayout.createParallelGroup(GroupLayout.LEADING)
|
||||||
.add(jPanel2Layout.createSequentialGroup()
|
.add(toolbarLayout.createSequentialGroup()
|
||||||
.add(3, 3, 3)
|
.add(3, 3, 3)
|
||||||
.add(jLabel1)
|
.add(jLabel1)
|
||||||
.addPreferredGap(LayoutStyle.RELATED)
|
.addPreferredGap(LayoutStyle.RELATED)
|
||||||
.add(fastOrganicLayoutButton)
|
.add(fastOrganicLayoutButton)
|
||||||
.addPreferredGap(LayoutStyle.RELATED)
|
.addPreferredGap(LayoutStyle.RELATED)
|
||||||
.add(OrganicLayoutButton)
|
.add(organicLayoutButton)
|
||||||
.addPreferredGap(LayoutStyle.RELATED)
|
.addPreferredGap(LayoutStyle.RELATED)
|
||||||
.add(hierarchyLayoutButton)
|
.add(hierarchyLayoutButton)
|
||||||
.addPreferredGap(LayoutStyle.RELATED)
|
.addPreferredGap(LayoutStyle.RELATED)
|
||||||
@ -547,20 +564,20 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
.add(zoomActualButton, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE)
|
.add(zoomActualButton, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(LayoutStyle.RELATED)
|
.addPreferredGap(LayoutStyle.RELATED)
|
||||||
.add(fitZoomButton, GroupLayout.PREFERRED_SIZE, 32, GroupLayout.PREFERRED_SIZE)
|
.add(fitZoomButton, GroupLayout.PREFERRED_SIZE, 32, GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(LayoutStyle.RELATED, 110, Short.MAX_VALUE)
|
.addPreferredGap(LayoutStyle.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.add(jLabel2)
|
.add(jLabel2)
|
||||||
.addPreferredGap(LayoutStyle.RELATED)
|
.addPreferredGap(LayoutStyle.RELATED)
|
||||||
.add(zoomLabel)
|
.add(zoomLabel)
|
||||||
.add(27, 27, 27))
|
.add(27, 27, 27))
|
||||||
);
|
);
|
||||||
jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(GroupLayout.LEADING)
|
toolbarLayout.setVerticalGroup(toolbarLayout.createParallelGroup(GroupLayout.LEADING)
|
||||||
.add(jPanel2Layout.createSequentialGroup()
|
.add(toolbarLayout.createSequentialGroup()
|
||||||
.add(3, 3, 3)
|
.add(3, 3, 3)
|
||||||
.add(jPanel2Layout.createParallelGroup(GroupLayout.CENTER)
|
.add(toolbarLayout.createParallelGroup(GroupLayout.CENTER)
|
||||||
.add(jLabel1, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE)
|
.add(jLabel1, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE)
|
||||||
.add(hierarchyLayoutButton)
|
.add(hierarchyLayoutButton)
|
||||||
.add(fastOrganicLayoutButton)
|
.add(fastOrganicLayoutButton)
|
||||||
.add(OrganicLayoutButton)
|
.add(organicLayoutButton)
|
||||||
.add(circleLayoutButton)
|
.add(circleLayoutButton)
|
||||||
.add(jSeparator1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.add(jSeparator1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.add(zoomOutButton)
|
.add(zoomOutButton)
|
||||||
@ -572,7 +589,7 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
.add(3, 3, 3))
|
.add(3, 3, 3))
|
||||||
);
|
);
|
||||||
|
|
||||||
borderLayoutPanel.add(jPanel2, BorderLayout.PAGE_START);
|
borderLayoutPanel.add(toolbar, BorderLayout.PAGE_START);
|
||||||
|
|
||||||
splitPane.setLeftComponent(borderLayoutPanel);
|
splitPane.setLeftComponent(borderLayoutPanel);
|
||||||
|
|
||||||
@ -596,30 +613,29 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
}//GEN-LAST:event_zoomOutButtonActionPerformed
|
}//GEN-LAST:event_zoomOutButtonActionPerformed
|
||||||
|
|
||||||
private void circleLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_circleLayoutButtonActionPerformed
|
private void circleLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_circleLayoutButtonActionPerformed
|
||||||
morph(mxCircleLayout);
|
morph(circleLayout);
|
||||||
}//GEN-LAST:event_circleLayoutButtonActionPerformed
|
}//GEN-LAST:event_circleLayoutButtonActionPerformed
|
||||||
|
|
||||||
private void OrganicLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_OrganicLayoutButtonActionPerformed
|
private void organicLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_organicLayoutButtonActionPerformed
|
||||||
applyOrganicLayout(10);
|
applyOrganicLayout(10);
|
||||||
}//GEN-LAST:event_OrganicLayoutButtonActionPerformed
|
}//GEN-LAST:event_organicLayoutButtonActionPerformed
|
||||||
|
|
||||||
private void fastOrganicLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_fastOrganicLayoutButtonActionPerformed
|
private void fastOrganicLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_fastOrganicLayoutButtonActionPerformed
|
||||||
|
morph(fastOrganicLayout);
|
||||||
morph(mxFastOrganicLayout);
|
|
||||||
}//GEN-LAST:event_fastOrganicLayoutButtonActionPerformed
|
}//GEN-LAST:event_fastOrganicLayoutButtonActionPerformed
|
||||||
|
|
||||||
private void hierarchyLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_hierarchyLayoutButtonActionPerformed
|
private void hierarchyLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_hierarchyLayoutButtonActionPerformed
|
||||||
|
morph(hierarchicalLayout);
|
||||||
morph(mxHierarchicalLayout);
|
|
||||||
}//GEN-LAST:event_hierarchyLayoutButtonActionPerformed
|
}//GEN-LAST:event_hierarchyLayoutButtonActionPerformed
|
||||||
|
|
||||||
private void applyOrganicLayout(int iterations) {
|
private void applyOrganicLayout(int iterations) {
|
||||||
mxOrganicLayout.setMaxIterations(iterations);
|
organicLayout.setMaxIterations(iterations);
|
||||||
morph(mxOrganicLayout);
|
morph(organicLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fitGraph() {
|
private void fitGraph() {
|
||||||
|
|
||||||
|
graphComponent.zoomTo(1, true);
|
||||||
mxPoint translate = graph.getView().getTranslate();
|
mxPoint translate = graph.getView().getTranslate();
|
||||||
if (translate == null || Double.isNaN(translate.getX()) || Double.isNaN(translate.getY())) {
|
if (translate == null || Double.isNaN(translate.getX()) || Double.isNaN(translate.getY())) {
|
||||||
translate = new mxPoint();
|
translate = new mxPoint();
|
||||||
@ -629,7 +645,10 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
if (boundsForCells == null || Double.isNaN(boundsForCells.getWidth()) || Double.isNaN(boundsForCells.getHeight())) {
|
if (boundsForCells == null || Double.isNaN(boundsForCells.getWidth()) || Double.isNaN(boundsForCells.getHeight())) {
|
||||||
boundsForCells = new mxRectangle(0, 0, 1, 1);
|
boundsForCells = new mxRectangle(0, 0, 1, 1);
|
||||||
}
|
}
|
||||||
graph.getView().setTranslate(new mxPoint(translate.getX() - boundsForCells.getX(), translate.getY() - boundsForCells.getY()));
|
final mxPoint mxPoint = new mxPoint(translate.getX() - boundsForCells.getX(), translate.getY() - boundsForCells.getY());
|
||||||
|
|
||||||
|
// graph.getView().setTranslate(mxPoint);
|
||||||
|
graph.cellsMoved(graph.getChildCells(graph.getDefaultParent()), mxPoint.getX(), mxPoint.getY(), false, false);
|
||||||
|
|
||||||
boundsForCells = graph.getCellBounds(graph.getDefaultParent(), true, true, true);
|
boundsForCells = graph.getCellBounds(graph.getDefaultParent(), true, true, true);
|
||||||
if (boundsForCells == null || Double.isNaN(boundsForCells.getWidth()) || Double.isNaN(boundsForCells.getHeight())) {
|
if (boundsForCells == null || Double.isNaN(boundsForCells.getWidth()) || Double.isNaN(boundsForCells.getHeight())) {
|
||||||
@ -637,13 +656,10 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
}
|
}
|
||||||
|
|
||||||
Dimension size = graphComponent.getSize();
|
Dimension size = graphComponent.getSize();
|
||||||
|
|
||||||
double widthFactor = size.getWidth() / boundsForCells.getWidth();
|
double widthFactor = size.getWidth() / boundsForCells.getWidth();
|
||||||
// widthFactor = boundsForCells.getWidth() / size.getWidth();
|
|
||||||
|
|
||||||
graphComponent.zoom(widthFactor);
|
graphComponent.zoom(widthFactor);//, true);
|
||||||
|
|
||||||
// bounds = graph.getGraphBounds();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void morph(mxIGraphLayout layout) {
|
private void morph(mxIGraphLayout layout) {
|
||||||
@ -662,16 +678,12 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
progressBar.setVisible(false);
|
progressBar.setVisible(false);
|
||||||
progressBar.setValue(0);
|
progressBar.setValue(0);
|
||||||
});
|
});
|
||||||
morph.addListener(mxEvent.EXECUTE, (Object sender, mxEventObject event) -> {
|
|
||||||
// fitGraph();
|
|
||||||
});
|
|
||||||
|
|
||||||
morph.startAnimation();
|
morph.startAnimation();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
private JButton OrganicLayoutButton;
|
|
||||||
private JPanel borderLayoutPanel;
|
private JPanel borderLayoutPanel;
|
||||||
private JButton circleLayoutButton;
|
private JButton circleLayoutButton;
|
||||||
private JButton fastOrganicLayoutButton;
|
private JButton fastOrganicLayoutButton;
|
||||||
@ -679,22 +691,23 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
private JButton hierarchyLayoutButton;
|
private JButton hierarchyLayoutButton;
|
||||||
private JLabel jLabel1;
|
private JLabel jLabel1;
|
||||||
private JLabel jLabel2;
|
private JLabel jLabel2;
|
||||||
private JPanel jPanel1;
|
|
||||||
private JPanel jPanel2;
|
|
||||||
private JToolBar.Separator jSeparator1;
|
private JToolBar.Separator jSeparator1;
|
||||||
private JTextArea jTextArea1;
|
private JTextArea jTextArea1;
|
||||||
private JToolBar jToolBar2;
|
private JToolBar jToolBar2;
|
||||||
|
private JButton organicLayoutButton;
|
||||||
|
private JPanel placeHolderPanel;
|
||||||
private JPanel progresPanel;
|
private JPanel progresPanel;
|
||||||
private JProgressBar progressBar;
|
private JProgressBar progressBar;
|
||||||
private JSplitPane splitPane;
|
private JSplitPane splitPane;
|
||||||
private JLabel statusLabel;
|
private JLabel statusLabel;
|
||||||
|
private JPanel toolbar;
|
||||||
private JButton zoomActualButton;
|
private JButton zoomActualButton;
|
||||||
private JButton zoomInButton;
|
private JButton zoomInButton;
|
||||||
private JLabel zoomLabel;
|
private JLabel zoomLabel;
|
||||||
private JButton zoomOutButton;
|
private JButton zoomOutButton;
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
private class SelectionListener implements mxEventSource.mxIEventListener {
|
final private class SelectionListener implements mxEventSource.mxIEventListener {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
||||||
@ -726,7 +739,7 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ProgressIndicatorImpl implements ProgressIndicator {
|
final private class ProgressIndicatorImpl implements ProgressIndicator {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(String message, int totalWorkUnits) {
|
public void start(String message, int totalWorkUnits) {
|
||||||
@ -799,9 +812,9 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class mxFastOrganicLayoutImpl extends mxFastOrganicLayout {
|
final private class mxFastOrganicLayoutImpl extends mxFastOrganicLayout {
|
||||||
|
|
||||||
public mxFastOrganicLayoutImpl(mxGraph graph) {
|
private mxFastOrganicLayoutImpl(mxGraph graph) {
|
||||||
super(graph);
|
super(graph);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -821,12 +834,10 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class mxCircleLayoutImpl extends mxCircleLayout {
|
final private class mxCircleLayoutImpl extends mxCircleLayout {
|
||||||
|
|
||||||
public mxCircleLayoutImpl(mxGraph graph) {
|
private mxCircleLayoutImpl(mxGraph graph) {
|
||||||
super(graph);
|
super(graph);
|
||||||
}
|
|
||||||
{
|
|
||||||
setResetEdges(true);
|
setResetEdges(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -846,12 +857,10 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class mxOrganicLayoutImpl extends mxOrganicLayout {
|
final private class mxOrganicLayoutImpl extends mxOrganicLayout {
|
||||||
|
|
||||||
public mxOrganicLayoutImpl(mxGraph graph) {
|
private mxOrganicLayoutImpl(mxGraph graph) {
|
||||||
super(graph);
|
super(graph);
|
||||||
}
|
|
||||||
{
|
|
||||||
setResetEdges(true);
|
setResetEdges(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -871,9 +880,9 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class mxHierarchicalLayoutImpl extends mxHierarchicalLayout {
|
final private class mxHierarchicalLayoutImpl extends mxHierarchicalLayout {
|
||||||
|
|
||||||
public mxHierarchicalLayoutImpl(mxGraph graph) {
|
private mxHierarchicalLayoutImpl(mxGraph graph) {
|
||||||
super(graph);
|
super(graph);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,6 @@ import java.util.Set;
|
|||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.SwingWorker;
|
import javax.swing.SwingWorker;
|
||||||
import org.openide.util.Exceptions;
|
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.progress.ProgressIndicator;
|
import org.sleuthkit.autopsy.progress.ProgressIndicator;
|
||||||
import org.sleuthkit.datamodel.AccountDeviceInstance;
|
import org.sleuthkit.datamodel.AccountDeviceInstance;
|
||||||
@ -61,21 +60,19 @@ final class mxGraphImpl extends mxGraph {
|
|||||||
private final Multimap<Content, mxCell> edgeMap = MultimapBuilder.hashKeys().hashSetValues().build();
|
private final Multimap<Content, mxCell> edgeMap = MultimapBuilder.hashKeys().hashSetValues().build();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
//initialize defaul cell (Vertex and/or Edge) properties
|
//initialize defaul vertex properties
|
||||||
mxStylesheet.getDefaultVertexStyle().put(mxConstants.STYLE_SHAPE, mxConstants.SHAPE_ELLIPSE);
|
mxStylesheet.getDefaultVertexStyle().put(mxConstants.STYLE_SHAPE, mxConstants.SHAPE_ELLIPSE);
|
||||||
mxStylesheet.getDefaultVertexStyle().put(mxConstants.STYLE_PERIMETER, mxConstants.PERIMETER_ELLIPSE);
|
mxStylesheet.getDefaultVertexStyle().put(mxConstants.STYLE_PERIMETER, mxConstants.PERIMETER_ELLIPSE);
|
||||||
mxStylesheet.getDefaultVertexStyle().put(mxConstants.STYLE_FONTCOLOR, "000000");
|
mxStylesheet.getDefaultVertexStyle().put(mxConstants.STYLE_FONTCOLOR, "000000");
|
||||||
// mxStylesheet.getDefaultVertexStyle().put(mxConstants.STYLE_WHITE_SPACE, "wrap");
|
|
||||||
|
|
||||||
|
//initialize defaul edge properties
|
||||||
mxStylesheet.getDefaultEdgeStyle().put(mxConstants.STYLE_NOLABEL, true);
|
mxStylesheet.getDefaultEdgeStyle().put(mxConstants.STYLE_NOLABEL, true);
|
||||||
// mxStylesheet.getDefaultEdgeStyle().put(mxConstants.STYLE_OPACITY, 50 );
|
|
||||||
// mxStylesheet.getDefaultEdgeStyle().put(mxConstants.STYLE_ROUNDED, true);
|
|
||||||
mxStylesheet.getDefaultEdgeStyle().put(mxConstants.STYLE_PERIMETER_SPACING, 0);
|
mxStylesheet.getDefaultEdgeStyle().put(mxConstants.STYLE_PERIMETER_SPACING, 0);
|
||||||
mxStylesheet.getDefaultEdgeStyle().put(mxConstants.STYLE_ENDARROW, mxConstants.NONE);
|
mxStylesheet.getDefaultEdgeStyle().put(mxConstants.STYLE_ENDARROW, mxConstants.NONE);
|
||||||
mxStylesheet.getDefaultEdgeStyle().put(mxConstants.STYLE_STARTARROW, mxConstants.NONE);
|
mxStylesheet.getDefaultEdgeStyle().put(mxConstants.STYLE_STARTARROW, mxConstants.NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public mxGraphImpl() {
|
mxGraphImpl() {
|
||||||
super(mxStylesheet);
|
super(mxStylesheet);
|
||||||
setAutoSizeCells(true);
|
setAutoSizeCells(true);
|
||||||
setCellsCloneable(false);
|
setCellsCloneable(false);
|
||||||
@ -139,17 +136,20 @@ final class mxGraphImpl extends mxGraph {
|
|||||||
if (value instanceof AccountDeviceInstanceKey) {
|
if (value instanceof AccountDeviceInstanceKey) {
|
||||||
final AccountDeviceInstanceKey adiKey = (AccountDeviceInstanceKey) value;
|
final AccountDeviceInstanceKey adiKey = (AccountDeviceInstanceKey) value;
|
||||||
final String accountName = adiKey.getAccountDeviceInstance().getAccount().getTypeSpecificID();
|
final String accountName = adiKey.getAccountDeviceInstance().getAccount().getTypeSpecificID();
|
||||||
|
|
||||||
|
final double size = Math.round(Math.log(adiKey.getMessageCount()) + 5);
|
||||||
|
|
||||||
String iconFileName = Utils.getIconFileName(adiKey.getAccountDeviceInstance().getAccount().getAccountType());
|
String iconFileName = Utils.getIconFileName(adiKey.getAccountDeviceInstance().getAccount().getAccountType());
|
||||||
String label = "<img src=\""
|
String label = "<img height=" + size + " width=" + size + " src="
|
||||||
+ mxGraphImpl.class.getResource("/org/sleuthkit/autopsy/communications/images/" + iconFileName)
|
+ mxGraphImpl.class.getResource("/org/sleuthkit/autopsy/communications/images/" + iconFileName)
|
||||||
+ "\">" + accountName;
|
+ ">" + accountName;
|
||||||
if (pinnedAccountDevices.contains(adiKey)) {
|
if (pinnedAccountDevices.contains(adiKey)) {
|
||||||
label = "<img src=\"" + MARKER_PIN_URL + "\">"+label;
|
label = "<img height=" + size + " width=" + size + " src=" + MARKER_PIN_URL + ">" + label;
|
||||||
}
|
}
|
||||||
if (lockedVertices.contains((mxCell) cell)) {
|
if (lockedVertices.contains((mxCell) cell)) {
|
||||||
label += "<img src=\"" + LOCK_URL + "\">";
|
label += "<img height=" + size + " width=" + size + " src=" + LOCK_URL + ">";
|
||||||
}
|
}
|
||||||
return "<div style=\"font-size:"+ (Math.log(adiKey.getMessageCount())+5)+ "px;\" >" + label + "</div>";
|
return "<div style=\"font-size:" + size + "px;\" >" + label + "</div>";
|
||||||
} else {
|
} else {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@ -192,6 +192,7 @@ final class mxGraphImpl extends mxGraph {
|
|||||||
|
|
||||||
void resetGraph() {
|
void resetGraph() {
|
||||||
clear();
|
clear();
|
||||||
|
getView().setScale(1);
|
||||||
pinnedAccountDevices.clear();
|
pinnedAccountDevices.clear();
|
||||||
lockedVertices.clear();
|
lockedVertices.clear();
|
||||||
}
|
}
|
||||||
@ -207,8 +208,8 @@ final class mxGraphImpl extends mxGraph {
|
|||||||
mxCell newVertex = (mxCell) insertVertex(
|
mxCell newVertex = (mxCell) insertVertex(
|
||||||
getDefaultParent(),
|
getDefaultParent(),
|
||||||
vertexName, accountDeviceInstanceKey,
|
vertexName, accountDeviceInstanceKey,
|
||||||
Math.random() * getView().getGraphBounds().getWidth(),
|
Math.random() * 400,
|
||||||
Math.random() * getView().getGraphBounds().getHeight(),
|
Math.random() * 400,
|
||||||
size,
|
size,
|
||||||
size);
|
size);
|
||||||
return newVertex;
|
return newVertex;
|
||||||
@ -322,7 +323,7 @@ final class mxGraphImpl extends mxGraph {
|
|||||||
try {
|
try {
|
||||||
get();
|
get();
|
||||||
} catch (InterruptedException | ExecutionException ex) {
|
} catch (InterruptedException | ExecutionException ex) {
|
||||||
Exceptions.printStackTrace(ex);
|
logger.log(Level.SEVERE, "Error building graph visualization. ", ex);
|
||||||
} finally {
|
} finally {
|
||||||
progress.finish();
|
progress.finish();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user