diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/plugin/preinstalled/CodeSequenceDiagram.java b/src/main/java/the/bytecode/club/bytecodeviewer/plugin/preinstalled/CodeSequenceDiagram.java index e65b7719..191b9ca2 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/plugin/preinstalled/CodeSequenceDiagram.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/plugin/preinstalled/CodeSequenceDiagram.java @@ -42,7 +42,8 @@ import the.bytecode.club.bytecodeviewer.plugin.PluginManager; * @author Konloch */ -public class CodeSequenceDiagram extends Plugin { +public class CodeSequenceDiagram extends Plugin +{ public static void open() { if (BytecodeViewer.getLoadedClasses().isEmpty()) @@ -54,21 +55,22 @@ public class CodeSequenceDiagram extends Plugin { } @Override - public void execute(ArrayList classNodeList) { - if (BytecodeViewer.viewer.workPane.getCurrentViewer() == null || !(BytecodeViewer.viewer.workPane.getCurrentViewer() instanceof ClassViewer)) { + public void execute(ArrayList classNodeList) + { + if (BytecodeViewer.viewer.workPane.getCurrentViewer() == null || !(BytecodeViewer.viewer.workPane.getCurrentViewer() instanceof ClassViewer)) + { BytecodeViewer.showMessage("First open a class file."); return; } + ClassNode c = BytecodeViewer.viewer.workPane.getCurrentViewer().cn; - if (c == null) { - BytecodeViewer.showMessage("ClassNode is null for CodeSequenceDiagram. Please report to @Konloch"); + if (c == null) + { + BytecodeViewer.showMessage("Current viewer ClassNode is null inside of CodeSequenceDiagram. Please report to @Konloch"); return; } - JFrame frame; - if (c.name != null) - frame = new JFrame("Code Sequence Diagram - " + c.name); - else - frame = new JFrame("Code Sequence Diagram - Unknown Name"); + + JFrame frame = new JFrame("Code Sequence Diagram - " + c.name); frame.setIconImages(Resources.iconList); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); @@ -87,32 +89,37 @@ public class CodeSequenceDiagram extends Plugin { FontRenderContext frc = new FontRenderContext(affinetransform, true, true); graph.getModel().beginUpdate(); - try { - + try + { int testX = 10; int testY = 0; double magicNumber = 5.8; - for (MethodNode m : c.methods) { + for (MethodNode m : c.methods) + { String mIdentifier = c.name + "." + m.name + m.desc; Object attach = graph.insertVertex(parent, null, mIdentifier, testX, testY, mIdentifier.length() * magicNumber, 30); testX += (int) (font.getStringBounds(mIdentifier, frc).getWidth()) + 60; - for (AbstractInsnNode i : m.instructions.toArray()) { - if (i instanceof MethodInsnNode) { + for (AbstractInsnNode i : m.instructions.toArray()) + { + if (i instanceof MethodInsnNode) + { MethodInsnNode mi = (MethodInsnNode) i; String identifier = mi.owner + "." + mi.name + mi.desc; - Object node2 = graph.insertVertex(parent, null, identifier, testX, testY, - identifier.length() * 5, 30); + Object node2 = graph.insertVertex(parent, null, identifier, testX, testY, identifier.length() * 5, 30); testX += (int) (font.getStringBounds(identifier, frc).getWidth()) + 60; graph.insertEdge(parent, null, null, attach, node2); attach = node2; } } + testY += 60; testX = 10; } - } finally { + } + finally + { graph.getModel().endUpdate(); }