Code Sequence Diagram Cleanup
This commit is contained in:
parent
be2896ee3e
commit
dd4bec1446
1 changed files with 25 additions and 18 deletions
|
@ -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<ClassNode> classNodeList) {
|
||||
if (BytecodeViewer.viewer.workPane.getCurrentViewer() == null || !(BytecodeViewer.viewer.workPane.getCurrentViewer() instanceof ClassViewer)) {
|
||||
public void execute(ArrayList<ClassNode> 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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue