diff --git a/plugin.xml b/plugin.xml
index fe414c1..66757f2 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -51,6 +51,42 @@
name="TracePoints"
restorable="true">
+
+
+
+
+
+
+
+
+
+
+
+
@@ -59,6 +95,16 @@
id="org.ntlab.traceDebugger.traceDebuggerPerspective"
name="TraceDebugger">
+
+
+
+
diff --git a/src/org/ntlab/traceDebugger/BreakPointView.java b/src/org/ntlab/traceDebugger/BreakPointView.java
index 239bad6..84e1d25 100644
--- a/src/org/ntlab/traceDebugger/BreakPointView.java
+++ b/src/org/ntlab/traceDebugger/BreakPointView.java
@@ -29,24 +29,24 @@
import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution;
public class BreakPointView extends ViewPart {
- private TableViewer viewer;
- private IAction fileOpenAction;
- private IAction addTraceBreakPointAction;
- private IAction removeTraceBreakPointAction;
- private IAction changeAvailableAction;
- private IAction debugAction;
- private IAction terminateAction;
- private IAction stepIntoAction;
- private IAction stepOverAction;
- private IAction stepReturnAction;
- private IAction stepNextAction;
- private IAction resumeAction;
- private IAction stepBackIntoAction;
- private IAction stepBackOverAction;
- private IAction stepBackReturnAction;
- private IAction backResumeAction;
- private Shell shell;
- private DebuggingController debuggingController = DebuggingController.getInstance();
+ protected TableViewer viewer;
+ protected IAction fileOpenAction;
+ protected IAction addTraceBreakPointAction;
+ protected IAction removeTraceBreakPointAction;
+ protected IAction changeAvailableAction;
+ protected IAction debugAction;
+ protected IAction terminateAction;
+ protected IAction stepIntoAction;
+ protected IAction stepOverAction;
+ protected IAction stepReturnAction;
+ protected IAction stepNextAction;
+ protected IAction resumeAction;
+// private IAction stepBackIntoAction;
+// private IAction stepBackOverAction;
+// private IAction stepBackReturnAction;
+// private IAction backResumeAction;
+ protected Shell shell;
+ protected DebuggingController debuggingController = DebuggingController.getInstance();
public static final String ID = "org.ntlab.traceDebugger.breakPointView";
public BreakPointView() {
@@ -106,7 +106,7 @@
viewer.getControl().setFocus();
}
- private void createActions() {
+ protected void createActions() {
ImageDescriptor fileOpenIcon = PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
fileOpenAction = new Action("Open Trace File...", fileOpenIcon) {
@Override
@@ -218,44 +218,44 @@
ImageDescriptor image = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_RESUME);
resumeAction.setImageDescriptor(image);
- stepBackIntoAction = new Action() {
- @Override
- public void run() {
- debuggingController.stepBackIntoAction();
- }
- };
- stepBackIntoAction.setText("Step Back Into");
- stepBackIntoAction.setToolTipText("Step Back Into");
-
- stepBackOverAction = new Action() {
- @Override
- public void run() {
- debuggingController.stepBackOverAction();
- }
- };
- stepBackOverAction.setText("Step Back Over");
- stepBackOverAction.setToolTipText("Step Back Over");
-
- stepBackReturnAction = new Action() {
- @Override
- public void run() {
- debuggingController.stepBackReturnAction();
- }
- };
- stepBackReturnAction.setText("Step Back Return");
- stepBackReturnAction.setToolTipText("Step Back Return");
-
- backResumeAction = new Action() {
- @Override
- public void run() {
- debuggingController.backResumeAction();
- }
- };
- backResumeAction.setText("Back Resume");
- backResumeAction.setToolTipText("Back Resume");
+// stepBackIntoAction = new Action() {
+// @Override
+// public void run() {
+// debuggingController.stepBackIntoAction();
+// }
+// };
+// stepBackIntoAction.setText("Step Back Into");
+// stepBackIntoAction.setToolTipText("Step Back Into");
+//
+// stepBackOverAction = new Action() {
+// @Override
+// public void run() {
+// debuggingController.stepBackOverAction();
+// }
+// };
+// stepBackOverAction.setText("Step Back Over");
+// stepBackOverAction.setToolTipText("Step Back Over");
+//
+// stepBackReturnAction = new Action() {
+// @Override
+// public void run() {
+// debuggingController.stepBackReturnAction();
+// }
+// };
+// stepBackReturnAction.setText("Step Back Return");
+// stepBackReturnAction.setToolTipText("Step Back Return");
+//
+// backResumeAction = new Action() {
+// @Override
+// public void run() {
+// debuggingController.backResumeAction();
+// }
+// };
+// backResumeAction.setText("Back Resume");
+// backResumeAction.setToolTipText("Back Resume");
}
- private void createToolBar() {
+ protected void createToolBar() {
IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
mgr.add(fileOpenAction);
mgr.add(debugAction);
@@ -265,13 +265,13 @@
mgr.add(stepOverAction);
mgr.add(stepReturnAction);
mgr.add(stepNextAction);
- mgr.add(stepBackIntoAction);
- mgr.add(stepBackOverAction);
- mgr.add(stepBackReturnAction);
- mgr.add(backResumeAction);
+// mgr.add(stepBackIntoAction);
+// mgr.add(stepBackOverAction);
+// mgr.add(stepBackReturnAction);
+// mgr.add(backResumeAction);
}
- private void createMenuBar() {
+ protected void createMenuBar() {
IMenuManager mgr = getViewSite().getActionBars().getMenuManager();
mgr.add(fileOpenAction);
mgr.add(debugAction);
@@ -281,10 +281,10 @@
mgr.add(stepOverAction);
mgr.add(stepReturnAction);
mgr.add(stepNextAction);
- mgr.add(stepBackIntoAction);
- mgr.add(stepBackOverAction);
- mgr.add(stepBackReturnAction);
- mgr.add(backResumeAction);
+// mgr.add(stepBackIntoAction);
+// mgr.add(stepBackOverAction);
+// mgr.add(stepBackReturnAction);
+// mgr.add(backResumeAction);
}
private void createPopupMenu() {
diff --git a/src/org/ntlab/traceDebugger/BreakPointViewRelatedReverse.java b/src/org/ntlab/traceDebugger/BreakPointViewRelatedReverse.java
new file mode 100644
index 0000000..affb0f7
--- /dev/null
+++ b/src/org/ntlab/traceDebugger/BreakPointViewRelatedReverse.java
@@ -0,0 +1,96 @@
+package org.ntlab.traceDebugger;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.swt.widgets.Composite;
+
+public class BreakPointViewRelatedReverse extends BreakPointView {
+ private IAction stepBackIntoAction;
+ private IAction stepBackOverAction;
+ private IAction stepBackReturnAction;
+ private IAction backResumeAction;
+ private DebuggingController debuggingController = DebuggingController.getInstance();
+ public static final String ID = "org.ntlab.traceDebugger.breakPointViewRelatedReverse";
+
+ public BreakPointViewRelatedReverse() {
+ // TODO Auto-generated constructor stub
+ System.out.println("BreakPointViewRelatedReverse�N���X���������ꂽ��!");
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ // TODO Auto-generated method stub
+ System.out.println("BreakPointViewRelatedReverse#createPartControl(Composite)���Ăꂽ��!");
+ super.createPartControl(parent);
+ TraceDebuggerPlugin.setActiveView(ID, this);
+ }
+
+ @Override
+ public void setFocus() {
+ // TODO Auto-generated method stub
+ TraceDebuggerPlugin.setActiveView(ID, this);
+ viewer.getControl().setFocus();
+ }
+
+ @Override
+ protected void createActions() {
+ super.createActions();
+ stepBackIntoAction = new Action() {
+ @Override
+ public void run() {
+ debuggingController.stepBackIntoAction();
+ }
+ };
+ stepBackIntoAction.setText("Step Back Into");
+ stepBackIntoAction.setToolTipText("Step Back Into");
+
+ stepBackOverAction = new Action() {
+ @Override
+ public void run() {
+ debuggingController.stepBackOverAction();
+ }
+ };
+ stepBackOverAction.setText("Step Back Over");
+ stepBackOverAction.setToolTipText("Step Back Over");
+
+ stepBackReturnAction = new Action() {
+ @Override
+ public void run() {
+ debuggingController.stepBackReturnAction();
+ }
+ };
+ stepBackReturnAction.setText("Step Back Return");
+ stepBackReturnAction.setToolTipText("Step Back Return");
+
+ backResumeAction = new Action() {
+ @Override
+ public void run() {
+ debuggingController.backResumeAction();
+ }
+ };
+ backResumeAction.setText("Back Resume");
+ backResumeAction.setToolTipText("Back Resume");
+ }
+
+ @Override
+ protected void createToolBar() {
+ super.createToolBar();
+ IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
+ mgr.add(stepBackIntoAction);
+ mgr.add(stepBackOverAction);
+ mgr.add(stepBackReturnAction);
+ mgr.add(backResumeAction);
+ }
+
+ @Override
+ protected void createMenuBar() {
+ super.createMenuBar();
+ IMenuManager mgr = getViewSite().getActionBars().getMenuManager();
+ mgr.add(stepBackIntoAction);
+ mgr.add(stepBackOverAction);
+ mgr.add(stepBackReturnAction);
+ mgr.add(backResumeAction);
+ }
+}
diff --git a/src/org/ntlab/traceDebugger/CallStackView.java b/src/org/ntlab/traceDebugger/CallStackView.java
index c9cddc2..be2eb54 100644
--- a/src/org/ntlab/traceDebugger/CallStackView.java
+++ b/src/org/ntlab/traceDebugger/CallStackView.java
@@ -4,13 +4,8 @@
import java.util.Map;
import org.eclipse.core.resources.IMarker;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
@@ -18,11 +13,6 @@
import org.eclipse.jface.viewers.TreeNodeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution;
import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint;
@@ -31,11 +21,9 @@
import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager;
public class CallStackView extends ViewPart {
- private TreeViewer viewer;
-// private IAction refreshAction;
- private IAction deltaAction;
- private CallStackModel selectionCallStackModel;
- private CallStackModels callStackModels = new CallStackModels();
+ protected TreeViewer viewer;
+ protected CallStackModel selectionCallStackModel;
+ protected CallStackModels callStackModels = new CallStackModels();
public static final String ID = "org.ntlab.traceDebugger.callStackView";
public CallStackView() {
@@ -64,27 +52,8 @@
CallStackModel callStackModel = (CallStackModel)value;
selectionCallStackModel = callStackModel;
MethodExecution methodExecution = callStackModel.getMethodExecution();
- TracePoint tp = callStackModel.getTracePoint();
JavaEditorOperator.openSrcFileOfMethodExecution(methodExecution, callStackModel.getCallLineNo());
- CallTreeView callTreeView = (CallTreeView)TraceDebuggerPlugin.getActiveView(CallTreeView.ID);
- callTreeView.highlight(methodExecution);
-
- TracePoint debuggingTp = DebuggingController.getInstance().getCurrentTp();
- VariableView variableView = (VariableView)TraceDebuggerPlugin.getActiveView(VariableView.ID);
- variableView.updateVariablesByTracePoint(tp, false, debuggingTp);
- AbstractAnalyzer analyzer = TraceDebuggerPlugin.getAnalyzer();
- if (analyzer instanceof DeltaExtractionAnalyzer) {
- DeltaMarkerView deltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.getActiveView(DeltaMarkerView.ID);
- if (deltaMarkerView != null) {
- DeltaMarkerManager deltaMarkerManager = deltaMarkerView.getDeltaMarkerManager();
- if (deltaMarkerManager != null) {
- Map> deltaMarkers = deltaMarkerManager.getMarkers();
- if (deltaMarkers != null) {
- variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkers);
- }
- }
- }
- }
+ additonalActionOnSelectionChanged(callStackModel);
}
}
}
@@ -103,74 +72,24 @@
viewer.getControl().setFocus();
}
- private void createActions() {
-// refreshAction = new Action() {
-// @Override
-// public void run() {
-// refresh();
-// }
-// };
-// refreshAction.setText("refresh");
-// refreshAction.setToolTipText("refresh");
-// refreshAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_ELCL_SYNCED));
-
- deltaAction = new Action() {
- @Override
- public void run() {
- if (selectionCallStackModel != null) {
- MethodExecution callee = selectionCallStackModel.getMethodExecution();
- MethodExecution caller = callee.getParent();
- String callerClassName = caller.getThisClassName();
- String callerId = caller.getThisObjId();
- String calleeClassName = callee.getThisClassName();
- String calleeId = callee.getThisObjId();
- TracePoint before = callee.getCallerTracePoint();
- Variable variable = new Variable("tmp", callerClassName, callerId, calleeClassName, calleeId, before, false);
- DeltaMarkerView newDeltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.createNewView(DeltaMarkerView.ID, IWorkbenchPage.VIEW_ACTIVATE);
- newDeltaMarkerView.extractDelta(variable, false);
- }
- }
- };
- deltaAction.setText("Extract Delta");
- deltaAction.setToolTipText("Extract Delta");
+ protected void createActions() {
+
}
- private void createToolBar() {
+ protected void createToolBar() {
IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
-// mgr.add(refreshAction);
}
- private void createMenuBar() {
+ protected void createMenuBar() {
IMenuManager mgr = getViewSite().getActionBars().getMenuManager();
-// mgr.add(refreshAction);
}
- private void createPopupMenu() {
- MenuManager menuMgr = new MenuManager("#PopupMenu");
- menuMgr.setRemoveAllWhenShown(true);
- menuMgr.addMenuListener(new IMenuListener() {
- @Override
- public void menuAboutToShow(IMenuManager manager) {
- if (selectionCallStackModel != null) {
- MethodExecution callee = selectionCallStackModel.getMethodExecution();
- MethodExecution caller = callee.getParent();
- String callerId = caller.getThisObjId();
- String callerClassName = caller.getThisClassName();
- callerClassName = callerClassName.substring(callerClassName.lastIndexOf(".") + 1);
- String calleeId = callee.getThisObjId();
- String calleeClassName = callee.getThisClassName();
- calleeClassName = calleeClassName.substring(calleeClassName.lastIndexOf(".") + 1);
- String text = String.format("Extract Delta (%s: %s �� %s: %s)", callerId, callerClassName, calleeId, calleeClassName);
- deltaAction.setText(text);
- deltaAction.setToolTipText(text);
- manager.add(deltaAction);
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
- }
- });
- Menu menu = menuMgr.createContextMenu(viewer.getControl());
- viewer.getControl().setMenu(menu);
- getSite().registerContextMenu(menuMgr, viewer);
+ protected void createPopupMenu() {
+
+ }
+
+ protected void additonalActionOnSelectionChanged(CallStackModel selectedCallStackModel) {
+
}
public void updateByTracePoint(TracePoint tp) {
@@ -217,5 +136,5 @@
public void highlight(MethodExecution methodExecution) {
callStackModels.highlight(methodExecution);
viewer.refresh();
- }
+ }
}
diff --git a/src/org/ntlab/traceDebugger/CallStackViewRelatedDelta.java b/src/org/ntlab/traceDebugger/CallStackViewRelatedDelta.java
new file mode 100644
index 0000000..a5ca4c1
--- /dev/null
+++ b/src/org/ntlab/traceDebugger/CallStackViewRelatedDelta.java
@@ -0,0 +1,118 @@
+package org.ntlab.traceDebugger;
+
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPage;
+import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution;
+import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint;
+import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager;
+
+public class CallStackViewRelatedDelta extends CallStackView {
+ private IAction deltaAction;
+ public static final String ID = "org.ntlab.traceDebugger.callStackViewRelatedDelta";
+
+ public CallStackViewRelatedDelta() {
+ // TODO Auto-generated constructor stub
+ System.out.println("callStackViewRelatedDelta�N���X���������ꂽ��");
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ // TODO Auto-generated method stub
+ System.out.println("CallStackViewRelatedDelta#createPartControl(Composite)���Ăꂽ��!");
+ super.createPartControl(parent);
+ TraceDebuggerPlugin.setActiveView(ID, this);
+ }
+
+ @Override
+ public void setFocus() {
+ // TODO Auto-generated method stub
+ TraceDebuggerPlugin.setActiveView(ID, this);
+ viewer.getControl().setFocus();
+ }
+
+ @Override
+ protected void createActions() {
+ deltaAction = new Action() {
+ @Override
+ public void run() {
+ if (selectionCallStackModel != null) {
+ MethodExecution callee = selectionCallStackModel.getMethodExecution();
+ MethodExecution caller = callee.getParent();
+ String callerClassName = caller.getThisClassName();
+ String callerId = caller.getThisObjId();
+ String calleeClassName = callee.getThisClassName();
+ String calleeId = callee.getThisObjId();
+ TracePoint before = callee.getCallerTracePoint();
+ Variable variable = new Variable("tmp", callerClassName, callerId, calleeClassName, calleeId, before, false);
+ DeltaMarkerView newDeltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.createNewView(DeltaMarkerView.ID, IWorkbenchPage.VIEW_ACTIVATE);
+ newDeltaMarkerView.extractDelta(variable, false);
+ }
+ }
+ };
+ deltaAction.setText("Extract Delta");
+ deltaAction.setToolTipText("Extract Delta");
+ }
+
+ protected void createPopupMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ @Override
+ public void menuAboutToShow(IMenuManager manager) {
+ if (selectionCallStackModel != null) {
+ MethodExecution callee = selectionCallStackModel.getMethodExecution();
+ MethodExecution caller = callee.getParent();
+ String callerId = caller.getThisObjId();
+ String callerClassName = caller.getThisClassName();
+ callerClassName = callerClassName.substring(callerClassName.lastIndexOf(".") + 1);
+ String calleeId = callee.getThisObjId();
+ String calleeClassName = callee.getThisClassName();
+ calleeClassName = calleeClassName.substring(calleeClassName.lastIndexOf(".") + 1);
+ String text = String.format("Extract Delta (%s: %s �� %s: %s)", callerId, callerClassName, calleeId, calleeClassName);
+ deltaAction.setText(text);
+ deltaAction.setToolTipText(text);
+ manager.add(deltaAction);
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+ }
+ });
+ Menu menu = menuMgr.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, viewer);
+ }
+
+ @Override
+ protected void additonalActionOnSelectionChanged(CallStackModel selectedCallStackModel) {
+ CallStackModel callStackModel = selectedCallStackModel;
+ MethodExecution methodExecution = callStackModel.getMethodExecution();
+ TracePoint tp = callStackModel.getTracePoint();
+ CallTreeView callTreeView = (CallTreeView)TraceDebuggerPlugin.getActiveView(CallTreeView.ID);
+ callTreeView.highlight(methodExecution);
+
+ TracePoint debuggingTp = DebuggingController.getInstance().getCurrentTp();
+ VariableViewRelatedDelta variableView = (VariableViewRelatedDelta)TraceDebuggerPlugin.getActiveView(VariableViewRelatedDelta.ID);
+ variableView.updateVariablesByTracePoint(tp, false, debuggingTp);
+ DeltaMarkerView deltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.getActiveView(DeltaMarkerView.ID);
+ if (deltaMarkerView != null) {
+ DeltaMarkerManager deltaMarkerManager = deltaMarkerView.getDeltaMarkerManager();
+ if (deltaMarkerManager != null) {
+ Map> deltaMarkers = deltaMarkerManager.getMarkers();
+ if (deltaMarkers != null) {
+ variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkers);
+ }
+ }
+ }
+ }
+}
diff --git a/src/org/ntlab/traceDebugger/CallTreeView.java b/src/org/ntlab/traceDebugger/CallTreeView.java
index 1940cbf..73e8f94 100644
--- a/src/org/ntlab/traceDebugger/CallTreeView.java
+++ b/src/org/ntlab/traceDebugger/CallTreeView.java
@@ -54,17 +54,14 @@
highlight(methodExecution);
DebuggingController controller = DebuggingController.getInstance();
controller.jumpToTheTracePoint(tp, false);
- CallStackView callStackView = (CallStackView)TraceDebuggerPlugin.getActiveView(CallStackView.ID);
- VariableView variableView = ((VariableView)TraceDebuggerPlugin.getActiveView(VariableView.ID));
- AbstractAnalyzer analyzer = TraceDebuggerPlugin.getAnalyzer();
- if (analyzer instanceof DeltaExtractionAnalyzer) {
- DeltaMarkerView deltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.getActiveView(DeltaMarkerView.ID);
- DeltaMarkerManager deltaMarkerManager = deltaMarkerView.getDeltaMarkerManager();
- IMarker coodinatorMarker = deltaMarkerManager.getCoordinatorDeltaMarker();
- MethodExecution coordinatorME = DeltaMarkerManager.getMethodExecution(coodinatorMarker);
- if (coordinatorME != null) callStackView.highlight((MethodExecution)coordinatorME);
- variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkerManager.getMarkers());
- }
+ CallStackViewRelatedDelta callStackView = (CallStackViewRelatedDelta)TraceDebuggerPlugin.getActiveView(CallStackViewRelatedDelta.ID);
+ VariableViewRelatedDelta variableView = ((VariableViewRelatedDelta)TraceDebuggerPlugin.getActiveView(VariableViewRelatedDelta.ID));
+ DeltaMarkerView deltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.getActiveView(DeltaMarkerView.ID);
+ DeltaMarkerManager deltaMarkerManager = deltaMarkerView.getDeltaMarkerManager();
+ IMarker coodinatorMarker = deltaMarkerManager.getCoordinatorDeltaMarker();
+ MethodExecution coordinatorME = DeltaMarkerManager.getMethodExecution(coodinatorMarker);
+ if (coordinatorME != null) callStackView.highlight((MethodExecution)coordinatorME);
+ variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkerManager.getMarkers());
} else {
int lineNo = tp.getStatement().getLineNo();
JavaEditorOperator.openSrcFileOfMethodExecution(methodExecution, lineNo);
diff --git a/src/org/ntlab/traceDebugger/DebuggingController.java b/src/org/ntlab/traceDebugger/DebuggingController.java
index a43638c..934a258 100644
--- a/src/org/ntlab/traceDebugger/DebuggingController.java
+++ b/src/org/ntlab/traceDebugger/DebuggingController.java
@@ -19,7 +19,6 @@
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import org.ntlab.traceAnalysisPlatform.tracer.trace.ArrayUpdate;
-import org.ntlab.traceAnalysisPlatform.tracer.trace.BlockEnter;
import org.ntlab.traceAnalysisPlatform.tracer.trace.FieldUpdate;
import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution;
import org.ntlab.traceAnalysisPlatform.tracer.trace.Statement;
@@ -80,13 +79,8 @@
((VariableView)TraceDebuggerPlugin.getActiveView(VariableView.ID)).reset();
((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateTraceBreakPoints(traceBreakPoints);
((TracePointsView)TraceDebuggerPlugin.getActiveView(TracePointsView.ID)).reset();
- if (TraceDebuggerPlugin.getAnalyzer() instanceof DeltaExtractionAnalyzer) {
- ((CallTreeView)TraceDebuggerPlugin.getActiveView(CallTreeView.ID)).reset();
-// Set views = TraceDebuggerPlugin.getViews(DeltaMarkerView.ID);
-// for (IViewPart view : views) {
-// ((DeltaMarkerView)view).dispose();
-// }
- }
+ CallTreeView callTreeView = (CallTreeView)TraceDebuggerPlugin.getActiveView(CallTreeView.ID);
+ if (callTreeView != null) callTreeView.reset();
return true;
}
@@ -177,9 +171,6 @@
TracePoint previousTp = debuggingTp;
debuggingTp = debuggingTp.duplicate();
debuggingTp.stepFull();
-// if (debuggingTp.getStatement() instanceof BlockEnter) {
-// debuggingTp.stepFull();
-// }
if (!debuggingTp.isValid()) {
terminateAction();
MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
@@ -227,9 +218,6 @@
MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
return false;
}
-// if (debuggingTp.getStatement() instanceof BlockEnter) {
-// debuggingTp.stepFull();
-// }
refresh(previousTp, debuggingTp, isReturned, true);
return true;
}
@@ -285,9 +273,6 @@
MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
return false;
}
-// if (debuggingTp.getStatement() instanceof BlockEnter) {
-// debuggingTp.stepFull();
-// }
refresh(previousTp, debuggingTp, isReturned, true);
return true;
}
@@ -414,8 +399,8 @@
} else {
variableView.updateVariablesByTracePoint(from, to, isReturned);
}
- if ((TraceDebuggerPlugin.getAnalyzer() instanceof DeltaExtractionAnalyzer)) {
- refreshRelatedDelta(to);
+ if (TraceDebuggerPlugin.getActiveView(DeltaMarkerView.ID) != null) {
+ refreshRelatedDelta(to);
}
}
@@ -431,7 +416,7 @@
callStackView.highlight(coordinatorME);
CallTreeView callTreeView = (CallTreeView)TraceDebuggerPlugin.getActiveView(CallTreeView.ID);
callTreeView.highlight(tp.getMethodExecution());
- VariableView variableView = (VariableView)TraceDebuggerPlugin.getActiveView(VariableView.ID);
+ VariableViewRelatedDelta variableView = (VariableViewRelatedDelta)TraceDebuggerPlugin.getActiveView(VariableViewRelatedDelta.ID);
variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkerManager.getMarkers());
}
@@ -470,11 +455,5 @@
return callStackModel.getTracePoint();
}
return null;
-// if (!(callStackView.isSelectionOnTop())) {
-// CallStackModel selectionCallStackModel = callStackView.getSelectionCallStackModel();
-// if (selectionCallStackModel != null) {
-// debuggingTp = selectionCallStackModel.getTracePoint();
-// }
-// }
}
}
diff --git a/src/org/ntlab/traceDebugger/DeltaMarkerView.java b/src/org/ntlab/traceDebugger/DeltaMarkerView.java
index 497f3f8..5468018 100644
--- a/src/org/ntlab/traceDebugger/DeltaMarkerView.java
+++ b/src/org/ntlab/traceDebugger/DeltaMarkerView.java
@@ -166,7 +166,7 @@
// callTreeView.highlight(selectionME);
CallStackView callStackView = (CallStackView)TraceDebuggerPlugin.getActiveView(CallStackView.ID);
callStackView.highlight(coordinatorPoint.getMethodExecution());
- VariableView variableView = (VariableView)TraceDebuggerPlugin.getActiveView(VariableView.ID);
+ VariableViewRelatedDelta variableView = (VariableViewRelatedDelta)TraceDebuggerPlugin.getActiveView(VariableViewRelatedDelta.ID);
variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkerManager.getMarkers());
} catch (CoreException e) {
e.printStackTrace();
@@ -192,7 +192,7 @@
MethodExecution bottomME = creationPoint.getMethodExecution();
DebuggingController controller = DebuggingController.getInstance();
controller.jumpToTheTracePoint(creationPoint, false);
- VariableView variableView = (VariableView)(TraceDebuggerPlugin.getActiveView(VariableView.ID));
+ VariableViewRelatedDelta variableView = (VariableViewRelatedDelta)(TraceDebuggerPlugin.getActiveView(VariableViewRelatedDelta.ID));
variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkerManager.getMarkers());
CallStackView callStackView = (CallStackView)TraceDebuggerPlugin.getActiveView(CallStackView.ID);
callStackView.highlight(coordinatorME);
diff --git a/src/org/ntlab/traceDebugger/TraceDebuggerPerspective.java b/src/org/ntlab/traceDebugger/TraceDebuggerPerspective.java
index a7309c2..23f2605 100644
--- a/src/org/ntlab/traceDebugger/TraceDebuggerPerspective.java
+++ b/src/org/ntlab/traceDebugger/TraceDebuggerPerspective.java
@@ -15,20 +15,12 @@
IFolderLayout right = layout.createFolder("right", IPageLayout.RIGHT, 0.5f, editorArea);
right.addView(BreakPointView.ID);
- // �E���Ƀg���[�X�|�C���g�̃r���[��z�u
- IFolderLayout rightBottom = layout.createFolder("rightBottom", IPageLayout.BOTTOM, 0.5f, "right");
- rightBottom.addView(TracePointsView.ID);
+ // ����ɃR�[���X�^�b�N�̃r���[��z�u
+ IFolderLayout topLeft = layout.createFolder("topLeft", IPageLayout.TOP, 0.25f, editorArea);
+ topLeft.addView(CallStackView.ID);
// �E��ɕϐ��̃r���[��z�u
- IFolderLayout topRight = layout.createFolder("topRight", IPageLayout.TOP, 0.25f, editorArea);
+ IFolderLayout topRight = layout.createFolder("topRight", IPageLayout.TOP, 0.25f, "right");
topRight.addView(VariableView.ID);
-
- // ����ɃR�[���c���[�̃r���[��z�u
- IFolderLayout topLeft = layout.createFolder("topLeft", IPageLayout.LEFT, 0.25f, "topRight");
- topLeft.addView(CallTreeView.ID);
-
- // ����ɃR�[���X�^�b�N�̃r���[��z�u
- IFolderLayout topLeft2 = layout.createFolder("topLeft2", IPageLayout.TOP, 0.25f, "topLeft");
- topLeft2.addView(CallStackView.ID);
}
}
diff --git a/src/org/ntlab/traceDebugger/TraceDebuggerPerspectiveRelatedDelta.java b/src/org/ntlab/traceDebugger/TraceDebuggerPerspectiveRelatedDelta.java
new file mode 100644
index 0000000..6f4679b
--- /dev/null
+++ b/src/org/ntlab/traceDebugger/TraceDebuggerPerspectiveRelatedDelta.java
@@ -0,0 +1,34 @@
+package org.ntlab.traceDebugger;
+
+import org.eclipse.ui.IFolderLayout;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IPerspectiveFactory;
+
+public class TraceDebuggerPerspectiveRelatedDelta implements IPerspectiveFactory {
+
+ @Override
+ public void createInitialLayout(IPageLayout layout) {
+ // �G�f�B�^�̏ꏊ���擾
+ String editorArea = layout.getEditorArea();
+
+ // �E�Ƀu���[�N�|�C���g�̃r���[��z�u
+ IFolderLayout right = layout.createFolder("right", IPageLayout.RIGHT, 0.5f, editorArea);
+ right.addView(BreakPointViewRelatedReverse.ID);
+
+ // �E���Ƀg���[�X�|�C���g�̃r���[��z�u
+ IFolderLayout rightBottom = layout.createFolder("rightBottom", IPageLayout.BOTTOM, 0.5f, "right");
+ rightBottom.addView(TracePointsView.ID);
+
+ // �E��ɕϐ��̃r���[��z�u
+ IFolderLayout topRight = layout.createFolder("topRight", IPageLayout.TOP, 0.25f, editorArea);
+ topRight.addView(VariableViewRelatedDelta.ID);
+
+ // ����ɃR�[���c���[�̃r���[��z�u
+ IFolderLayout topLeft = layout.createFolder("topLeft", IPageLayout.LEFT, 0.25f, "topRight");
+ topLeft.addView(CallTreeView.ID);
+
+ // ����ɃR�[���X�^�b�N�̃r���[��z�u
+ IFolderLayout topLeft2 = layout.createFolder("topLeft2", IPageLayout.TOP, 0.25f, "topLeft");
+ topLeft2.addView(CallStackViewRelatedDelta.ID);
+ }
+}
diff --git a/src/org/ntlab/traceDebugger/TraceDebuggerPerspectiveRelatedReverse.java b/src/org/ntlab/traceDebugger/TraceDebuggerPerspectiveRelatedReverse.java
new file mode 100644
index 0000000..85662e9
--- /dev/null
+++ b/src/org/ntlab/traceDebugger/TraceDebuggerPerspectiveRelatedReverse.java
@@ -0,0 +1,30 @@
+package org.ntlab.traceDebugger;
+
+import org.eclipse.ui.IFolderLayout;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IPerspectiveFactory;
+
+public class TraceDebuggerPerspectiveRelatedReverse implements IPerspectiveFactory {
+
+ @Override
+ public void createInitialLayout(IPageLayout layout) {
+ // �G�f�B�^�̏ꏊ���擾
+ String editorArea = layout.getEditorArea();
+
+ // �E�Ƀu���[�N�|�C���g�̃r���[��z�u
+ IFolderLayout right = layout.createFolder("right", IPageLayout.RIGHT, 0.5f, editorArea);
+ right.addView(BreakPointViewRelatedReverse.ID);
+
+ // �E���Ƀg���[�X�|�C���g�̃r���[��z�u
+ IFolderLayout rightBottom = layout.createFolder("rightBottom", IPageLayout.BOTTOM, 0.5f, "right");
+ rightBottom.addView(TracePointsView.ID);
+
+ // ����ɃR�[���X�^�b�N�̃r���[��z�u
+ IFolderLayout topLeft = layout.createFolder("topLeft", IPageLayout.TOP, 0.25f, editorArea);
+ topLeft.addView(CallStackView.ID);
+
+ // �E��ɕϐ��̃r���[��z�u
+ IFolderLayout topRight = layout.createFolder("topRight", IPageLayout.RIGHT, 0.25f, "topLeft");
+ topRight.addView(VariableViewRelatedReverse.ID);
+ }
+}
diff --git a/src/org/ntlab/traceDebugger/TracePointsView.java b/src/org/ntlab/traceDebugger/TracePointsView.java
index 2db9839..0bb3b5c 100644
--- a/src/org/ntlab/traceDebugger/TracePointsView.java
+++ b/src/org/ntlab/traceDebugger/TracePointsView.java
@@ -188,34 +188,12 @@
viewer.refresh();
}
- private void jumpToTheTracePoint(TracePoint tp) {
+ protected void jumpToTheTracePoint(TracePoint tp) {
DebuggingController debuggingController = DebuggingController.getInstance();
debuggingController.jumpToTheTracePoint(tp, false);
MethodExecution currentME = tp.getMethodExecution();
int lineNo = tp.getStatement().getLineNo();
IMarker marker = DebuggingController.getInstance().createCurrentLineMarker(currentME, lineNo);
JavaEditorOperator.markAndOpenJavaFile(marker);
-
- CallStackView callStackView = ((CallStackView)TraceDebuggerPlugin.getActiveView(CallStackView.ID));
- VariableView variableView = ((VariableView)TraceDebuggerPlugin.getActiveView(VariableView.ID));
-
- AbstractAnalyzer analyzer = TraceDebuggerPlugin.getAnalyzer();
- if (analyzer instanceof DeltaExtractionAnalyzer) {
- DeltaMarkerView deltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.getActiveView(DeltaMarkerView.ID);
- if (deltaMarkerView != null) {
- DeltaMarkerManager deltaMarkerManager = deltaMarkerView.getDeltaMarkerManager();
- Map> deltaMarkers = deltaMarkerManager.getMarkers();
- if (deltaMarkers != null) {
- variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkers);
- }
- IMarker coordinatorMarker = deltaMarkerManager.getCoordinatorDeltaMarker();
- if (coordinatorMarker != null) {
- MethodExecution coordinatorME = DeltaMarkerManager.getMethodExecution(coordinatorMarker);
- callStackView.highlight(coordinatorME);
- }
- CallTreeView callTreeView = ((CallTreeView)TraceDebuggerPlugin.getActiveView(CallTreeView.ID));
- callTreeView.highlight(currentME);
- }
- }
}
}
\ No newline at end of file
diff --git a/src/org/ntlab/traceDebugger/VariableView.java b/src/org/ntlab/traceDebugger/VariableView.java
index 6f296c7..946d429 100644
--- a/src/org/ntlab/traceDebugger/VariableView.java
+++ b/src/org/ntlab/traceDebugger/VariableView.java
@@ -1,21 +1,9 @@
package org.ntlab.traceDebugger;
import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeViewerListener;
@@ -25,28 +13,15 @@
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.part.ViewPart;
-import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution;
-import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodInvocation;
import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint;
-import org.ntlab.traceDebugger.Variable.VariableType;
-import org.ntlab.traceDebugger.analyzerProvider.Alias;
-import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager;
-import org.ntlab.traceDebugger.analyzerProvider.VariableUpdatePointFinder;
public class VariableView extends ViewPart {
- private TreeViewer viewer;
- private IAction jumpAction;
- private IAction deltaActionForContainerToComponent;
- private IAction deltaActionForThisToAnother;
- private Variable selectedVariable;
- private Variables variables = Variables.getInstance();
+ protected TreeViewer viewer;
+ protected Variable selectedVariable;
+ protected Variables variables = Variables.getInstance();
public static final String ID = "org.ntlab.traceDebugger.variableView";
public VariableView() {
@@ -130,154 +105,27 @@
viewer.getControl().setFocus();
}
- private void createActions() {
- jumpAction = new Action() {
- public void run() {
- TracePoint tp = null;
- TracePoint before = DebuggingController.getInstance().getCurrentTp();
- VariableType variableType = selectedVariable.getVariableType();
- if (variableType.equals(VariableType.USE_VALUE)) {
- String containerId = selectedVariable.getContainerId();
- String fieldName = selectedVariable.getFullyQualifiedVariableName();
- tp = VariableUpdatePointFinder.getInstance().getPoint(containerId, fieldName, before);
- } else if (variableType.equals(VariableType.USE_RETURN)) {
- String receiverId = selectedVariable.getContainerId();
- String valueId = selectedVariable.getValueId();
- String receiverClassName = selectedVariable.getContainerClassName();
- VariableUpdatePointFinder finder = VariableUpdatePointFinder.getInstance();
- if (receiverClassName.contains("Iterator") || receiverClassName.contains("Itr")
- || receiverClassName.contains("Collections$UnmodifiableCollection$1")) {
- tp = finder.getIteratorPoint(receiverId);
- if (tp == null) return;
- MethodInvocation mi = ((MethodInvocation)tp.getStatement());
- receiverId = mi.getCalledMethodExecution().getThisObjId();
- }
- tp = finder.getDefinitionInvocationPoint(receiverId, valueId, before);
- }
- if (tp == null) return;
- DebuggingController controller = DebuggingController.getInstance();
- controller.jumpToTheTracePoint(tp, false);
- }
- };
- jumpAction.setText("Jump to Definition");
- jumpAction.setToolTipText("Jump to Definition");
-
- deltaActionForContainerToComponent = new Action() {
- @Override
- public void run() {
- DeltaMarkerView newDeltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.createNewView(DeltaMarkerView.ID, IWorkbenchPage.VIEW_ACTIVATE);
- newDeltaMarkerView.extractDelta(selectedVariable, true);
- }
- };
- deltaActionForContainerToComponent.setText("Extract Delta");
- deltaActionForContainerToComponent.setToolTipText("Extract Delta");
+ protected void createActions() {
- deltaActionForThisToAnother = new Action() {
- @Override
- public void run() {
- DeltaMarkerView newDeltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.createNewView(DeltaMarkerView.ID, IWorkbenchPage.VIEW_ACTIVATE);
- newDeltaMarkerView.extractDelta(selectedVariable, false);
- }
- };
- deltaActionForThisToAnother.setText("Extract Delta");
- deltaActionForThisToAnother.setToolTipText("Extract Delta");
}
- private void createToolBar() {
+ protected void createToolBar() {
IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
}
- private void createMenuBar() {
+ protected void createMenuBar() {
IMenuManager mgr = getViewSite().getActionBars().getMenuManager();
}
- private void createPopupMenu() {
- MenuManager menuMgr = new MenuManager("#PopupMenu");
- menuMgr.setRemoveAllWhenShown(true);
- menuMgr.addMenuListener(new IMenuListener() {
- @Override
- public void menuAboutToShow(IMenuManager manager) {
- // �E�N���b�N����x�ɌĂяo�����
- VariableType variableType = selectedVariable.getVariableType();
- if (variableType.equals(VariableType.USE_VALUE)) {
- manager.add(jumpAction);
- jumpAction.setText("Jump to Definition");
- jumpAction.setToolTipText("Jump to Definition");
- } else if (variableType.equals(VariableType.USE_RETURN)) {
- manager.add(jumpAction);
- if (updateDeltaActionForThisToAnotherTexts(selectedVariable)) {
- manager.add(deltaActionForThisToAnother);
- }
- jumpAction.setText("Jump to Addition");
- jumpAction.setToolTipText("Jump to Addition");
- } else if (variableType.isDef()) {
- if (updateDeltaActionForContainerToComponentTexts(selectedVariable)) {
- manager.add(deltaActionForContainerToComponent);
- }
- if (updateDeltaActionForThisToAnotherTexts(selectedVariable)) {
- String text1 = deltaActionForThisToAnother.getText();
- String text2 = deltaActionForContainerToComponent.getText();
- if (!(text1.equals(text2))) {
- manager.add(deltaActionForThisToAnother);
- }
- }
- } else if (variableType.equals(VariableType.PARAMETER)) {
- if (updateDeltaActionForThisToAnotherTexts(selectedVariable)) {
- manager.add(deltaActionForThisToAnother);
- }
- }
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
- });
- Menu menu = menuMgr.createContextMenu(viewer.getControl());
- viewer.getControl().setMenu(menu);
- getSite().registerContextMenu(menuMgr, viewer);
+ protected void createPopupMenu() {
+
}
public void reset() {
variables.resetData();
viewer.setInput(variables.getVariablesTreeNodesList());
viewer.refresh();
- }
-
- private boolean updateDeltaActionForContainerToComponentTexts(Variable variable) {
- String valueId = selectedVariable.getValueId();
- String valueClassName = selectedVariable.getValueClassName();
- valueClassName = valueClassName.substring(valueClassName.lastIndexOf(".") + 1);
- String containerId = selectedVariable.getContainerId();
- String containerClassName = selectedVariable.getContainerClassName();
- if (containerId != null && containerClassName != null) {
- containerClassName = containerClassName.substring(containerClassName.lastIndexOf(".") + 1);
- String textForContainerToComponent = String.format("Extract Delta (%s: %s �� %s: %s)", containerId, containerClassName, valueId, valueClassName);
- deltaActionForContainerToComponent.setText(textForContainerToComponent);
- deltaActionForContainerToComponent.setToolTipText(textForContainerToComponent);
- return true;
- } else {
- deltaActionForContainerToComponent.setText("");
- deltaActionForContainerToComponent.setToolTipText("");
- return false;
- }
- }
-
- private boolean updateDeltaActionForThisToAnotherTexts(Variable variable) {
- String valueId = selectedVariable.getValueId();
- String valueClassName = selectedVariable.getValueClassName();
- valueClassName = valueClassName.substring(valueClassName.lastIndexOf(".") + 1);
- TracePoint before = selectedVariable.getBeforeTracePoint();
- String thisId = before.getMethodExecution().getThisObjId();
- String thisClassName = before.getMethodExecution().getThisClassName();
- if (thisId != null && thisClassName != null) {
- thisClassName = thisClassName.substring(thisClassName.lastIndexOf(".") + 1);
- String textForThisToAnother = String.format("Extract Delta (%s: %s �� %s: %s)", thisId, thisClassName, valueId, valueClassName);
- deltaActionForThisToAnother.setText(textForThisToAnother);
- deltaActionForThisToAnother.setToolTipText(textForThisToAnother);
- return true;
- } else {
- deltaActionForThisToAnother.setText("");
- deltaActionForThisToAnother.setToolTipText("");
- return false;
- }
- }
+ }
public void updateVariablesByTracePoint(TracePoint tp, boolean isReturned) {
updateVariablesByTracePoint(tp, isReturned, null);
@@ -300,68 +148,5 @@
variables.updateForDifferential(from, to, isReturned);
// viewer.setInput(variables.getVariablesTreeNodes());
viewer.refresh();
- }
-
- public void markAndExpandVariablesByDeltaMarkers(Map> markers) {
- List srcSideDeltaMarkers = markers.get(DeltaMarkerManager.SRC_SIDE_DELTA_MARKER);
- List dstSideDeltaMarkers = markers.get(DeltaMarkerManager.DST_SIDE_DELTA_MARKER);
- List coordinatorMarker = markers.get(DeltaMarkerManager.COORDINATOR_DELTA_MARKER);
- if (srcSideDeltaMarkers != null) {
- markVariables(DeltaMarkerManager.SRC_SIDE_DELTA_MARKER, srcSideDeltaMarkers);
- }
- if (dstSideDeltaMarkers != null) {
- markVariables(DeltaMarkerManager.DST_SIDE_DELTA_MARKER, dstSideDeltaMarkers);
- }
- if (coordinatorMarker != null) {
- markVariables(DeltaMarkerManager.COORDINATOR_DELTA_MARKER, coordinatorMarker);
- }
- viewer.refresh();
- expandAllMarkedNodes();
- }
-
- private void markVariables(String markerId, List markerList) {
- Set idSet = new HashSet<>();
- Map additionalAttributesForVariables = new HashMap<>();
- additionalAttributesForVariables.put("markerId", markerId);
- for (IMarker marker : markerList) {
- try {
- Object data = marker.getAttribute(DeltaMarkerManager.DELTA_MARKER_ATR_DATA);
- if (data instanceof Alias) {
- idSet.add(((Alias)data).getObjectId());
- } else if (data instanceof MethodExecution) {
- idSet.add(((MethodExecution)data).getThisObjId());
- }
- } catch (CoreException e) {
- e.printStackTrace();
- }
- }
- variables.addAdditionalAttributes(idSet, additionalAttributesForVariables);
- }
-
- private void expandAllMarkedNodes() {
- Set expandedNodes = new HashSet<>();
- for (TreeItem item : viewer.getTree().getItems()) {
- Object obj = item.getData();
- if (!(obj instanceof TreeNode)) continue;
- collectNodes((TreeNode)obj, expandedNodes);
- }
- viewer.setExpandedElements(expandedNodes.toArray(new Object[expandedNodes.size()]));
- }
-
- private void collectNodes(TreeNode node, final Set expandedNodes) {
- Object value = node.getValue();
- if (!(value instanceof Variable)) return;
- Variable variable = (Variable)value;
- if (variable.getAdditionalAttribute("markerId") != null) {
- TreeNode parent = node.getParent();
- if (parent != null) {
- expandedNodes.add(parent);
- }
- }
- TreeNode[] children = node.getChildren();
- if (children == null) return;
- for (TreeNode child : children) {
- collectNodes(child, expandedNodes);
- }
}
}
diff --git a/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java b/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java
new file mode 100644
index 0000000..a36eba1
--- /dev/null
+++ b/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java
@@ -0,0 +1,223 @@
+package org.ntlab.traceDebugger;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.TreeNode;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPage;
+import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution;
+import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint;
+import org.ntlab.traceDebugger.Variable.VariableType;
+import org.ntlab.traceDebugger.analyzerProvider.Alias;
+import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager;
+
+public class VariableViewRelatedDelta extends VariableViewRelatedReverse {
+ private IAction deltaActionForContainerToComponent;
+ private IAction deltaActionForThisToAnother;
+ public static final String ID = "org.ntlab.traceDebugger.variableViewRelatedDelta";
+
+ public VariableViewRelatedDelta() {
+ // TODO Auto-generated constructor stub
+ System.out.println("VariableViewRelatedDelta�N���X���������ꂽ��!");
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ // TODO Auto-generated method stub
+ System.out.println("VariableViewRelatedDelta#createPartControl(Composite)���Ăꂽ��!");
+ super.createPartControl(parent);
+ TraceDebuggerPlugin.setActiveView(ID, this);
+ }
+
+ @Override
+ public void setFocus() {
+ // TODO Auto-generated method stub
+ TraceDebuggerPlugin.setActiveView(ID, this);
+ viewer.getControl().setFocus();
+ }
+
+ @Override
+ protected void createActions() {
+ super.createActions();
+ deltaActionForContainerToComponent = new Action() {
+ @Override
+ public void run() {
+ DeltaMarkerView newDeltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.createNewView(DeltaMarkerView.ID, IWorkbenchPage.VIEW_ACTIVATE);
+ newDeltaMarkerView.extractDelta(selectedVariable, true);
+ }
+ };
+ deltaActionForContainerToComponent.setText("Extract Delta");
+ deltaActionForContainerToComponent.setToolTipText("Extract Delta");
+
+ deltaActionForThisToAnother = new Action() {
+ @Override
+ public void run() {
+ DeltaMarkerView newDeltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.createNewView(DeltaMarkerView.ID, IWorkbenchPage.VIEW_ACTIVATE);
+ newDeltaMarkerView.extractDelta(selectedVariable, false);
+ }
+ };
+ deltaActionForThisToAnother.setText("Extract Delta");
+ deltaActionForThisToAnother.setToolTipText("Extract Delta");
+ }
+
+ @Override
+ protected void createPopupMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ @Override
+ public void menuAboutToShow(IMenuManager manager) {
+ // �E�N���b�N����x�ɌĂяo�����
+ VariableType variableType = selectedVariable.getVariableType();
+ if (variableType.equals(VariableType.USE_VALUE)) {
+ manager.add(jumpAction);
+ jumpAction.setText("Jump to Definition");
+ jumpAction.setToolTipText("Jump to Definition");
+ } else if (variableType.equals(VariableType.USE_RETURN)) {
+ manager.add(jumpAction);
+ if (updateDeltaActionForThisToAnotherTexts(selectedVariable)) {
+ manager.add(deltaActionForThisToAnother);
+ }
+ jumpAction.setText("Jump to Addition");
+ jumpAction.setToolTipText("Jump to Addition");
+ } else if (variableType.isDef()) {
+ if (updateDeltaActionForContainerToComponentTexts(selectedVariable)) {
+ manager.add(deltaActionForContainerToComponent);
+ }
+ if (updateDeltaActionForThisToAnotherTexts(selectedVariable)) {
+ String text1 = deltaActionForThisToAnother.getText();
+ String text2 = deltaActionForContainerToComponent.getText();
+ if (!(text1.equals(text2))) {
+ manager.add(deltaActionForThisToAnother);
+ }
+ }
+ } else if (variableType.equals(VariableType.PARAMETER)) {
+ if (updateDeltaActionForThisToAnotherTexts(selectedVariable)) {
+ manager.add(deltaActionForThisToAnother);
+ }
+ }
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+ });
+ Menu menu = menuMgr.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, viewer);
+ }
+
+ private boolean updateDeltaActionForContainerToComponentTexts(Variable variable) {
+ String valueId = selectedVariable.getValueId();
+ String valueClassName = selectedVariable.getValueClassName();
+ valueClassName = valueClassName.substring(valueClassName.lastIndexOf(".") + 1);
+ String containerId = selectedVariable.getContainerId();
+ String containerClassName = selectedVariable.getContainerClassName();
+ if (containerId != null && containerClassName != null) {
+ containerClassName = containerClassName.substring(containerClassName.lastIndexOf(".") + 1);
+ String textForContainerToComponent = String.format("Extract Delta (%s: %s �� %s: %s)", containerId, containerClassName, valueId, valueClassName);
+ deltaActionForContainerToComponent.setText(textForContainerToComponent);
+ deltaActionForContainerToComponent.setToolTipText(textForContainerToComponent);
+ return true;
+ } else {
+ deltaActionForContainerToComponent.setText("");
+ deltaActionForContainerToComponent.setToolTipText("");
+ return false;
+ }
+ }
+
+ private boolean updateDeltaActionForThisToAnotherTexts(Variable variable) {
+ String valueId = selectedVariable.getValueId();
+ String valueClassName = selectedVariable.getValueClassName();
+ valueClassName = valueClassName.substring(valueClassName.lastIndexOf(".") + 1);
+ TracePoint before = selectedVariable.getBeforeTracePoint();
+ String thisId = before.getMethodExecution().getThisObjId();
+ String thisClassName = before.getMethodExecution().getThisClassName();
+ if (thisId != null && thisClassName != null) {
+ thisClassName = thisClassName.substring(thisClassName.lastIndexOf(".") + 1);
+ String textForThisToAnother = String.format("Extract Delta (%s: %s �� %s: %s)", thisId, thisClassName, valueId, valueClassName);
+ deltaActionForThisToAnother.setText(textForThisToAnother);
+ deltaActionForThisToAnother.setToolTipText(textForThisToAnother);
+ return true;
+ } else {
+ deltaActionForThisToAnother.setText("");
+ deltaActionForThisToAnother.setToolTipText("");
+ return false;
+ }
+ }
+
+ public void markAndExpandVariablesByDeltaMarkers(Map> markers) {
+ List srcSideDeltaMarkers = markers.get(DeltaMarkerManager.SRC_SIDE_DELTA_MARKER);
+ List dstSideDeltaMarkers = markers.get(DeltaMarkerManager.DST_SIDE_DELTA_MARKER);
+ List coordinatorMarker = markers.get(DeltaMarkerManager.COORDINATOR_DELTA_MARKER);
+ if (srcSideDeltaMarkers != null) {
+ markVariables(DeltaMarkerManager.SRC_SIDE_DELTA_MARKER, srcSideDeltaMarkers);
+ }
+ if (dstSideDeltaMarkers != null) {
+ markVariables(DeltaMarkerManager.DST_SIDE_DELTA_MARKER, dstSideDeltaMarkers);
+ }
+ if (coordinatorMarker != null) {
+ markVariables(DeltaMarkerManager.COORDINATOR_DELTA_MARKER, coordinatorMarker);
+ }
+ viewer.refresh();
+ expandAllMarkedNodes();
+ }
+
+ private void markVariables(String markerId, List markerList) {
+ Set idSet = new HashSet<>();
+ Map additionalAttributesForVariables = new HashMap<>();
+ additionalAttributesForVariables.put("markerId", markerId);
+ for (IMarker marker : markerList) {
+ try {
+ Object data = marker.getAttribute(DeltaMarkerManager.DELTA_MARKER_ATR_DATA);
+ if (data instanceof Alias) {
+ idSet.add(((Alias)data).getObjectId());
+ } else if (data instanceof MethodExecution) {
+ idSet.add(((MethodExecution)data).getThisObjId());
+ }
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+ variables.addAdditionalAttributes(idSet, additionalAttributesForVariables);
+ }
+
+ private void expandAllMarkedNodes() {
+ Set expandedNodes = new HashSet<>();
+ for (TreeItem item : viewer.getTree().getItems()) {
+ Object obj = item.getData();
+ if (!(obj instanceof TreeNode)) continue;
+ collectNodes((TreeNode)obj, expandedNodes);
+ }
+ viewer.setExpandedElements(expandedNodes.toArray(new Object[expandedNodes.size()]));
+ }
+
+ private void collectNodes(TreeNode node, final Set expandedNodes) {
+ Object value = node.getValue();
+ if (!(value instanceof Variable)) return;
+ Variable variable = (Variable)value;
+ if (variable.getAdditionalAttribute("markerId") != null) {
+ TreeNode parent = node.getParent();
+ if (parent != null) {
+ expandedNodes.add(parent);
+ }
+ }
+ TreeNode[] children = node.getChildren();
+ if (children == null) return;
+ for (TreeNode child : children) {
+ collectNodes(child, expandedNodes);
+ }
+ }
+}
diff --git a/src/org/ntlab/traceDebugger/VariableViewRelatedReverse.java b/src/org/ntlab/traceDebugger/VariableViewRelatedReverse.java
new file mode 100644
index 0000000..93653f8
--- /dev/null
+++ b/src/org/ntlab/traceDebugger/VariableViewRelatedReverse.java
@@ -0,0 +1,100 @@
+package org.ntlab.traceDebugger;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodInvocation;
+import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint;
+import org.ntlab.traceDebugger.Variable.VariableType;
+import org.ntlab.traceDebugger.analyzerProvider.VariableUpdatePointFinder;
+
+public class VariableViewRelatedReverse extends VariableView {
+ protected IAction jumpAction;
+ public static final String ID = "org.ntlab.traceDebugger.variableViewRelatedReverse";
+
+ public VariableViewRelatedReverse() {
+ // TODO Auto-generated constructor stub
+ System.out.println("VariableViewRelatedReverse�N���X���������ꂽ��!");
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ // TODO Auto-generated method stub
+ System.out.println("VariableViewRelatedReverse#createPartControl(Composite)���Ăꂽ��!");
+ super.createPartControl(parent);
+ TraceDebuggerPlugin.setActiveView(ID, this);
+ }
+
+ @Override
+ public void setFocus() {
+ // TODO Auto-generated method stub
+ TraceDebuggerPlugin.setActiveView(ID, this);
+ viewer.getControl().setFocus();
+ }
+
+ @Override
+ protected void createActions() {
+ jumpAction = new Action() {
+ public void run() {
+ TracePoint tp = null;
+ TracePoint before = DebuggingController.getInstance().getCurrentTp();
+ VariableType variableType = selectedVariable.getVariableType();
+ if (variableType.equals(VariableType.USE_VALUE)) {
+ String containerId = selectedVariable.getContainerId();
+ String fieldName = selectedVariable.getFullyQualifiedVariableName();
+ tp = VariableUpdatePointFinder.getInstance().getPoint(containerId, fieldName, before);
+ } else if (variableType.equals(VariableType.USE_RETURN)) {
+ String receiverId = selectedVariable.getContainerId();
+ String valueId = selectedVariable.getValueId();
+ String receiverClassName = selectedVariable.getContainerClassName();
+ VariableUpdatePointFinder finder = VariableUpdatePointFinder.getInstance();
+ if (receiverClassName.contains("Iterator") || receiverClassName.contains("Itr")
+ || receiverClassName.contains("Collections$UnmodifiableCollection$1")) {
+ tp = finder.getIteratorPoint(receiverId);
+ if (tp == null) return;
+ MethodInvocation mi = ((MethodInvocation)tp.getStatement());
+ receiverId = mi.getCalledMethodExecution().getThisObjId();
+ }
+ tp = finder.getDefinitionInvocationPoint(receiverId, valueId, before);
+ }
+ if (tp == null) return;
+ DebuggingController controller = DebuggingController.getInstance();
+ controller.jumpToTheTracePoint(tp, false);
+ }
+ };
+ jumpAction.setText("Jump to Definition");
+ jumpAction.setToolTipText("Jump to Definition");
+ }
+
+ @Override
+ protected void createPopupMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ @Override
+ public void menuAboutToShow(IMenuManager manager) {
+ // �E�N���b�N����x�ɌĂяo�����
+ VariableType variableType = selectedVariable.getVariableType();
+ if (variableType.equals(VariableType.USE_VALUE)) {
+ manager.add(jumpAction);
+ jumpAction.setText("Jump to Definition");
+ jumpAction.setToolTipText("Jump to Definition");
+ } else if (variableType.equals(VariableType.USE_RETURN)) {
+ manager.add(jumpAction);
+ jumpAction.setText("Jump to Addition");
+ jumpAction.setToolTipText("Jump to Addition");
+ }
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+ });
+ Menu menu = menuMgr.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, viewer);
+ }
+}