mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-17 10:17:41 +00:00
refactoring layout buttons
This commit is contained in:
parent
642981ff69
commit
268308874e
@ -166,9 +166,6 @@
|
||||
<Property name="horizontalTextPosition" type="int" value="0"/>
|
||||
<Property name="verticalTextPosition" type="int" value="3"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="hierarchyLayoutButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="fastOrganicLayoutButton">
|
||||
<Properties>
|
||||
@ -179,9 +176,6 @@
|
||||
<Property name="horizontalTextPosition" type="int" value="0"/>
|
||||
<Property name="verticalTextPosition" type="int" value="3"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fastOrganicLayoutButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="organicLayoutButton">
|
||||
<Properties>
|
||||
@ -192,9 +186,6 @@
|
||||
<Property name="horizontalTextPosition" type="int" value="0"/>
|
||||
<Property name="verticalTextPosition" type="int" value="3"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="organicLayoutButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="circleLayoutButton">
|
||||
<Properties>
|
||||
@ -205,9 +196,6 @@
|
||||
<Property name="horizontalTextPosition" type="int" value="0"/>
|
||||
<Property name="verticalTextPosition" type="int" value="3"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="circleLayoutButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JToolBar$Separator" name="jSeparator1">
|
||||
<Properties>
|
||||
|
@ -22,6 +22,7 @@ import com.google.common.eventbus.Subscribe;
|
||||
import com.mxgraph.layout.hierarchical.mxHierarchicalLayout;
|
||||
import com.mxgraph.layout.mxCircleLayout;
|
||||
import com.mxgraph.layout.mxFastOrganicLayout;
|
||||
import com.mxgraph.layout.mxGraphLayout;
|
||||
import com.mxgraph.layout.mxIGraphLayout;
|
||||
import com.mxgraph.layout.mxOrganicLayout;
|
||||
import com.mxgraph.model.mxCell;
|
||||
@ -54,10 +55,14 @@ import java.text.DecimalFormat;
|
||||
import java.util.Arrays;
|
||||
import static java.util.Collections.singleton;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.AbstractAction;
|
||||
import javax.swing.ImageIcon;
|
||||
@ -137,27 +142,23 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
||||
private final mxFastOrganicLayout fastOrganicLayout;
|
||||
private final mxCircleLayout circleLayout;
|
||||
private final mxOrganicLayout organicLayout;
|
||||
private final mxHierarchicalLayout hierarchicalLayout;
|
||||
private final mxHierarchicalLayout hierarchyLayout;
|
||||
|
||||
@ThreadConfined(type = ThreadConfined.ThreadType.AWT)
|
||||
private SwingWorker<?, ?> worker;
|
||||
private final PinnedAccountModel pinnedAccountModel;
|
||||
private final LockedVertexModel lockedVertexModel;
|
||||
|
||||
private final List<JButton> layoutButtons;
|
||||
private final Map<mxGraphLayout, JButton> layoutButtons = new HashMap<>();
|
||||
private mxGraphLayout currentLayout;
|
||||
|
||||
public VisualizationPanel() {
|
||||
initComponents();
|
||||
this.layoutButtons = Arrays.asList(circleLayoutButton, fastOrganicLayoutButton, organicLayoutButton, hierarchyLayoutButton);
|
||||
|
||||
graph = new CommunicationsGraph();
|
||||
|
||||
pinnedAccountModel = graph.getPinnedAccountModel();
|
||||
lockedVertexModel = graph.getLockedVertexModel();
|
||||
|
||||
fastOrganicLayout = new mxFastOrganicLayoutImpl(graph);
|
||||
circleLayout = new mxCircleLayoutImpl(graph);
|
||||
organicLayout = new mxOrganicLayoutImpl(graph);
|
||||
hierarchicalLayout = new mxHierarchicalLayoutImpl(graph);
|
||||
|
||||
|
||||
graphComponent = new mxGraphComponent(graph);
|
||||
graphComponent.setAutoExtend(true);
|
||||
@ -197,9 +198,32 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
||||
|
||||
graph.getModel().addListener(mxEvent.UNDO, undoListener);
|
||||
graph.getView().addListener(mxEvent.UNDO, undoListener);
|
||||
|
||||
fastOrganicLayout = new mxFastOrganicLayoutImpl(graph);
|
||||
circleLayout = new mxCircleLayoutImpl(graph);
|
||||
organicLayout = new mxOrganicLayoutImpl(graph);
|
||||
organicLayout.setMaxIterations(10);
|
||||
hierarchyLayout = new mxHierarchicalLayoutImpl(graph);
|
||||
|
||||
//local method to configure layout buttons
|
||||
BiConsumer<JButton, mxGraphLayout> configure = (layoutButton, layout) -> {
|
||||
layoutButtons.put(layout, layoutButton);
|
||||
layoutButton.addActionListener(event -> applyLayout(layout));
|
||||
};
|
||||
//configure layout buttons.
|
||||
configure.accept(circleLayoutButton, circleLayout);
|
||||
configure.accept(organicLayoutButton, organicLayout);
|
||||
configure.accept(fastOrganicLayoutButton, fastOrganicLayout);
|
||||
configure.accept(hierarchyLayoutButton, hierarchyLayout);
|
||||
|
||||
applyLayout(circleLayout);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param layoutButton the value of layoutButton
|
||||
* @param layout the value of layout
|
||||
*/
|
||||
@Override
|
||||
|
||||
public Lookup getLookup() {
|
||||
@ -264,6 +288,7 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
||||
if (worker.isCancelled()) {
|
||||
graph.resetGraph();
|
||||
rebuildGraph();
|
||||
morph(organicLayout);
|
||||
} else {
|
||||
morph(fastOrganicLayout);
|
||||
}
|
||||
@ -350,11 +375,11 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
||||
|
||||
borderLayoutPanel.setLayout(new BorderLayout());
|
||||
|
||||
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
|
||||
jTextArea1.setBackground(new Color(240, 240, 240));
|
||||
|
||||
GroupLayout placeHolderPanelLayout = new GroupLayout(placeHolderPanel);
|
||||
placeHolderPanel.setLayout(placeHolderPanelLayout);
|
||||
@ -379,49 +404,29 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
||||
hierarchyLayoutButton.setFocusable(false);
|
||||
hierarchyLayoutButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
||||
hierarchyLayoutButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||
hierarchyLayoutButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
hierarchyLayoutButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
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) {
|
||||
fastOrganicLayoutButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
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) {
|
||||
organicLayoutButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
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) {
|
||||
circleLayoutButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
jSeparator1.setOrientation(SwingConstants.VERTICAL);
|
||||
|
||||
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.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomOutButton.toolTipText")); // NOI18N
|
||||
zoomOutButton.setFocusable(false);
|
||||
zoomOutButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
||||
zoomOutButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomOutButton.toolTipText")); // NOI18N
|
||||
zoomOutButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||
zoomOutButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
@ -431,9 +436,9 @@ 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.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.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomInButton.toolTipText")); // NOI18N
|
||||
zoomInButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||
zoomInButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
@ -443,9 +448,9 @@ 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.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.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.zoomActualButton.toolTipText")); // NOI18N
|
||||
zoomActualButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||
zoomActualButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
@ -455,9 +460,9 @@ 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.setText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.fitZoomButton.text")); // NOI18N
|
||||
fitZoomButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.fitZoomButton.toolTipText")); // NOI18N
|
||||
fitZoomButton.setFocusable(false);
|
||||
fitZoomButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
||||
fitZoomButton.setToolTipText(NbBundle.getMessage(VisualizationPanel.class, "VisualizationPanel.fitZoomButton.toolTipText")); // NOI18N
|
||||
fitZoomButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||
fitZoomButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
@ -557,38 +562,18 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
||||
graphComponent.zoomOut();
|
||||
}//GEN-LAST:event_zoomOutButtonActionPerformed
|
||||
|
||||
private void circleLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_circleLayoutButtonActionPerformed
|
||||
makeButtonBold(circleLayoutButton);
|
||||
morph(circleLayout);
|
||||
}//GEN-LAST:event_circleLayoutButtonActionPerformed
|
||||
|
||||
private void organicLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_organicLayoutButtonActionPerformed
|
||||
makeButtonBold(organicLayoutButton);
|
||||
applyOrganicLayout(10);
|
||||
}//GEN-LAST:event_organicLayoutButtonActionPerformed
|
||||
|
||||
private void fastOrganicLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_fastOrganicLayoutButtonActionPerformed
|
||||
makeButtonBold(fastOrganicLayoutButton);
|
||||
morph(fastOrganicLayout);
|
||||
}//GEN-LAST:event_fastOrganicLayoutButtonActionPerformed
|
||||
|
||||
/**
|
||||
* Sets only the given button to have bold text.
|
||||
*
|
||||
* @param layoutButton The button to make bold.
|
||||
* @param layoutButton the value of layoutButton
|
||||
* @param layout the value of layout
|
||||
*/
|
||||
private void makeButtonBold(JButton layoutButton) {
|
||||
layoutButtons.forEach((JButton t) -> {
|
||||
t.setFont(t.getFont().deriveFont(Font.PLAIN));
|
||||
});
|
||||
|
||||
layoutButton.setFont(layoutButton.getFont().deriveFont(Font.BOLD));
|
||||
private void applyLayout(mxGraphLayout layout) {
|
||||
currentLayout = layout;
|
||||
layoutButtons.forEach((layoutKey, button)
|
||||
-> button.setFont(button.getFont().deriveFont(layoutKey == layout ? Font.BOLD : Font.PLAIN)) );
|
||||
morph(layout);
|
||||
}
|
||||
|
||||
private void hierarchyLayoutButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_hierarchyLayoutButtonActionPerformed
|
||||
makeButtonBold(hierarchyLayoutButton);
|
||||
morph(hierarchicalLayout);
|
||||
}//GEN-LAST:event_hierarchyLayoutButtonActionPerformed
|
||||
|
||||
private void clearVizButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_clearVizButtonActionPerformed
|
||||
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||
@ -602,11 +587,6 @@ final public class VisualizationPanel extends JPanel implements Lookup.Provider
|
||||
|
||||
}//GEN-LAST:event_clearVizButtonActionPerformed
|
||||
|
||||
private void applyOrganicLayout(int iterations) {
|
||||
organicLayout.setMaxIterations(iterations);
|
||||
morph(organicLayout);
|
||||
}
|
||||
|
||||
private void fitGraph() {
|
||||
graphComponent.zoomTo(1, true);
|
||||
mxPoint translate = graph.getView().getTranslate();
|
||||
|
Loading…
x
Reference in New Issue
Block a user