diff --git a/bin/.gitignore b/bin/.gitignore index cf1db2e..5fafa5c 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -1 +1,2 @@ /org/ +/tests/ diff --git a/src/org/ntlab/actions/AbstractViewerAction.java b/src/org/ntlab/actions/AbstractViewerAction.java new file mode 100644 index 0000000..5446ada --- /dev/null +++ b/src/org/ntlab/actions/AbstractViewerAction.java @@ -0,0 +1,17 @@ +package org.ntlab.actions; + +import javax.swing.AbstractAction; +import javax.swing.Icon; + +import org.ntlab.deltaViewer.MagnetRONViewer; + +public abstract class AbstractViewerAction extends AbstractAction { + + protected MagnetRONViewer viewer; + + public AbstractViewerAction(String name, MagnetRONViewer viewer) { + super(name); + this.viewer = viewer; + } + +} \ No newline at end of file diff --git a/src/org/ntlab/actions/ZoomActualAction.java b/src/org/ntlab/actions/ZoomActualAction.java new file mode 100644 index 0000000..2d8ca2b --- /dev/null +++ b/src/org/ntlab/actions/ZoomActualAction.java @@ -0,0 +1,17 @@ +package org.ntlab.actions; + +import java.awt.event.ActionEvent; + +import org.ntlab.deltaViewer.MagnetRONViewer; + +public class ZoomActualAction extends AbstractViewerAction { + public ZoomActualAction(MagnetRONViewer viewer) { + super("100%", viewer); + } + + @Override + public void actionPerformed(ActionEvent arg0) { + viewer.getGraphComponent().zoomActual(); + } + +} diff --git a/src/org/ntlab/actions/ZoomInAction.java b/src/org/ntlab/actions/ZoomInAction.java new file mode 100644 index 0000000..e8c9e83 --- /dev/null +++ b/src/org/ntlab/actions/ZoomInAction.java @@ -0,0 +1,17 @@ +package org.ntlab.actions; + +import java.awt.event.ActionEvent; + +import org.ntlab.deltaViewer.MagnetRONViewer; + +public class ZoomInAction extends AbstractViewerAction { + public ZoomInAction(MagnetRONViewer viewer) { + super("�g��", viewer); + } + + @Override + public void actionPerformed(ActionEvent arg0) { + viewer.getGraphComponent().zoomIn(); + } + +} diff --git a/src/org/ntlab/actions/ZoomOutAction.java b/src/org/ntlab/actions/ZoomOutAction.java new file mode 100644 index 0000000..ddd5b85 --- /dev/null +++ b/src/org/ntlab/actions/ZoomOutAction.java @@ -0,0 +1,17 @@ +package org.ntlab.actions; + +import java.awt.event.ActionEvent; + +import org.ntlab.deltaViewer.MagnetRONViewer; + +public class ZoomOutAction extends AbstractViewerAction { + public ZoomOutAction(MagnetRONViewer viewer) { + super("�k��", viewer); + } + + @Override + public void actionPerformed(ActionEvent arg0) { + viewer.getGraphComponent().zoomOut(); + } + +} diff --git a/src/org/ntlab/deltaViewer/MagnetRONFrame.java b/src/org/ntlab/deltaViewer/MagnetRONFrame.java index ea290a2..185abdd 100644 --- a/src/org/ntlab/deltaViewer/MagnetRONFrame.java +++ b/src/org/ntlab/deltaViewer/MagnetRONFrame.java @@ -56,6 +56,10 @@ pack(); } + + public MagnetRONViewer getViewer() { + return viewer; + } public TraceJSON getTrace() { return trace; @@ -431,32 +435,35 @@ @Override public void startAnimation() { - animationThread = new Thread() { - public void run() { - // Build a frame, create a graph, and add the graph to the frame so you can actually see the graph. - if (objectCallGraph != null && aliasCollector != null) { - List relatedPoints = objectCallGraph.getRelatedPoints(); - TracePoint lastRP = relatedPoints.get(relatedPoints.size() - 1); - Map.Entry rpInf = MagnetRONViewer.getRelatedInformation(lastRP); - WINDOW_TITLE = "extract delta of:" + rpInf.getKey().getSrcClassName() + "(" + rpInf.getKey().getSrcObjectId() + ")" + " -> " + rpInf.getKey().getDstClassName()+ "(" + rpInf.getKey().getDstObjectId()+ ")"; - setTitle(WINDOW_TITLE); - - viewer.init(objectCallGraph, aliasCollector, new CollaborationLayout()); - List aliasList = new ArrayList<>(aliasCollector.getAliasList()); - -// dv.setCoordinatorPoint(1200, 100); - viewer.initAnimation(); -// for(int i = 0; i < aliasList.size(); i++) { -// System.out.println(aliasList.get(i).getObjectId() + ", " + aliasList.get(i).getMethodSignature() + " l." + aliasList.get(i).getLineNo() + " : " + aliasList.get(i).getAliasType().toString()); -// } - for (int i = 0; i <= aliasList.size(); i++) { - viewer.stepToAnimation(i); + if (animationThread != null) { + animationThread = new Thread() { + public void run() { + // Build a frame, create a graph, and add the graph to the frame so you can actually see the graph. + if (objectCallGraph != null && aliasCollector != null) { + List relatedPoints = objectCallGraph.getRelatedPoints(); + TracePoint lastRP = relatedPoints.get(relatedPoints.size() - 1); + Map.Entry rpInf = MagnetRONViewer.getRelatedInformation(lastRP); + WINDOW_TITLE = "extract delta of:" + rpInf.getKey().getSrcClassName() + "(" + rpInf.getKey().getSrcObjectId() + ")" + " -> " + rpInf.getKey().getDstClassName()+ "(" + rpInf.getKey().getDstObjectId()+ ")"; + setTitle(WINDOW_TITLE); + + viewer.init(objectCallGraph, aliasCollector, new CollaborationLayout()); + List aliasList = new ArrayList<>(aliasCollector.getAliasList()); + +// dv.setCoordinatorPoint(1200, 100); + viewer.initAnimation(); +// for(int i = 0; i < aliasList.size(); i++) { +// System.out.println(aliasList.get(i).getObjectId() + ", " + aliasList.get(i).getMethodSignature() + " l." + aliasList.get(i).getLineNo() + " : " + aliasList.get(i).getAliasType().toString()); +// } + for (int i = 0; i <= aliasList.size(); i++) { + viewer.stepToAnimation(i); + } + } - + animationThread = null; } - } - }; - animationThread.start(); + }; + animationThread.start(); + } } @Override @@ -469,7 +476,9 @@ @Override public void stopAnimation() { - animationThread.stop(); + if (animationThread != null) { + animationThread.stop(); + } } public void startDeltaViewer(IObjectCallGraph ocg, IAliasCollector ac) { diff --git a/src/org/ntlab/deltaViewer/MagnetRONMenuBar.java b/src/org/ntlab/deltaViewer/MagnetRONMenuBar.java index 60d8845..83f370f 100644 --- a/src/org/ntlab/deltaViewer/MagnetRONMenuBar.java +++ b/src/org/ntlab/deltaViewer/MagnetRONMenuBar.java @@ -6,10 +6,13 @@ import org.ntlab.actions.OpenAction; import org.ntlab.actions.StartAnimationAction; import org.ntlab.actions.StopAnimationAction; +import org.ntlab.actions.ZoomInAction; +import org.ntlab.actions.ZoomOutAction; +import org.ntlab.actions.ZoomActualAction; public class MagnetRONMenuBar extends JMenuBar { - public MagnetRONMenuBar(IMagnetRON magnetRON) { + public MagnetRONMenuBar(MagnetRONFrame magnetRON) { super(); JMenu fileMenu = add(new JMenu("�t�@�C��")); fileMenu.add(new OpenAction(magnetRON)); @@ -19,6 +22,9 @@ JMenu animationSettingMenu = add(new JMenu("�A�j���[�V�����ݒ�")); JMenu viewMenu = add(new JMenu("�\��")); + viewMenu.add(new ZoomInAction(magnetRON.getViewer())); + viewMenu.add(new ZoomOutAction(magnetRON.getViewer())); + viewMenu.add(new ZoomActualAction(magnetRON.getViewer())); JMenu animationMenu = add(new JMenu("�A�j���[�V����")); animationMenu.add(new StartAnimationAction(magnetRON)); diff --git a/src/org/ntlab/deltaViewer/MagnetRONViewer.java b/src/org/ntlab/deltaViewer/MagnetRONViewer.java index be95f46..0339170 100644 --- a/src/org/ntlab/deltaViewer/MagnetRONViewer.java +++ b/src/org/ntlab/deltaViewer/MagnetRONViewer.java @@ -77,6 +77,10 @@ setLayout(new BorderLayout()); add(mxgraphComponent, BorderLayout.CENTER); } + + public mxGraphComponent getGraphComponent() { + return mxgraphComponent; + } abstract public void initAnimation(); @@ -653,7 +657,7 @@ } } - abstract public void createMethodExecutionVertex(Alias alias); + abstract protected void createMethodExecutionVertex(Alias alias); /** * Parent : Create MethodExecutionVertex.