diff --git a/icons/debug/debug_dlcl.png b/icons/debug/debug_dlcl.png
new file mode 100644
index 0000000..9d50176
--- /dev/null
+++ b/icons/debug/debug_dlcl.png
Binary files differ
diff --git a/icons/debug/debug_elcl.png b/icons/debug/debug_elcl.png
new file mode 100644
index 0000000..6bd3c42
--- /dev/null
+++ b/icons/debug/debug_elcl.png
Binary files differ
diff --git a/icons/debug/import_brkpts_dlcl.png b/icons/debug/import_brkpts_dlcl.png
new file mode 100644
index 0000000..13e5061
--- /dev/null
+++ b/icons/debug/import_brkpts_dlcl.png
Binary files differ
diff --git a/icons/debug/import_brkpts_elcl.png b/icons/debug/import_brkpts_elcl.png
new file mode 100644
index 0000000..7c4ae88
--- /dev/null
+++ b/icons/debug/import_brkpts_elcl.png
Binary files differ
diff --git a/icons/debug/stepnext_dlcl.png b/icons/debug/stepnext_dlcl.png
new file mode 100644
index 0000000..0b376a8
--- /dev/null
+++ b/icons/debug/stepnext_dlcl.png
Binary files differ
diff --git a/icons/debug/stepnext_elcl.png b/icons/debug/stepnext_elcl.png
new file mode 100644
index 0000000..2cdbc6d
--- /dev/null
+++ b/icons/debug/stepnext_elcl.png
Binary files differ
diff --git a/icons/deltaMarker.png b/icons/deltaMarker.png
index 4be3929..cc39fb3 100644
--- a/icons/deltaMarker.png
+++ b/icons/deltaMarker.png
Binary files differ
diff --git a/icons/deltaMarker_tmp.png b/icons/deltaMarker_tmp.png
new file mode 100644
index 0000000..4be3929
--- /dev/null
+++ b/icons/deltaMarker_tmp.png
Binary files differ
diff --git a/icons/variable/fieldvariable.png b/icons/variable/fieldvariable.png
new file mode 100644
index 0000000..224b570
--- /dev/null
+++ b/icons/variable/fieldvariable.png
Binary files differ
diff --git a/icons/variable/localvariable.png b/icons/variable/localvariable.png
new file mode 100644
index 0000000..a496c2b
--- /dev/null
+++ b/icons/variable/localvariable.png
Binary files differ
diff --git a/icons/variable/specialvariable.png b/icons/variable/specialvariable.png
new file mode 100644
index 0000000..d2ea89a
--- /dev/null
+++ b/icons/variable/specialvariable.png
Binary files differ
diff --git a/icons/variable/thisvariable.png b/icons/variable/thisvariable.png
new file mode 100644
index 0000000..af367fb
--- /dev/null
+++ b/icons/variable/thisvariable.png
Binary files differ
diff --git a/icons/view/breakpoint_view.png b/icons/view/breakpoint_view.png
new file mode 100644
index 0000000..6b17442
--- /dev/null
+++ b/icons/view/breakpoint_view.png
Binary files differ
diff --git a/icons/view/callstack_view.png b/icons/view/callstack_view.png
new file mode 100644
index 0000000..97d5e2d
--- /dev/null
+++ b/icons/view/callstack_view.png
Binary files differ
diff --git a/icons/view/calltree_view.png b/icons/view/calltree_view.png
new file mode 100644
index 0000000..ae6d660
--- /dev/null
+++ b/icons/view/calltree_view.png
Binary files differ
diff --git a/icons/view/deltamarker_view.png b/icons/view/deltamarker_view.png
new file mode 100644
index 0000000..cc39fb3
--- /dev/null
+++ b/icons/view/deltamarker_view.png
Binary files differ
diff --git a/icons/view/tracepoints_view.png b/icons/view/tracepoints_view.png
new file mode 100644
index 0000000..a22ec80
--- /dev/null
+++ b/icons/view/tracepoints_view.png
Binary files differ
diff --git a/icons/view/variable_view.png b/icons/view/variable_view.png
new file mode 100644
index 0000000..d4d5774
--- /dev/null
+++ b/icons/view/variable_view.png
Binary files differ
diff --git a/plugin.xml b/plugin.xml
index 2de2e99..7f5381a 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -10,22 +10,25 @@
@@ -82,12 +91,12 @@
+ name="トレースデバッガ (順方向)">
+ name="トレースデバッガ (逆方向)">
());
viewer.refresh();
+ updateImagesForDebug(false);
+ updateImagesForBreakPoint(false);
}
public void updateTraceBreakPoints(TraceBreakPoints traceBreakPoints) {
this.traceBreakPoints = traceBreakPoints;
viewer.setInput(traceBreakPoints.getAllTraceBreakPoints());
-// viewer.refresh();
-
final Table table = viewer.getTable();
for (TableItem item : table.getItems()) {
Object data = item.getData();
@@ -328,8 +343,26 @@
viewer.refresh();
}
- public void updateImages(boolean isRunning) {
+ public void updateImagesForBreakPoint(boolean hasLoadedTraceFile) {
+ ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry();
+ if (hasLoadedTraceFile) {
+ ImageDescriptor debugIcon = registry.getDescriptor(DEBUG_ELCL);
+ debugAction.setImageDescriptor(debugIcon);
+ ImageDescriptor importBreakpointIcon = registry.getDescriptor(IMPORT_BREAKPOINT_ELCL);
+ importBreakpointAction.setImageDescriptor(importBreakpointIcon);
+ } else {
+ ImageDescriptor debugIcon = registry.getDescriptor(DEBUG_DLCL);
+ debugAction.setImageDescriptor(debugIcon);
+ ImageDescriptor importBreakpointIcon = registry.getDescriptor(IMPORT_BREAKPOINT_DLCL);
+ importBreakpointAction.setImageDescriptor(importBreakpointIcon);
+ }
+ }
+
+ public void updateImagesForDebug(boolean isRunning) {
+ ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry();
if (isRunning) {
+ ImageDescriptor debugIcon = registry.getDescriptor(DEBUG_DLCL);
+ debugAction.setImageDescriptor(debugIcon);
ImageDescriptor terminateImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE);
terminateAction.setImageDescriptor(terminateImage);
ImageDescriptor stepIntoImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_INTO);
@@ -338,9 +371,13 @@
stepOverAction.setImageDescriptor(stepOverImage);
ImageDescriptor stepReturnImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_RETURN);
stepReturnAction.setImageDescriptor(stepReturnImage);
+ ImageDescriptor stepNextIcon = registry.getDescriptor(STEP_NEXT_ELCL);
+ stepNextAction.setImageDescriptor(stepNextIcon);
ImageDescriptor image = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_RESUME);
resumeAction.setImageDescriptor(image);
} else {
+ ImageDescriptor debugIcon = registry.getDescriptor(DEBUG_ELCL);
+ debugAction.setImageDescriptor(debugIcon);
ImageDescriptor terminateImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_TERMINATE);
terminateAction.setImageDescriptor(terminateImage);
ImageDescriptor stepIntoImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_INTO);
@@ -349,6 +386,8 @@
stepOverAction.setImageDescriptor(stepOverImage);
ImageDescriptor stepReturnImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_RETURN);
stepReturnAction.setImageDescriptor(stepReturnImage);
+ ImageDescriptor stepNextIcon = registry.getDescriptor(STEP_NEXT_DLCL);
+ stepNextAction.setImageDescriptor(stepNextIcon);
ImageDescriptor image = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_RESUME);
resumeAction.setImageDescriptor(image);
}
diff --git a/src/org/ntlab/traceDebugger/BreakPointViewRelatedDelta.java b/src/org/ntlab/traceDebugger/BreakPointViewRelatedDelta.java
index 08f1f50..2ef6840 100644
--- a/src/org/ntlab/traceDebugger/BreakPointViewRelatedDelta.java
+++ b/src/org/ntlab/traceDebugger/BreakPointViewRelatedDelta.java
@@ -17,10 +17,10 @@
public static final String ID = "org.ntlab.traceDebugger.breakPointViewRelatedDelta";
public static final String STEP_BACK_INTO_ELCL = "StepBackInto_ELCL";
public static final String STEP_BACK_INTO_DLCL = "StepBackInto_DLCL";
- public static final String STEP_BACK_OVER_ELCL = "StepOverInto_ELCL";
- public static final String STEP_BACK_OVER_DLCL = "StepOverInto_DLCL";
- public static final String STEP_BACK_RETURN_ELCL = "StepReturnInto_ELCL";
- public static final String STEP_BACK_RETURN_DLCL = "StepReturnInto_DLCL";
+ public static final String STEP_BACK_OVER_ELCL = "StepBackOver_ELCL";
+ public static final String STEP_BACK_OVER_DLCL = "StepBackOver_DLCL";
+ public static final String STEP_BACK_RETURN_ELCL = "StepBackReturn_ELCL";
+ public static final String STEP_BACK_RETURN_DLCL = "StepBackReturn_DLCL";
public static final String BACK_RESUME_ELCL = "BackResume_ELCL";
public static final String BACK_RESUME_DLCL = "BackResume_DLCL";
@@ -47,15 +47,19 @@
@Override
protected void createActions() {
super.createActions();
- ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry();
+ ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry();
+ boolean isJapanese = TraceDebuggerPlugin.isJapanese();
+ String msg;
+
backResumeAction = new Action() {
@Override
public void run() {
debuggingController.backResumeAction();
}
};
- backResumeAction.setText("Back Resume");
- backResumeAction.setToolTipText("Back Resume");
+ msg = (isJapanese) ? "�t�����ɍĊJ" : "Back Resume";
+ backResumeAction.setText(msg);
+ backResumeAction.setToolTipText(msg);
ImageDescriptor backResumeIcon = registry.getDescriptor(BACK_RESUME_DLCL);
backResumeAction.setImageDescriptor(backResumeIcon);
@@ -65,8 +69,9 @@
debuggingController.stepBackIntoAction();
}
};
- stepBackIntoAction.setText("Step Back Into");
- stepBackIntoAction.setToolTipText("Step Back Into");
+ msg = (isJapanese) ? "�X�e�b�v�o�b�N�C��" : "Step Back Into";
+ stepBackIntoAction.setText(msg);
+ stepBackIntoAction.setToolTipText(msg);
ImageDescriptor stepBackIntoIcon = registry.getDescriptor(STEP_BACK_INTO_DLCL);
stepBackIntoAction.setImageDescriptor(stepBackIntoIcon);
@@ -76,8 +81,9 @@
debuggingController.stepBackOverAction();
}
};
- stepBackOverAction.setText("Step Back Over");
- stepBackOverAction.setToolTipText("Step Back Over");
+ msg = (isJapanese) ? "�X�e�b�v�o�b�N�I�[�o�[" : "Step Back Over";
+ stepBackOverAction.setText(msg);
+ stepBackOverAction.setToolTipText(msg);
ImageDescriptor stepBackOverIcon = registry.getDescriptor(STEP_BACK_OVER_DLCL);
stepBackOverAction.setImageDescriptor(stepBackOverIcon);
@@ -87,8 +93,9 @@
debuggingController.stepBackReturnAction();
}
};
- stepBackReturnAction.setText("Step Back Return");
- stepBackReturnAction.setToolTipText("Step Back Return");
+ msg = (isJapanese) ? "�X�e�b�v�o�b�N���^�[��" : "Step Back Return";
+ stepBackReturnAction.setText(msg);
+ stepBackReturnAction.setToolTipText(msg);
ImageDescriptor stepBackReturnIcon = registry.getDescriptor(STEP_BACK_RETURN_DLCL);
stepBackReturnAction.setImageDescriptor(stepBackReturnIcon);
}
@@ -130,8 +137,8 @@
}
@Override
- public void updateImages(boolean isRunning) {
- super.updateImages(isRunning);
+ public void updateImagesForDebug(boolean isRunning) {
+ super.updateImagesForDebug(isRunning);
ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry();
if (isRunning) {
ImageDescriptor stepBackIntoImage = registry.getDescriptor(STEP_BACK_INTO_ELCL);
diff --git a/src/org/ntlab/traceDebugger/CallStackLabelProvider.java b/src/org/ntlab/traceDebugger/CallStackLabelProvider.java
index c38fd4c..dc0f797 100644
--- a/src/org/ntlab/traceDebugger/CallStackLabelProvider.java
+++ b/src/org/ntlab/traceDebugger/CallStackLabelProvider.java
@@ -1,30 +1,31 @@
package org.ntlab.traceDebugger;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeNode;
-import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
public class CallStackLabelProvider extends LabelProvider implements IColorProvider {
-
+ private Image threadSuspendImage = DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_THREAD_SUSPENDED);
+ private Image callStackModelImage = DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_STACKFRAME);
+
@Override
public String getText(Object element) {
if (element instanceof TreeNode) {
Object value = ((TreeNode)element).getValue();
if (value instanceof String) {
String threadId = (String)value;
- return "ThreadID: " + threadId;
+ String msg = TraceDebuggerPlugin.isJapanese() ? "�X���b�hID: " : "Thread ID: ";
+ return msg + threadId;
}
if (value instanceof CallStackModel) {
CallStackModel callStackModel = (CallStackModel)value;
StringBuilder text = new StringBuilder();
text.append(callStackModel.getCallStackSignature());
- text.append(" line: ");
+ text.append(TraceDebuggerPlugin.isJapanese() ? " �s: " : " line: ");
text.append(callStackModel.getCallLineNo());
return text.toString();
}
@@ -35,7 +36,12 @@
@Override
public Image getImage(Object element) {
if (element instanceof TreeNode) {
- return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
+ Object value = ((TreeNode)element).getValue();
+ if (value instanceof String) {
+ return threadSuspendImage;
+ } else if (value instanceof CallStackModel) {
+ return callStackModelImage;
+ }
}
return null;
}
diff --git a/src/org/ntlab/traceDebugger/CallStackView.java b/src/org/ntlab/traceDebugger/CallStackView.java
index 6064419..84ffb23 100644
--- a/src/org/ntlab/traceDebugger/CallStackView.java
+++ b/src/org/ntlab/traceDebugger/CallStackView.java
@@ -3,7 +3,6 @@
import java.util.List;
import java.util.Map;
-import org.eclipse.core.resources.IMarker;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -16,9 +15,6 @@
import org.eclipse.ui.part.ViewPart;
import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution;
import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint;
-import org.ntlab.traceDebugger.analyzerProvider.AbstractAnalyzer;
-import org.ntlab.traceDebugger.analyzerProvider.DeltaExtractionAnalyzer;
-import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager;
public class CallStackView extends ViewPart {
protected TreeViewer viewer;
@@ -64,6 +60,11 @@
createPopupMenu();
TraceDebuggerPlugin.setActiveView(ID, this);
}
+
+ @Override
+ public String getTitle() {
+ return TraceDebuggerPlugin.isJapanese() ? "�Ăяo���X�^�b�N" : "CallStack";
+ }
@Override
public void setFocus() {
diff --git a/src/org/ntlab/traceDebugger/CallStackViewRelatedDelta.java b/src/org/ntlab/traceDebugger/CallStackViewRelatedDelta.java
index c97c4ff..677fe67 100644
--- a/src/org/ntlab/traceDebugger/CallStackViewRelatedDelta.java
+++ b/src/org/ntlab/traceDebugger/CallStackViewRelatedDelta.java
@@ -79,7 +79,8 @@
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);
+ String msg = TraceDebuggerPlugin.isJapanese() ? "�I�u�W�F�N�g�̐ڋ߉ߒ����o" : "Extract Process to Relate";
+ String text = String.format("%s (%s: %s �� %s: %s)", msg, callerId, callerClassName, calleeId, calleeClassName);
deltaAction.setText(text);
deltaAction.setToolTipText(text);
manager.add(deltaAction);
diff --git a/src/org/ntlab/traceDebugger/CallTreeLabelProvider.java b/src/org/ntlab/traceDebugger/CallTreeLabelProvider.java
index 371e09e..d1c9e68 100644
--- a/src/org/ntlab/traceDebugger/CallTreeLabelProvider.java
+++ b/src/org/ntlab/traceDebugger/CallTreeLabelProvider.java
@@ -1,15 +1,18 @@
package org.ntlab.traceDebugger;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeNode;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
public class CallTreeLabelProvider extends LabelProvider implements IColorProvider {
+ private Image callTreeModelImage = DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_STACKFRAME);
+ private Color currentColor = new Color(Display.getDefault(), 198, 219, 174);
+
@Override
public String getText(Object element) {
if (element instanceof TreeNode) {
@@ -25,7 +28,10 @@
@Override
public Image getImage(Object element) {
if (element instanceof TreeNode) {
- return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
+ Object value = ((TreeNode)element).getValue();
+ if (value instanceof CallTreeModel) {
+ return callTreeModelImage;
+ }
}
return null;
}
@@ -42,7 +48,7 @@
if (value instanceof CallTreeModel) {
CallTreeModel callTreeModel = (CallTreeModel)value;
if (callTreeModel.isHighlighting()) {
- return new Color(Display.getDefault(), 198, 219, 174);
+ return currentColor;
}
}
}
diff --git a/src/org/ntlab/traceDebugger/CallTreeView.java b/src/org/ntlab/traceDebugger/CallTreeView.java
index 73e8f94..d79a2a6 100644
--- a/src/org/ntlab/traceDebugger/CallTreeView.java
+++ b/src/org/ntlab/traceDebugger/CallTreeView.java
@@ -15,8 +15,6 @@
import org.eclipse.ui.part.ViewPart;
import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution;
import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint;
-import org.ntlab.traceDebugger.analyzerProvider.AbstractAnalyzer;
-import org.ntlab.traceDebugger.analyzerProvider.DeltaExtractionAnalyzer;
import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager;
public class CallTreeView extends ViewPart {
@@ -73,6 +71,11 @@
createMenuBar();
TraceDebuggerPlugin.setActiveView(ID, this);
}
+
+ @Override
+ public String getTitle() {
+ return TraceDebuggerPlugin.isJapanese() ? "���݂̎��s���_" : "CurrentExecutionPoint";
+ }
@Override
public void setFocus() {
diff --git a/src/org/ntlab/traceDebugger/DebuggingController.java b/src/org/ntlab/traceDebugger/DebuggingController.java
index 19f6b6f..7b8c78a 100644
--- a/src/org/ntlab/traceDebugger/DebuggingController.java
+++ b/src/org/ntlab/traceDebugger/DebuggingController.java
@@ -37,7 +37,6 @@
private static final DebuggingController theInstance = new DebuggingController();
private TracePoint debuggingTp;
private TraceBreakPoint selectedTraceBreakPoint;
-// private TraceBreakPoints traceBreakPoints;
private IMarker currentLineMarker;
private LoadingTraceFileStatus loadingTraceFileStatus = LoadingTraceFileStatus.NOT_YET;
private boolean isRunning = false;
@@ -73,15 +72,23 @@
public boolean fileOpenAction(Shell shell) {
if (loadingTraceFileStatus == LoadingTraceFileStatus.PROGRESS) {
- MessageDialog.openInformation(null, "Loading", "This debugger is loading the trace.");
+ if (TraceDebuggerPlugin.isJapanese()) {
+ MessageDialog.openInformation(null, "�ǂݍ��ݒ�", "�g���[�X�t�@�C����ǂݍ��ݒ��ł�");
+ } else {
+ MessageDialog.openInformation(null, "Loading", "This debugger is loading the trace.");
+ }
return false;
}
if (isRunning) {
- MessageDialog.openInformation(null, "Running", "This debugger is running on the trace.");
+ if (TraceDebuggerPlugin.isJapanese()) {
+ MessageDialog.openInformation(null, "���s��", "�g���[�X��Ŏ��s���ł�");
+ } else {
+ MessageDialog.openInformation(null, "Running", "This debugger is running on the trace.");
+ }
return false;
}
FileDialog fileDialog = new FileDialog(shell, SWT.OPEN);
- fileDialog.setText("Open Trace File");
+ fileDialog.setText(TraceDebuggerPlugin.isJapanese() ? "�g���[�X�t�@�C�����J��" : "Open Trace File");
fileDialog.setFilterExtensions(new String[]{"*.*"});
String path = fileDialog.open();
if (path == null) return false;
@@ -97,10 +104,11 @@
}
private void loadTraceFileOnOtherThread(final String filePath) {
- Job job = new Job("Loading Trace File") {
+ final String msg = TraceDebuggerPlugin.isJapanese() ? "�g���[�X�t�@�C����ǂݍ��ݒ�" : "Loading Trace File";
+ Job job = new Job(msg) {
@Override
- protected IStatus run(IProgressMonitor monitor) {
- monitor.beginTask("Loading Trace File" + " (" + filePath + ")", IProgressMonitor.UNKNOWN);
+ protected IStatus run(IProgressMonitor monitor) {
+ monitor.beginTask(msg + " (" + filePath + ")", IProgressMonitor.UNKNOWN);
loadingTraceFileStatus = LoadingTraceFileStatus.PROGRESS;
TraceDebuggerPlugin.setAnalyzer(null);
TraceJSON trace = new TraceJSON(filePath);
@@ -115,6 +123,7 @@
@Override
public void run() {
breakpointView.updateTraceBreakPoints(traceBreakPoints);
+ breakpointView.updateImagesForBreakPoint(true);
}
});
monitor.done();
@@ -133,19 +142,29 @@
public boolean addTraceBreakPointAction() {
if (loadingTraceFileStatus != LoadingTraceFileStatus.DONE) {
- MessageDialog.openInformation(null, "Error", "Trace file was not found");
+ if (TraceDebuggerPlugin.isJapanese()) {
+ MessageDialog.openInformation(null, "�G���[", "�g���[�X��������܂���ł���");
+ } else {
+ MessageDialog.openInformation(null, "Error", "Trace was not found");
+ }
return false;
}
- InputDialog inputDialog = new InputDialog(null, "method signature dialog", "Input method signature", "", null);
+ InputDialog inputDialog = TraceDebuggerPlugin.isJapanese() ? new InputDialog(null, "���\�b�h�_�C�A���O", "���\�b�h�V�O�j�`�������", "", null)
+ : new InputDialog(null, "method signature dialog", "Input method signature", "", null);
if (inputDialog.open() != InputDialog.OK) return false;
String methodSignature = inputDialog.getValue();
- inputDialog = new InputDialog(null, "line No dialog", "Input line no", "", null);
+ inputDialog = TraceDebuggerPlugin.isJapanese() ? new InputDialog(null, "�s���_�C�A���O", "�s�������", "", null)
+ : new InputDialog(null, "line Number dialog", "Input line number", "", null);
if (inputDialog.open() != InputDialog.OK) return false;
int lineNo = Integer.parseInt(inputDialog.getValue());
TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints();
boolean isSuccess = traceBreakPoints.addTraceBreakPoint(methodSignature, lineNo);
if (!isSuccess) {
- MessageDialog.openInformation(null, "Error", "This trace point does not exist in the trace.");
+ if (TraceDebuggerPlugin.isJapanese()) {
+ MessageDialog.openInformation(null, "�G���[", "�g���[�X���ɓ��͂����|�C���g�����݂��܂���");
+ } else {
+ MessageDialog.openInformation(null, "Error", "This point does not exist in the trace.");
+ }
return false;
}
((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateTraceBreakPoints(traceBreakPoints);
@@ -154,7 +173,11 @@
public boolean importBreakpointAction() {
if (loadingTraceFileStatus != LoadingTraceFileStatus.DONE) {
- MessageDialog.openInformation(null, "Error", "Trace file was not found");
+ if (TraceDebuggerPlugin.isJapanese()) {
+ MessageDialog.openInformation(null, "�G���[", "�g���[�X��������܂���");
+ } else {
+ MessageDialog.openInformation(null, "Error", "Trace was not found");
+ }
return false;
}
TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints();
@@ -171,30 +194,35 @@
return true;
}
- public boolean changeAvailableAction() {
- if (selectedTraceBreakPoint == null) return false;
- selectedTraceBreakPoint.changeAvailable();
- TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints();
- ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateTraceBreakPoints(traceBreakPoints);
- return true;
- }
-
public boolean debugAction() {
if (loadingTraceFileStatus != LoadingTraceFileStatus.DONE) {
- MessageDialog.openInformation(null, "Error", "Trace file was not found");
+ if (TraceDebuggerPlugin.isJapanese()) {
+ MessageDialog.openInformation(null, "�G���[", "�g���[�X��������܂���");
+ } else {
+ MessageDialog.openInformation(null, "Error", "Trace was not found");
+ }
return false;
}
if (isRunning) {
+ if (TraceDebuggerPlugin.isJapanese()) {
+ MessageDialog.openInformation(null, "�G���[", "�g���[�X��Ŏ��s���ł�");
+ } else {
+ MessageDialog.openInformation(null, "Error", "This Debugger is running on the trace.");
+ }
return false;
}
TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints();
debuggingTp = traceBreakPoints.getFirstTracePoint();
if (debuggingTp == null) {
- MessageDialog.openInformation(null, "Error", "An available breakpoint was not found");
+ if (TraceDebuggerPlugin.isJapanese()) {
+ MessageDialog.openInformation(null, "�G���[", "���p�\�ȃu���[�N�|�C���g��������܂���");
+ } else {
+ MessageDialog.openInformation(null, "Error", "An available breakpoint was not found");
+ }
return false;
}
refresh(null, debuggingTp, false);
- ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateImages(true);
+ ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateImagesForDebug(true);
isRunning = true;
return true;
}
@@ -210,7 +238,7 @@
}
((CallStackView)TraceDebuggerPlugin.getActiveView(CallStackView.ID)).reset();
((VariableView)TraceDebuggerPlugin.getActiveView(VariableView.ID)).reset();
- ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateImages(false);
+ ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateImagesForDebug(false);
isRunning = false;
}
@@ -224,11 +252,7 @@
TracePoint previousTp = debuggingTp;
debuggingTp = debuggingTp.duplicate();
debuggingTp.stepFull();
- if (!debuggingTp.isValid()) {
- terminateAction();
- MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
- return false;
- }
+ if (debugExecutionIsTerminated(debuggingTp)) return false;
refresh(null, debuggingTp, false);
return true;
}
@@ -264,13 +288,10 @@
} while (debuggingTp.stepFull());
} else {
debuggingTp = goalTp;
+ while (!debuggingTp.stepOver()); // �Ăяo�����ł̎��̃X�e�[�g�����g�܂Ői�߂�
}
- if (!debuggingTp.isValid()) {
- terminateAction();
- MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
- return false;
- }
+ if (debugExecutionIsTerminated(debuggingTp)) return false;
refresh(previousTp, debuggingTp, isReturned, true);
return true;
}
@@ -284,12 +305,14 @@
}
TracePoint previousTp = debuggingTp;
debuggingTp = debuggingTp.duplicate();
- while (debuggingTp.stepOver());
- if (!debuggingTp.isValid()) {
- terminateAction();
- MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
- return false;
+
+ // note: �Ăяo�����ɖ߂�܂Ői�ݑ�����
+ while (debuggingTp.stepOver()) {
+ previousTp = debuggingTp.duplicate();
}
+ while (!debuggingTp.stepOver()); // �Ăяo�����ł̎��̃X�e�[�g�����g�܂Ői�߂�
+
+ if (debugExecutionIsTerminated(debuggingTp)) return false;
refresh(previousTp, debuggingTp, true);
return true;
}
@@ -318,14 +341,10 @@
} while (debuggingTp.stepFull());
} else {
debuggingTp = startTp;
- startTp.stepOver();
+ while (!debuggingTp.stepOver()); // �Ăяo�����ł̎��̃X�e�[�g�����g�܂Ői�߂�
}
- if (!debuggingTp.isValid()) {
- terminateAction();
- MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
- return false;
- }
+ if (debugExecutionIsTerminated(debuggingTp)) return false;
refresh(previousTp, debuggingTp, isReturned, true);
return true;
}
@@ -337,11 +356,7 @@
TracePoint previousTp = debuggingTp;
TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints();
debuggingTp = traceBreakPoints.getNextTracePoint(currentTime);
- if (debuggingTp == null) {
- terminateAction();
- MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
- return false;
- }
+ if (debugExecutionIsTerminated(debuggingTp)) return false;
refresh(null, debuggingTp, false);
return true;
}
@@ -356,11 +371,7 @@
TracePoint previousTp = debuggingTp;
debuggingTp = debuggingTp.duplicate();
debuggingTp.stepBackFull();
- if (!debuggingTp.isValid()) {
- terminateAction();
- MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
- return false;
- }
+ if (debugExecutionIsTerminated(debuggingTp)) return false;
refresh(null, debuggingTp, true);
return true;
}
@@ -379,11 +390,7 @@
while (!(isReturned = !debuggingTp.stepBackOver())) {
if (currentLineNo != debuggingTp.getStatement().getLineNo()) break;
}
- if (!debuggingTp.isValid()) {
- terminateAction();
- MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
- return false;
- }
+ if (debugExecutionIsTerminated(debuggingTp)) return false;
refresh(null, debuggingTp, !isReturned);
return true;
}
@@ -398,11 +405,7 @@
TracePoint previousTp = debuggingTp;
debuggingTp = debuggingTp.duplicate();
while (debuggingTp.stepBackOver());
- if (!debuggingTp.isValid()) {
- terminateAction();
- MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
- return false;
- }
+ if (debugExecutionIsTerminated(debuggingTp)) return false;
refresh(null, debuggingTp, false);
return true;
}
@@ -414,14 +417,23 @@
long currentTime = debuggingTp.getStatement().getTimeStamp();
TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints();
debuggingTp = traceBreakPoints.getPreviousTracePoint(currentTime);
- if (debuggingTp == null) {
- terminateAction();
- MessageDialog.openInformation(null, "Terminate", "This trace is terminated");
- return false;
- }
+ if (debugExecutionIsTerminated(debuggingTp)) return false;
refresh(null, debuggingTp, false);
return true;
}
+
+ private boolean debugExecutionIsTerminated(TracePoint tp) {
+ if (tp == null || !(tp.isValid())) {
+ terminateAction();
+ if (TraceDebuggerPlugin.isJapanese()) {
+ MessageDialog.openInformation(null, "�I��", "�g���[�X��ł̎��s�͏I�����܂���");
+ } else {
+ MessageDialog.openInformation(null, "Terminate", "This execution is terminated");
+ }
+ return true;
+ }
+ return false;
+ }
/**
* ���݂̃f�o�b�O�ʒu���w�肵���g���[�X�|�C���g�ɍ��킹��
diff --git a/src/org/ntlab/traceDebugger/DeltaMarkerLabelProvider.java b/src/org/ntlab/traceDebugger/DeltaMarkerLabelProvider.java
index ce8d510..95f68bd 100644
--- a/src/org/ntlab/traceDebugger/DeltaMarkerLabelProvider.java
+++ b/src/org/ntlab/traceDebugger/DeltaMarkerLabelProvider.java
@@ -9,6 +9,7 @@
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
+import org.ntlab.traceDebugger.analyzerProvider.Alias.AliasType;
import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager;
public class DeltaMarkerLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider {
@@ -44,24 +45,9 @@
return simpleObjectTypeName.toString();
case 3:
Object obj = marker.getAttribute(DeltaMarkerManager.DELTA_MARKER_ATR_ALIAS_TYPE);
- if (obj == null) return null;
- // note: �X�l�[�N�P�[�X���p�X�J���P�[�X(�������P��Ԃ��ŋ��)�ɕς���
- String aliasType = obj.toString();
- aliasType = aliasType.toLowerCase().replace("_", " ");
- StringBuilder sb = new StringBuilder();
- for (int index = -1;;) {
- sb.append(aliasType.substring(index + 1, index + 2).toUpperCase());
- int nextIndex = aliasType.indexOf(" ", index + 1);
- if (nextIndex == -1) {
- sb.append(aliasType.substring(index + 2));
- break;
- } else {
- sb.append(aliasType.substring(index + 2, nextIndex + 1));
- index = nextIndex;
- }
- }
- aliasType = sb.toString();
- return aliasType;
+ if (!(obj instanceof AliasType)) return null;
+ AliasType aliasType = (AliasType)obj;
+ return getAliasTypeName(aliasType);
case 4:
String resource = marker.getResource().toString();
return resource.substring(resource.lastIndexOf("/") + 1);
@@ -76,14 +62,57 @@
return "�e�X�g�p�e�L�X�g";
}
+ private String getAliasTypeName(AliasType aliasType) {
+ String msg = aliasType.toString();
+ switch (aliasType) {
+ case METHOD_INVOCATION:
+ case CONSTRACTOR_INVOCATION:
+ return TraceDebuggerPlugin.isJapanese() ? "�Ăяo����" : "Invocation";
+ case RECEIVER:
+ return TraceDebuggerPlugin.isJapanese() ? "���V�[�o" : convertFromSnakeToPascal(msg);
+ case ACTUAL_ARGUMENT:
+ return TraceDebuggerPlugin.isJapanese() ? "������" : convertFromSnakeToPascal(msg);
+ case FORMAL_PARAMETER:
+ return TraceDebuggerPlugin.isJapanese() ? "������" : convertFromSnakeToPascal(msg);
+ case RETURN_VALUE:
+ return TraceDebuggerPlugin.isJapanese() ? "�߂�l" : convertFromSnakeToPascal(msg);
+ case THIS:
+ return TraceDebuggerPlugin.isJapanese() ? "this�̎Q��" : convertFromSnakeToPascal(msg);
+ case CONTAINER:
+ return TraceDebuggerPlugin.isJapanese() ? "�R���e�i�̎Q��" : convertFromSnakeToPascal(msg);
+ case FIELD:
+ return TraceDebuggerPlugin.isJapanese() ? "�t�B�[���h�Q��" : convertFromSnakeToPascal(msg);
+ case ARRAY:
+ return TraceDebuggerPlugin.isJapanese() ? "�z��Q��" : convertFromSnakeToPascal(msg);
+ case ARRAY_ELEMENT:
+ return TraceDebuggerPlugin.isJapanese() ? "�z��v�f�Q��" : convertFromSnakeToPascal(msg);
+ case ARRAY_CREATE:
+ return TraceDebuggerPlugin.isJapanese() ? "�z����" : convertFromSnakeToPascal(msg);
+ default:
+ return "";
+ }
+ }
+
+ private String convertFromSnakeToPascal(String str) {
+ // note: �X�l�[�N�P�[�X���p�X�J���P�[�X(�������P��Ԃ��ŋ��)�ɕς���
+ String base = str.toLowerCase().replace("_", " ");
+ StringBuilder sb = new StringBuilder();
+ for (int index = -1;;) {
+ sb.append(base.substring(index + 1, index + 2).toUpperCase());
+ int nextIndex = base.indexOf(" ", index + 1);
+ if (nextIndex == -1) {
+ sb.append(base.substring(index + 2));
+ break;
+ } else {
+ sb.append(base.substring(index + 2, nextIndex + 1));
+ index = nextIndex;
+ }
+ }
+ return sb.toString();
+ }
+
@Override
public Image getColumnImage(Object element, int columnIndex) {
-// if (element instanceof TreeNode) {
-// Object value = ((TreeNode)element).getValue();
-// if (value instanceof String && columnIndex == 0) {
-// return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
-// }
-// }
return null;
}
diff --git a/src/org/ntlab/traceDebugger/DeltaMarkerView.java b/src/org/ntlab/traceDebugger/DeltaMarkerView.java
index 55311ce..04cd525 100644
--- a/src/org/ntlab/traceDebugger/DeltaMarkerView.java
+++ b/src/org/ntlab/traceDebugger/DeltaMarkerView.java
@@ -46,7 +46,8 @@
tree.setLinesVisible(true);
// �e�[�u���̃J�������쐬
- String[] tableColumnTexts = {"Description", "Object ID", "Type", "Alias", "Source", "Line"};
+ String[] tableColumnTexts = TraceDebuggerPlugin.isJapanese() ? new String[]{"���s���_", "id", "�^", "�o���`��", "�\�[�X", "�s"}
+ : new String[]{"ExecutionPoint", "id", "Type", "Occurrence", "Source", "Line"};
int[] tableColumnWidth = {120, 100, 120, 120, 100, 80};
TreeColumn[] tableColumns = new TreeColumn[tableColumnTexts.length];
for (int i = 0; i < tableColumns.length; i++) {
@@ -79,6 +80,11 @@
TraceDebuggerPlugin.setActiveView(ID, this);
}
+ @Override
+ public String getTitle() {
+ return TraceDebuggerPlugin.isJapanese() ? "�I�u�W�F�N�g�̐ڋ߉ߒ�" : "Process to Relate";
+ }
+
private void createActions() {
// TODO Auto-generated method stub
}
@@ -102,7 +108,6 @@
if (!doNotUpdateCallTreeView) {
CallTreeView callTreeView = (CallTreeView)TraceDebuggerPlugin.getActiveView(CallTreeView.ID);
callTreeView.update(deltaMarkerManager);
-// updateOtherViewsByMarker(selectionMarker);
}
doNotUpdateCallTreeView = false;
viewer.getControl().setFocus();
@@ -201,35 +206,5 @@
callTreeView.highlight(bottomME);
TracePointsView tracePointsView = (TracePointsView)TraceDebuggerPlugin.getActiveView(TracePointsView.ID);
tracePointsView.addTracePoint(creationPoint);
- }
-
-// public void extractDelta(Variable variable, boolean isContainerToComponent) {
-// AbstractAnalyzer analyzer = TraceDebuggerPlugin.getAnalyzer();
-// if (analyzer instanceof DeltaExtractionAnalyzer) {
-// DeltaExtractionAnalyzer deltaAnalyzer = (DeltaExtractionAnalyzer)analyzer;
-// if (isContainerToComponent) {
-// deltaMarkerManager = deltaAnalyzer.extractDeltaForContainerToComponent(variable);
-// } else {
-// deltaMarkerManager = deltaAnalyzer.extractDeltaForThisToAnother(variable);
-// }
-// deltaMarkerManager.createMarkerAndOpenJavaFileForAll(); // �f���^���o�̌��ʂ����Ƀ\�[�X�R�[�h�]�\������
-// update();
-//
-// TracePoint coordinatorPoint = getCoordinatorPoint();
-// TracePoint creationPoint = getCreationPoint();
-// MethodExecution coordinatorME = coordinatorPoint.getMethodExecution();
-// MethodExecution bottomME = creationPoint.getMethodExecution();
-// DebuggingController controller = DebuggingController.getInstance();
-// controller.jumpToTheTracePoint(creationPoint, false);
-// VariableViewRelatedDelta variableView = (VariableViewRelatedDelta)(TraceDebuggerPlugin.getActiveView(VariableViewRelatedDelta.ID));
-// variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkerManager.getMarkers());
-// CallStackView callStackView = (CallStackView)TraceDebuggerPlugin.getActiveView(CallStackView.ID);
-// callStackView.highlight(coordinatorME);
-// CallTreeView callTreeView = (CallTreeView)TraceDebuggerPlugin.getActiveView(CallTreeView.ID);
-// callTreeView.update(deltaMarkerManager);
-// callTreeView.highlight(bottomME);
-// TracePointsView tracePointsView = (TracePointsView)TraceDebuggerPlugin.getActiveView(TracePointsView.ID);
-// tracePointsView.addTracePoint(creationPoint);
-// }
-// }
+ }
}
diff --git a/src/org/ntlab/traceDebugger/JavaElementFinder.java b/src/org/ntlab/traceDebugger/JavaElementFinder.java
index ad01b55..5f087c4 100644
--- a/src/org/ntlab/traceDebugger/JavaElementFinder.java
+++ b/src/org/ntlab/traceDebugger/JavaElementFinder.java
@@ -178,6 +178,7 @@
private static boolean checkMethodSignature(IType type, IMethod method, String methodSignature) {
String fqcn = type.getFullyQualifiedName();
+ fqcn = fqcn.replace("$", ".");
try {
StringBuilder jdtMethodSignature = new StringBuilder();
jdtMethodSignature.append((method.isConstructor()) ? (fqcn + "(") : (fqcn + "." + method.getElementName() + "("));
diff --git a/src/org/ntlab/traceDebugger/TraceBreakPoints.java b/src/org/ntlab/traceDebugger/TraceBreakPoints.java
index 6ce271a..0981f6f 100644
--- a/src/org/ntlab/traceDebugger/TraceBreakPoints.java
+++ b/src/org/ntlab/traceDebugger/TraceBreakPoints.java
@@ -104,6 +104,8 @@
} else {
signature = type + "." + methodName;
}
+ signature = signature.replace("$", "."); // �����N���X�� $ �̓��\�b�h�V�O�j�`����ł̓h�b�g�ɂȂ�
+ signature = signature.replaceAll("<.*>", ""); // �e�����̃W�F�l���N�X�̏��̓g���[�X��ɋL�^����Ă��Ȃ��̂ň�v�����邽�߂ɏ���
addTraceBreakPoint(signature, lineNo, available);
} catch (CoreException e) {
e.printStackTrace();
diff --git a/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java b/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java
index d14f836..4c1399c 100644
--- a/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java
+++ b/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java
@@ -34,6 +34,8 @@
// The shared instance
private static TraceDebuggerPlugin plugin;
+ private static boolean isJapanese = true;
+
/**
* The constructor
*/
@@ -113,6 +115,13 @@
@Override
protected void initializeImageRegistry(ImageRegistry reg) {
+ // note: �u���[�N�|�C���g�r���[�Ɋւ���A�C�R��
+ reg.put(BreakPointView.DEBUG_ELCL, getImageDescriptor("/icons/debug/debug_elcl.png"));
+ reg.put(BreakPointView.DEBUG_DLCL, getImageDescriptor("/icons/debug/debug_dlcl.png"));
+ reg.put(BreakPointView.IMPORT_BREAKPOINT_ELCL, getImageDescriptor("/icons/debug/import_brkpts_elcl.png"));
+ reg.put(BreakPointView.IMPORT_BREAKPOINT_DLCL, getImageDescriptor("/icons/debug/import_brkpts_dlcl.png"));
+ reg.put(BreakPointViewRelatedDelta.STEP_NEXT_ELCL, getImageDescriptor("/icons/debug/stepnext_elcl.png"));
+ reg.put(BreakPointViewRelatedDelta.STEP_NEXT_DLCL, getImageDescriptor("/icons/debug/stepnext_dlcl.png"));
reg.put(BreakPointViewRelatedDelta.STEP_BACK_INTO_ELCL, getImageDescriptor("/icons/debug/stepbackinto_elcl.png"));
reg.put(BreakPointViewRelatedDelta.STEP_BACK_INTO_DLCL, getImageDescriptor("/icons/debug/stepbackinto_dlcl.png"));
reg.put(BreakPointViewRelatedDelta.STEP_BACK_OVER_ELCL, getImageDescriptor("/icons/debug/stepbackover_elcl.png"));
@@ -120,10 +129,20 @@
reg.put(BreakPointViewRelatedDelta.STEP_BACK_RETURN_ELCL, getImageDescriptor("/icons/debug/stepbackreturn_elcl.png"));
reg.put(BreakPointViewRelatedDelta.STEP_BACK_RETURN_DLCL, getImageDescriptor("/icons/debug/stepbackreturn_dlcl.png"));
reg.put(BreakPointViewRelatedDelta.BACK_RESUME_ELCL, getImageDescriptor("/icons/debug/backresume_elcl.png"));
- reg.put(BreakPointViewRelatedDelta.BACK_RESUME_DLCL, getImageDescriptor("/icons/debug/backresume_dlcl.png"));
+ reg.put(BreakPointViewRelatedDelta.BACK_RESUME_DLCL, getImageDescriptor("/icons/debug/backresume_dlcl.png"));
+
+ // note: �ϐ��r���[�Ɋւ���A�C�R��
+ reg.put(VariableLabelProvider.SPECIAL_VARIABLE, getImageDescriptor("/icons/variable/specialvariable.png"));
+ reg.put(VariableLabelProvider.THIS_VARIABLE, getImageDescriptor("/icons/variable/thisvariable.png"));
+ reg.put(VariableLabelProvider.FIELD_VARIABLE, getImageDescriptor("/icons/variable/fieldvariable.png"));
+ reg.put(VariableLabelProvider.ARG_VARIABLE, getImageDescriptor("/icons/variable/localvariable.png"));
}
public static ImageDescriptor getImageDescriptor(String path) {
return imageDescriptorFromPlugin(PLUGIN_ID, path);
}
+
+ public static boolean isJapanese() {
+ return isJapanese;
+ }
}
diff --git a/src/org/ntlab/traceDebugger/TracePointsLabelProvider.java b/src/org/ntlab/traceDebugger/TracePointsLabelProvider.java
index 17d420a..278b1fb 100644
--- a/src/org/ntlab/traceDebugger/TracePointsLabelProvider.java
+++ b/src/org/ntlab/traceDebugger/TracePointsLabelProvider.java
@@ -27,13 +27,14 @@
@Override
public Image getColumnImage(Object element, int columnIndex) {
- return getImage(element);
+// return getImage(element);
+ return null;
}
- @Override
- public Image getImage(Object element) {
- return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
- }
+// @Override
+// public Image getImage(Object element) {
+// return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
+// }
private String getReadableSignature(MethodExecution methodExecution) {
String signature = methodExecution.getSignature();
diff --git a/src/org/ntlab/traceDebugger/TracePointsView.java b/src/org/ntlab/traceDebugger/TracePointsView.java
index 0bb3b5c..63f43d8 100644
--- a/src/org/ntlab/traceDebugger/TracePointsView.java
+++ b/src/org/ntlab/traceDebugger/TracePointsView.java
@@ -1,8 +1,5 @@
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;
@@ -26,9 +23,6 @@
import org.eclipse.ui.part.ViewPart;
import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution;
import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint;
-import org.ntlab.traceDebugger.analyzerProvider.AbstractAnalyzer;
-import org.ntlab.traceDebugger.analyzerProvider.DeltaExtractionAnalyzer;
-import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager;
public class TracePointsView extends ViewPart {
private TableViewer viewer;
@@ -50,13 +44,14 @@
// TODO Auto-generated method stub
System.out.println("TracePointsView#createPartControl(Composite)���Ăꂽ��!");
shell = parent.getShell();
- viewer = new TableViewer(parent, SWT.FULL_SELECTION);
+ viewer = new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION);
Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
// �e�[�u���̃J�������쐬
- String[] tableColumnTexts = {"Line", "Signature"};
+ String[] tableColumnTexts = TraceDebuggerPlugin.isJapanese() ? new String[]{"�s", "���\�b�h"}
+ : new String[]{"Line", "Signature"};
int[] tableColumnWidth = {80, 1000};
TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length];
for (int i = 0; i < tableColumns.length; i++) {
@@ -99,6 +94,11 @@
createPopupMenu();
TraceDebuggerPlugin.setActiveView(ID, this);
}
+
+ @Override
+ public String getTitle() {
+ return TraceDebuggerPlugin.isJapanese() ? "���s���_�̓o�^" : "MarkedExecutionPoints";
+ }
@Override
public void setFocus() {
@@ -107,7 +107,10 @@
viewer.getControl().setFocus();
}
- private void createActions() {
+ private void createActions() {
+ boolean isJapanese = TraceDebuggerPlugin.isJapanese();
+ String msg;
+
addAction = new Action() {
@Override
public void run() {
@@ -116,8 +119,9 @@
addTracePoint(currentTp);
}
};
- addAction.setText("Add");
- addAction.setToolTipText("Add");
+ msg = (isJapanese) ? "�lj�" : "Add";
+ addAction.setText(msg);
+ addAction.setToolTipText(msg);
removeAction = new Action() {
@Override
@@ -128,8 +132,9 @@
}
}
};
- removeAction.setText("Remove");
- removeAction.setToolTipText("Remove");
+ msg = (isJapanese) ? "�폜" : "Remove";
+ removeAction.setText(msg);
+ removeAction.setToolTipText(msg);
jumpAction = new Action() {
@Override
@@ -139,8 +144,9 @@
}
}
};
- jumpAction.setText("Jump");
- jumpAction.setToolTipText("Jump");
+ msg = (isJapanese) ? "�W�����v" : "Jump";
+ jumpAction.setText(msg);
+ jumpAction.setToolTipText(msg);
}
private void createToolBar() {
diff --git a/src/org/ntlab/traceDebugger/Variable.java b/src/org/ntlab/traceDebugger/Variable.java
index 515a915..995cc31 100644
--- a/src/org/ntlab/traceDebugger/Variable.java
+++ b/src/org/ntlab/traceDebugger/Variable.java
@@ -36,16 +36,16 @@
private boolean alreadyCreatedGrandChildHierarchy = false;
private Map additionalAttributes = new HashMap<>();
public static final String NULL_VALUE = "null";
- public static final String RETURN_VARIABLE_NAME = "return";
- public static final String ARG_VARIABLE_NAME = "arg";
- public static final String RECEIVER_VARIABLE_NAME = "receiver";
- public static final String VALUE_VARIABLE_NAME = "value";
- public static final String CONTAINER_VARIABLE_NAME = "container";
+ public static final String RETURN_VARIABLE_NAME = TraceDebuggerPlugin.isJapanese() ? "�߂�l" : "return";
+ public static final String ARG_VARIABLE_NAME = TraceDebuggerPlugin.isJapanese() ? "����" : "arg";
+ public static final String RECEIVER_VARIABLE_NAME = TraceDebuggerPlugin.isJapanese() ? "���V�[�o" : "receiver";
+ public static final String VALUE_VARIABLE_NAME = TraceDebuggerPlugin.isJapanese() ? "�R���|�[�l���g" : "value";
+ public static final String CONTAINER_VARIABLE_NAME = TraceDebuggerPlugin.isJapanese() ? "�R���e�i" : "container";
public enum VariableType {
USE_VALUE, USE_CONTAINER, USE_RECEIVER, USE_RETURN,
DEF_VALUE, DEF_CONTAINER, DEF_RECEIVER, DEF_ARG,
- PARAMETER;
+ THIS, PARAMETER;
public boolean isContainerSide() {
return this.equals(USE_CONTAINER) || this.equals(DEF_CONTAINER)
|| this.equals(USE_RECEIVER) || this.equals(DEF_RECEIVER);
@@ -86,12 +86,12 @@
this.lastUpdatePoint = lastUpdatePoint;
this.before = before;
this.isReturned = isReturned;
+ this.variableType = variableType;
this.deepHierarchy = checkDeepHierarchy();
this.alreadyCreatedChildHierarchy = false;
this.alreadyCreatedGrandChildHierarchy = false;
this.children.clear();
this.additionalAttributes.clear();
- this.variableType = variableType;
}
public void update(String valueClassName, String valueId, TracePoint lastUpdatePoint, boolean isReturned) {
@@ -152,6 +152,36 @@
return variableName + ": " + valueClassName + "(" + "id = " + valueId + ")";
}
+// /**
+// * ���̃t�B�[���h���Q�ƌ^�I�u�W�F�N�g���z�肵�Ĕ��茋�ʂ�Ԃ�.
+// * (�ϐ��r���[�ɕ\��������f�[�^���ċA�I�ɋ��߂邽�߂�, �Ăяo�����Ŏ��ɂǂ̃��\�b�h���ĂԂ��f����̂ɗ��p)
+// *
+// * @param objData
+// * @return FIELD: �Q�ƌ^�I�u�W�F�N�g�̏ꍇ, ARRAY: �z��̏ꍇ, NONE: ����ȊO�̏ꍇ
+// */
+// private DeepHierarchy checkDeepHierarchy() {
+// // note: �t�B�[���h��ID��Type���Ȃ��ꍇ��AType(=ActualType)��"---"�̏ꍇ�͉������Ȃ�
+// if (this.getValueId() == null || this.getValueId().isEmpty()
+// || this.getValueClassName() == null || this.getValueClassName().isEmpty()) {
+// return DeepHierarchy.NONE;
+// }
+// final String NULL_ACTUAL_TYPE = "---"; // �t�B�[���h�ɑ��Ė����I��null����ꂽ�ꍇ��ActualType�̎擾������
+// if (this.getValueClassName().equals(NULL_ACTUAL_TYPE)) return DeepHierarchy.NONE;
+//
+// final String ARRAY_SIGNATURE_HEAD = "["; // �z��̃V�O�l�`���̐擪�́A�z��̎��������� [ ���A�Ȃ�
+// if (this.getValueClassName().startsWith(ARRAY_SIGNATURE_HEAD)) {
+// // note: �t�B�[���h��Type���z��^(�@[ �Ŏn�܂�@)�ꍇ (���̔z���e�v�f�ɂ��Ă���Ȃ�f�[�^�擾�������Ăяo��)
+// return DeepHierarchy.ARRAY;
+// } else {
+// String[] primitives = {"byte", "short", "int", "long", "float", "double", "char", "boolean"};
+// if (!Arrays.asList(primitives).contains(this.getValueClassName())) {
+// // note: �t�B�[���h��Type���Q�ƌ^(=�I�u�W�F�N�g)�̏ꍇ (���̃I�u�W�F�N�g�������Ă���t�B�[���h�ɂ��Ă���Ȃ�f�[�^�擾�������Ăяo��)
+// return DeepHierarchy.FIELD;
+// }
+// }
+// return DeepHierarchy.NONE;
+// }
+
/**
* ���̃t�B�[���h���Q�ƌ^�I�u�W�F�N�g���z�肵�Ĕ��茋�ʂ�Ԃ�.
* (�ϐ��r���[�ɕ\��������f�[�^���ċA�I�ɋ��߂邽�߂�, �Ăяo�����Ŏ��ɂǂ̃��\�b�h���ĂԂ��f����̂ɗ��p)
@@ -160,22 +190,24 @@
* @return FIELD: �Q�ƌ^�I�u�W�F�N�g�̏ꍇ, ARRAY: �z��̏ꍇ, NONE: ����ȊO�̏ꍇ
*/
private DeepHierarchy checkDeepHierarchy() {
- // �t�B�[���h��ID��Type���Ȃ��ꍇ��AType(=ActualType)��"---"�̏ꍇ�͉������Ȃ�
- if (this.getValueId() == null || this.getValueId().isEmpty()
- || this.getValueClassName() == null || this.getValueClassName().isEmpty()) {
+ // note: �t�B�[���h��ID��Type���Ȃ��ꍇ��AType(=ActualType)��"---"�̏ꍇ�͉������Ȃ�
+ String id = (variableType.isContainerSide()) ? containerId : valueId;
+ String className = (variableType.isContainerSide()) ? containerClassName : valueClassName;
+ if (id == null || id.isEmpty() || className == null || className.isEmpty()) {
return DeepHierarchy.NONE;
- }
+ }
+
final String NULL_ACTUAL_TYPE = "---"; // �t�B�[���h�ɑ��Ė����I��null����ꂽ�ꍇ��ActualType�̎擾������
if (this.getValueClassName().equals(NULL_ACTUAL_TYPE)) return DeepHierarchy.NONE;
final String ARRAY_SIGNATURE_HEAD = "["; // �z��̃V�O�l�`���̐擪�́A�z��̎��������� [ ���A�Ȃ�
if (this.getValueClassName().startsWith(ARRAY_SIGNATURE_HEAD)) {
- // �t�B�[���h��Type���z��^(�@[ �Ŏn�܂�@)�ꍇ (���̔z���e�v�f�ɂ��Ă���Ȃ�f�[�^�擾�������Ăяo��)
+ // note: �t�B�[���h��Type���z��^(�@[ �Ŏn�܂�@)�ꍇ (���̔z���e�v�f�ɂ��Ă���Ȃ�f�[�^�擾�������Ăяo��)
return DeepHierarchy.ARRAY;
} else {
String[] primitives = {"byte", "short", "int", "long", "float", "double", "char", "boolean"};
if (!Arrays.asList(primitives).contains(this.getValueClassName())) {
- // �t�B�[���h��Type���Q�ƌ^(=�I�u�W�F�N�g)�̏ꍇ (���̃I�u�W�F�N�g�������Ă���t�B�[���h�ɂ��Ă���Ȃ�f�[�^�擾�������Ăяo��)
+ // note: �t�B�[���h��Type���Q�ƌ^(=�I�u�W�F�N�g)�̏ꍇ (���̃I�u�W�F�N�g�������Ă���t�B�[���h�ɂ��Ă���Ȃ�f�[�^�擾�������Ăяo��)
return DeepHierarchy.FIELD;
}
}
@@ -270,15 +302,19 @@
// FieldUpdate fieldUpdate = trace.getFieldUpdate(id, fullyQualifiedFieldName, before, isReturned);
// TracePoint updateTracePoint = trace.getFieldUpdateTracePoint(valueId, fullyQualifiedFieldName, before, isReturned);
- TracePoint updateTracePoint = VariableUpdatePointFinder.getInstance().getPoint(valueId, fullyQualifiedFieldName, before);
+ String nextContainerId = (variableType.isContainerSide()) ? containerId : valueId;
+ String nextClassName = (variableType.isContainerSide()) ? containerClassName : valueClassName;
+// TracePoint updateTracePoint = VariableUpdatePointFinder.getInstance().getPoint(valueId, fullyQualifiedFieldName, before);
+ TracePoint updateTracePoint = VariableUpdatePointFinder.getInstance().getPoint(nextContainerId, fullyQualifiedFieldName, before);
// if (updateTracePoint == null) continue;
if (updateTracePoint != null) {
FieldUpdate fieldUpdate = (FieldUpdate)updateTracePoint.getStatement();
// �t�B�[���h��ID��Type���擾(String)
- String fieldObjId = (fieldUpdate != null) ? fieldUpdate.getValueObjId() : "---";
- String fieldType = (fieldUpdate != null) ? fieldUpdate.getValueClassName() : NULL_VALUE;
- Variable fieldData = new Variable(fieldName, fullyQualifiedFieldName, valueClassName, valueId, fieldType, fieldObjId, updateTracePoint, before, isReturned, VariableType.USE_VALUE);
+ String nextValueId = (fieldUpdate != null) ? fieldUpdate.getValueObjId() : "---";
+ String nextValueClassName = (fieldUpdate != null) ? fieldUpdate.getValueClassName() : NULL_VALUE;
+// Variable fieldData = new Variable(fieldName, fullyQualifiedFieldName, valueClassName, valueId, fieldType, fieldObjId, updateTracePoint, before, isReturned, VariableType.USE_VALUE);
+ Variable fieldData = new Variable(fieldName, fullyQualifiedFieldName, nextClassName, nextContainerId, nextValueClassName, nextValueId, updateTracePoint, before, isReturned, VariableType.USE_VALUE);
this.addChild(fieldData);
} else {
Variable fieldData = new Variable(fieldName, fullyQualifiedFieldName, valueClassName, valueId, NULL_VALUE, "---", updateTracePoint, before, isReturned, VariableType.USE_VALUE);
diff --git a/src/org/ntlab/traceDebugger/VariableLabelProvider.java b/src/org/ntlab/traceDebugger/VariableLabelProvider.java
index 058d92b..e9aecfd 100644
--- a/src/org/ntlab/traceDebugger/VariableLabelProvider.java
+++ b/src/org/ntlab/traceDebugger/VariableLabelProvider.java
@@ -1,32 +1,46 @@
package org.ntlab.traceDebugger;
+import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeNode;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
+import org.ntlab.traceDebugger.Variable.VariableType;
import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager;
public class VariableLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider {
+ public static final String SPECIAL_VARIABLE = "SpecialVariable";
+ public static final String THIS_VARIABLE = "ThisVariable";
+ public static final String FIELD_VARIABLE = "FieldVariable";
+ public static final String ARG_VARIABLE = "ArgVariable";
+ private Image specialVariableImage = TraceDebuggerPlugin.getDefault().getImageRegistry().getDescriptor(SPECIAL_VARIABLE).createImage();
+ private Image thisVariableImage = TraceDebuggerPlugin.getDefault().getImageRegistry().getDescriptor(THIS_VARIABLE).createImage();
+ private Image fieldVariableImage = TraceDebuggerPlugin.getDefault().getImageRegistry().getDescriptor(FIELD_VARIABLE).createImage();
+ private Image argVariableImage = TraceDebuggerPlugin.getDefault().getImageRegistry().getDescriptor(ARG_VARIABLE).createImage();
+
@Override
public String getColumnText(Object element, int columnIndex) {
if (element instanceof TreeNode) {
Object value = ((TreeNode)element).getValue();
if (value instanceof String) {
String name = (String)value;
+ String constructorMsg = TraceDebuggerPlugin.isJapanese() ? "�R���X�g���N�^" : "Constructor";
switch (columnIndex) {
- case 0:
- if (name.contains("Constructor")) {
- return name.substring(0, name.indexOf("Constructor"));
+ case 0: {
+ if (name.contains(constructorMsg)) {
+ return name.substring(0, name.indexOf(constructorMsg));
}
return name.substring(0, name.indexOf(":"));
+ }
case 1:
String valueName = name.substring(name.indexOf(":") + 1);
valueName = valueName.substring(valueName.lastIndexOf(" ") + 1);
- boolean isConstructor = name.contains("Constructor");
+ boolean isConstructor = name.contains(constructorMsg);
return getReadableName(valueName, isConstructor);
}
}
@@ -65,12 +79,27 @@
@Override
public Image getColumnImage(Object element, int columnIndex) {
- return getImage(element);
- }
-
- @Override
- public Image getImage(Object element) {
- return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
+ if (columnIndex == 0) {
+ if (element instanceof TreeNode) {
+ Object value = ((TreeNode)element).getValue();
+ if (value instanceof String) {
+ return specialVariableImage;
+ } else if (value instanceof Variable) {
+ Variable variable = (Variable)value;
+ VariableType variableType = variable.getVariableType();
+ if (variableType == VariableType.THIS) {
+ return thisVariableImage;
+ } else if (variableType == VariableType.PARAMETER){
+ return argVariableImage;
+ } else if (variableType.isContainerSide()) {
+ return thisVariableImage;
+ } else {
+ return fieldVariableImage;
+ }
+ }
+ }
+ }
+ return null;
}
@Override
diff --git a/src/org/ntlab/traceDebugger/VariableView.java b/src/org/ntlab/traceDebugger/VariableView.java
index 946d429..7b2404c 100644
--- a/src/org/ntlab/traceDebugger/VariableView.java
+++ b/src/org/ntlab/traceDebugger/VariableView.java
@@ -38,14 +38,14 @@
tree.setHeaderVisible(true);
tree.setLinesVisible(true);
- String[] treeColumnTexts = {"Name", "Value"};
- int[] treeColumnWidth = {100, 200};
+ String[] treeColumnTexts = (TraceDebuggerPlugin.isJapanese()) ? new String[]{"���O", "�l"} : new String[]{"Name", "Value"};
+ int[] treeColumnWidth = {200, 300};
TreeColumn[] treeColumns = new TreeColumn[treeColumnTexts.length];
for (int i = 0; i < treeColumns.length; i++) {
treeColumns[i] = new TreeColumn(tree, SWT.NULL);
treeColumns[i].setText(treeColumnTexts[i]);
treeColumns[i].setWidth(treeColumnWidth[i]);
- }
+ }
viewer.setContentProvider(new MyTreeNodeContentProvider());
viewer.setLabelProvider(new VariableLabelProvider());
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
@@ -99,6 +99,11 @@
}
@Override
+ public String getTitle() {
+ return TraceDebuggerPlugin.isJapanese() ? "�ϐ�" : "Variables";
+ }
+
+ @Override
public void setFocus() {
// TODO Auto-generated method stub
TraceDebuggerPlugin.setActiveView(ID, this);
diff --git a/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java b/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java
index 7a92308..4303f63 100644
--- a/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java
+++ b/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java
@@ -59,34 +59,13 @@
super.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;
+ TracePoint jumpPoint = findJumpPoint(selectedVariable, before);
+ if (jumpPoint == null) return;
DebuggingController controller = DebuggingController.getInstance();
- controller.jumpToTheTracePoint(tp, false);
+ controller.jumpToTheTracePoint(jumpPoint, false);
}
};
- jumpAction.setText("Jump to Definition");
- jumpAction.setToolTipText("Jump to Definition");
deltaActionForContainerToComponent = new Action() {
@Override
@@ -95,8 +74,6 @@
newDeltaMarkerView.extractDeltaForContainerToComponent(selectedVariable);
}
};
- deltaActionForContainerToComponent.setText("Extract Delta");
- deltaActionForContainerToComponent.setToolTipText("Extract Delta");
deltaActionForThisToAnother = new Action() {
@Override
@@ -117,10 +94,56 @@
newDeltaMarkerView.extractDeltaForThisToAnother(thisId, thisClassName, anotherId, anotherClassName, before);
}
};
- deltaActionForThisToAnother.setText("Extract Delta");
- deltaActionForThisToAnother.setToolTipText("Extract Delta");
}
+ private TracePoint findJumpPoint(Variable variable, TracePoint before) {
+ VariableType variableType = selectedVariable.getVariableType();
+ if (variableType.equals(VariableType.USE_VALUE)) {
+ String containerId = selectedVariable.getContainerId();
+ String fieldName = selectedVariable.getFullyQualifiedVariableName();
+ return VariableUpdatePointFinder.getInstance().getPoint(containerId, fieldName, before);
+ } else if (variableType.equals(VariableType.USE_RETURN)) {
+ return findJumpPointWithReturnValue(variable, before);
+ }
+ return null;
+ }
+
+ private TracePoint findJumpPointWithReturnValue(Variable variable, TracePoint before) {
+ TracePoint tp = null;
+ String receiverId = selectedVariable.getContainerId();
+ String valueId = selectedVariable.getValueId();
+ String receiverClassName = selectedVariable.getContainerClassName();
+ VariableUpdatePointFinder finder = VariableUpdatePointFinder.getInstance();
+
+ // note: �C�e���[�^�̏ꍇ�͂��̃C�e���[�^�̎擾���̃R���N�V������ID�����ɂ���
+ if (receiverClassName.contains("Iterator") || receiverClassName.contains("Itr")
+ || receiverClassName.contains("Collections$UnmodifiableCollection$1")) {
+ tp = finder.getIteratorPoint(receiverId); // �C�e���[�^�擾���̃|�C���g���擾
+ if (tp == null) return null;
+ MethodInvocation mi = ((MethodInvocation)tp.getStatement());
+ receiverId = mi.getCalledMethodExecution().getThisObjId(); // �C�e���[�^�̎擾���̃R���N�V������ID
+ receiverClassName = mi.getCalledMethodExecution().getThisClassName(); // �C�e���[�^�̎擾���̃R���N�V�����̃N���X��
+ }
+
+ // note: �W�����v��ƂȂ� �I�u�W�F�N�g�̑���|�C���g�������̓R���N�V�����ւ̒lj��|�C���g���擾
+ tp = finder.getDefinitionInvocationPoint(receiverId, valueId, before);
+
+ // note: �W�����v��̃|�C���g��������Ȃ������ꍇ�ŁA���R���N�V�����ւ̒lj��|�C���g��T���Ă���ꍇ�̓R���N�V�����̏悹�������Œlj����Ă��Ȃ�����T���ɍs��
+ if (tp == null && receiverClassName.startsWith("java.util.")) {
+ String afterCollectionId = receiverId;
+ while (true) {
+ tp = finder.getTransferCollectionPoint(afterCollectionId, before);
+ if (tp == null) break; // �R���N�V�����̏悹������������ȏ�Ȃ��ꍇ
+ MethodInvocation mi = ((MethodInvocation)tp.getStatement());
+ String fromCollectionId = mi.getCalledMethodExecution().getArguments().get(0).getId();
+ tp = finder.getDefinitionInvocationPoint(fromCollectionId, valueId, before);
+ if (tp != null) break; // �R���N�V�����̏悹�������ŃI�u�W�F�N�g�̒lj������������ꍇ
+ afterCollectionId = fromCollectionId;
+ }
+ }
+ return tp;
+ }
+
@Override
protected void createPopupMenu() {
MenuManager menuMgr = new MenuManager("#PopupMenu");
@@ -132,15 +155,17 @@
VariableType variableType = selectedVariable.getVariableType();
if (variableType.equals(VariableType.USE_VALUE)) {
manager.add(jumpAction);
- jumpAction.setText("Jump to Definition");
- jumpAction.setToolTipText("Jump to Definition");
+ String msg = TraceDebuggerPlugin.isJapanese() ? "�l�̑�����_�ɔ��" : "Back to Value Stored Moment";
+ jumpAction.setText(msg);
+ jumpAction.setToolTipText(msg);
} 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");
+ String msg = TraceDebuggerPlugin.isJapanese() ? "�I�u�W�F�N�g�̒lj����_�ɔ��" : "Back to Object Added Moment";
+ jumpAction.setText(msg);
+ jumpAction.setToolTipText(msg);
} else if (variableType.isDef()) {
if (updateDeltaActionForContainerToComponentTexts(selectedVariable)) {
manager.add(deltaActionForContainerToComponent);
@@ -174,7 +199,8 @@
String containerClassName = selectedVariable.getContainerClassName();
if (containerId != null && containerClassName != null) {
containerClassName = containerClassName.substring(containerClassName.lastIndexOf(".") + 1);
- String textForContainerToComponent = String.format("Extract Delta [ %s (id = %s) -> %s (id = %s) ]", containerClassName, containerId, valueClassName, valueId);
+ String msg = TraceDebuggerPlugin.isJapanese() ? "�I�u�W�F�N�g�̐ڋ߉ߒ����o" : "Extract Process to Relate";
+ String textForContainerToComponent = String.format("%s [ %s (id = %s) -> %s (id = %s) ]", msg, containerClassName, containerId, valueClassName, valueId);
deltaActionForContainerToComponent.setText(textForContainerToComponent);
deltaActionForContainerToComponent.setToolTipText(textForContainerToComponent);
return true;
@@ -183,20 +209,6 @@
deltaActionForContainerToComponent.setText("");
deltaActionForContainerToComponent.setToolTipText("");
return false;
-
-// 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 (id = %s) -> %s (id = %s) ]", containerClassName, containerId, valueClassName, valueId);
-// deltaActionForContainerToComponent.setText(textForContainerToComponent);
-// deltaActionForContainerToComponent.setToolTipText(textForContainerToComponent);
-// return true;
-// } else {
-// deltaActionForContainerToComponent.setText("");
-// deltaActionForContainerToComponent.setToolTipText("");
-// return false;
-// }
}
private boolean updateDeltaActionForThisToAnotherTexts(Variable variable) {
@@ -215,8 +227,9 @@
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 (id = %s) -> %s (id = %s) ]", thisClassName, thisId, anotherClassName, anotherId);
+ thisClassName = thisClassName.substring(thisClassName.lastIndexOf(".") + 1);
+ String msg = TraceDebuggerPlugin.isJapanese() ? "�I�u�W�F�N�g�̐ڋ߉ߒ����o" : "Extract Process to Relate";
+ String textForThisToAnother = String.format("%s [ %s (id = %s) -> %s (id = %s) ]", msg, thisClassName, thisId, anotherClassName, anotherId);
deltaActionForThisToAnother.setText(textForThisToAnother);
deltaActionForThisToAnother.setToolTipText(textForThisToAnother);
return true;
diff --git a/src/org/ntlab/traceDebugger/Variables.java b/src/org/ntlab/traceDebugger/Variables.java
index e9ae236..13cd031 100644
--- a/src/org/ntlab/traceDebugger/Variables.java
+++ b/src/org/ntlab/traceDebugger/Variables.java
@@ -75,7 +75,7 @@
String thisObjId = methodExecution.getThisObjId();
String thisClassName = methodExecution.getThisClassName();
if (before == null) before = tp;
- Variable variable = new Variable("this", null, null, thisClassName, thisObjId, before, isReturned);
+ Variable variable = new Variable("this", null, null, thisClassName, thisObjId, before, isReturned, VariableType.THIS);
roots.add(variable);
variable.createNextHierarchyState();
}
@@ -225,7 +225,8 @@
Variable value = new Variable(Variable.VALUE_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, from, isReturned, VariableType.USE_VALUE);
specialVariablesOfUseSide.add(container);
specialVariablesOfUseSide.add(value);
- parentNodeNameOfUseSide = "after field get of:" + fa.getFieldName();
+ parentNodeNameOfUseSide = TraceDebuggerPlugin.isJapanese() ? "�t�B�[���h�Q�ƌ�:" : "after field get of:";
+ parentNodeNameOfUseSide += fa.getFieldName();
} else if (fromStatement instanceof MethodInvocation) {
MethodInvocation mi = (MethodInvocation)fromStatement;
MethodExecution calledME = mi.getCalledMethodExecution();
@@ -240,9 +241,11 @@
specialVariablesOfUseSide.add(receiver);
specialVariablesOfUseSide.add(returned);
if (calledME.isConstructor()) {
- parentNodeNameOfUseSide = "after invocation of Constructor:" + calledME.getSignature();
+ parentNodeNameOfUseSide = TraceDebuggerPlugin.isJapanese() ? "�Ăяo���� �R���X�g���N�^:" : "after invocation of Constructor:";
+ parentNodeNameOfUseSide += calledME.getSignature();
} else {
- parentNodeNameOfUseSide = "after invocation of:" + calledME.getSignature();
+ parentNodeNameOfUseSide = TraceDebuggerPlugin.isJapanese() ? "�Ăяo����:" : "after invocation of:";
+ parentNodeNameOfUseSide += calledME.getSignature();
}
}
}
@@ -261,7 +264,8 @@
Variable value = new Variable(Variable.VALUE_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, to, isReturned, VariableType.DEF_VALUE);
specialVariablesDefSide.add(container);
specialVariablesDefSide.add(value);
- parentNodeNameOfDefSide = "before field set of:" + fu.getFieldName();
+ parentNodeNameOfDefSide = TraceDebuggerPlugin.isJapanese() ? "�t�B�[���h����O:" : "before field set of:";
+ parentNodeNameOfDefSide += fu.getFieldName();
} else if (toStatement instanceof MethodInvocation) {
MethodInvocation mi = (MethodInvocation)toStatement;
MethodExecution calledME = mi.getCalledMethodExecution();
@@ -283,9 +287,11 @@
specialVariablesDefSide.add(arg);
}
if (calledME.isConstructor()) {
- parentNodeNameOfDefSide = "before invocation of Constructor:" + calledME.getSignature();
+ parentNodeNameOfDefSide = TraceDebuggerPlugin.isJapanese() ? "�Ăяo���O �R���X�g���N�^:" : "before invocation of Constructor:";
+ parentNodeNameOfDefSide += calledME.getSignature();
} else {
- parentNodeNameOfDefSide = "before invocation of:" + calledME.getSignature();
+ parentNodeNameOfDefSide = TraceDebuggerPlugin.isJapanese() ? "�Ăяo���O:" : "before invocation of:";
+ parentNodeNameOfDefSide += calledME.getSignature();
}
}
}
diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java
index 532ee52..0e593ad 100644
--- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java
+++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java
@@ -38,6 +38,7 @@
import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint;
import org.ntlab.traceDebugger.JavaEditorOperator;
import org.ntlab.traceDebugger.JavaElementFinder;
+import org.ntlab.traceDebugger.TraceDebuggerPlugin;
public class DeltaMarkerManager {
private Map> markerIdToMarkers = new HashMap<>();
@@ -73,7 +74,7 @@
public TreeNode[] getMarkerTreeNodes() {
TreeNode[] roots = new TreeNode[] {
new TreeNode(""),
- new TreeNode("Related Aliases"),
+ new TreeNode(TraceDebuggerPlugin.isJapanese() ? "�ڋ߉ߒ�" : "Approach"),
new TreeNode("")
};
List markers;
@@ -147,13 +148,15 @@
}
public void createMarkerAndOpenJavaFileForAll() {
- markAndOpenJavaFileForCoordinator(coordinator, "Coordinator", DeltaMarkerManager.COORDINATOR_DELTA_MARKER);
+ String msg = TraceDebuggerPlugin.isJapanese() ? "�J�n���_" : "InitialPoint";
+ markAndOpenJavaFileForCoordinator(coordinator, msg, DeltaMarkerManager.COORDINATOR_DELTA_MARKER);
List dstSideAliases = new ArrayList<>(aliasCollector.getDstSideRelatedAliases());
List srcSideAliases = new ArrayList<>(aliasCollector.getSrcSideRelatedAliases());
List> relatedAliasesList = new ArrayList<>();
relatedAliasesList.add(dstSideAliases);
relatedAliasesList.add(srcSideAliases);
- String[] messagesTemplates = {"GetterSide%03d", "SetterSide%03d"};
+ String[] messagesTemplates = TraceDebuggerPlugin.isJapanese() ? new String[]{"�Q�Ɛ摤%03d", "�Q�ƌ���%03d"}
+ : new String[]{"ReferredSide%03d", "ReferringSide%03d"};
String[] markerIDList = {DST_SIDE_DELTA_MARKER, SRC_SIDE_DELTA_MARKER};
for (int i = 0; i < relatedAliasesList.size(); i++) {
List relatedAliases = relatedAliasesList.get(i);
@@ -164,7 +167,8 @@
markAndOpenJavaFileForAlias(alias, message, markerIDList[i]);
}
}
- markAndOpenJavaFileForCreationPoint(relatedPoint, relatedPointReference, "RelatedPoint", DeltaMarkerManager.BOTTOM_DELTA_MARKER);
+ msg = TraceDebuggerPlugin.isJapanese() ? "�Q�Ǝ��_" : "RelatedPoint";
+ markAndOpenJavaFileForCreationPoint(relatedPoint, relatedPointReference, msg, DeltaMarkerManager.BOTTOM_DELTA_MARKER);
}
private void markAndOpenJavaFileForAlias(Alias alias, String message, String markerId) {
@@ -382,7 +386,7 @@
}
@Override
public boolean visit(org.eclipse.jdt.core.dom.SimpleName node) {
- // note: ���\�b�h�Ăяo���̃��V�[�o���t�B�[���h�̏ꍇ�̓t�B�[���h�A�N�Z�X�̃m�[�h���Ɨ��Ȃ�������ɂ���Œʂ�
+ // note: ���\�b�h�Ăяo���̃��V�[�o��this�̏ꍇ
int lineNo = cUnit.getLineNumber(node.getStartPosition());
if (lineNo != alias.getLineNo()) return true;
if (!(node.getParent() instanceof org.eclipse.jdt.core.dom.MethodInvocation)) return true;
@@ -392,7 +396,9 @@
if (!(name1.equals(name2))) return true;
int start = node.getStartPosition();
int end = start;
- if (source.startsWith("this.", start)) {
+ int index = node.toString().indexOf("this.");
+ if (index != -1) {
+ start += index;
end = start + "this".length();
}
attributes.put(IMarker.CHAR_START, start);
@@ -407,12 +413,15 @@
if (lineNo != alias.getLineNo()) return true;
String name1 = node.toString();
name1 = name1.substring(name1.indexOf("("));
+ name1 = name1.replaceAll("<.*>", "");
String name2 = fa.getFieldName();
name2 = name2.substring(name2.lastIndexOf(".") + 1);
if (!(name1.contains(name2))) return true;
int start = node.getStartPosition();
int end = start;
- if (source.startsWith("this.", start)) {
+ int index = node.toString().indexOf("this");
+ if (index != -1) {
+ start += index;
end = start + "this".length();
}
attributes.put(IMarker.CHAR_START, start);
@@ -424,13 +433,11 @@
public boolean visit(org.eclipse.jdt.core.dom.ReturnStatement node) {
int lineNo = cUnit.getLineNumber(node.getStartPosition());
if (lineNo != alias.getLineNo()) return true;
- Expression expression = node.getExpression();
int start = node.getStartPosition();
- if (expression != null) {
- start = node.getExpression().getStartPosition();
- }
int end = start;
- if (source.startsWith("this.", start)) {
+ int index = node.toString().indexOf("this");
+ if (index != -1) {
+ start += index;
end = start + "this".length();
}
attributes.put(IMarker.CHAR_START, start);
@@ -492,6 +499,7 @@
if (lineNo != alias.getLineNo()) return true;
String name1 = node.toString();
name1 = name1.substring("new ".length(), name1.indexOf("(") + 1);
+ name1 = name1.replaceAll("<.*>", "");
String name2 = calledMe.getCallerSideSignature();
name2 = name2.substring(0, name2.indexOf("(") + 1);
name2 = name2.substring(name2.lastIndexOf(".") + 1);
@@ -546,6 +554,7 @@
if (lineNo != alias.getLineNo()) return true;
String name1 = node.toString();
name1 = name1.substring("new ".length(), name1.indexOf("(") + 1);
+ name1 = name1.replaceAll("<.*>", "");
String name2 = calledMe.getCallerSideSignature();
name2 = name2.substring(name2.lastIndexOf(".") + 1, name2.indexOf("(") + 1);
if (!(name1.equals(name2))) return true;
@@ -571,6 +580,7 @@
if (lineNo != alias.getLineNo()) return true;
String name1 = node.toString();
name1 = name1.substring("new ".length(), name1.indexOf("(") + 1);
+ name1 = name1.replaceAll("<.*>", "");
String name2 = calledMe.getCallerSideSignature();
name2 = name2.substring(0, name2.indexOf("(") + 1);
name2 = name2.substring(name2.lastIndexOf(".") + 1);
@@ -653,6 +663,7 @@
if (lineNo != alias.getLineNo()) return true;
String name1 = node.toString();
name1 = name1.substring(name1.indexOf("("));
+ name1 = name1.replaceAll("<.*>", "");
String name2 = fa.getFieldName();
name2 = name2.substring(name2.lastIndexOf(".") + 1);
if (!(name1.contains(name2))) return true;
@@ -668,13 +679,10 @@
public boolean visit(org.eclipse.jdt.core.dom.ReturnStatement node) {
int lineNo = cUnit.getLineNumber(node.getStartPosition());
if (lineNo != alias.getLineNo()) return true;
- Expression expression = node.getExpression();
String fieldName = fa.getFieldName();
fieldName = fieldName.substring(fieldName.lastIndexOf(".") + 1);
int start = node.getStartPosition();
- if (expression != null) {
- start = expression.getStartPosition();
- }
+ start += node.toString().indexOf(fieldName);
int end = start + fieldName.length();
attributes.put(IMarker.CHAR_START, start);
attributes.put(IMarker.CHAR_END, end);
diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/VariableUpdatePointFinder.java b/src/org/ntlab/traceDebugger/analyzerProvider/VariableUpdatePointFinder.java
index d431199..614676f 100644
--- a/src/org/ntlab/traceDebugger/analyzerProvider/VariableUpdatePointFinder.java
+++ b/src/org/ntlab/traceDebugger/analyzerProvider/VariableUpdatePointFinder.java
@@ -22,6 +22,7 @@
private Map>> updatePoints = new HashMap<>(); // �R���e�iID�ƃt�B�[���h�����L�[�ɂ����ϐ��X�V�|�C���g
private Map>> definitionInvocationPoints = new HashMap<>(); // ���V�[�oID�ƈ���ID���L�[�ɂ����R���N�V�����ւ̒lj��|�C���g
private Map gettingIteratorPoints = new HashMap<>(); // �C�e���[�^��ID���L�[�ɂ�����擾�����|�C���g
+ private Map> changeOtherCollectionPoints = new HashMap<>(); // �悹������̃R���N�V����ID���L�[�ɂ�����悹�������n�_�̃|�C���g
public void setTrace(Trace trace) {
this.trace = trace;
@@ -33,6 +34,7 @@
}
private void init() {
+ reset();
registerUpdatePoints();
System.out.println(updatePoints);
System.out.println(definitionInvocationPoints);
@@ -54,12 +56,22 @@
} else if (statement instanceof MethodInvocation) {
MethodInvocation mi = (MethodInvocation)statement;
MethodExecution calledME = mi.getCalledMethodExecution();
- String methodName = calledME.getSignature();
+ String methodName = calledME.getSignature();
+ List args = calledME.getArguments();
if (methodName.contains(".add(") || methodName.contains(".addElement(")) {
registerdefinitionInvocationPoint(start, calledME);
} else if (methodName.contains(".iterator(") || methodName.contains("Iterator(")) {
registerIteratorPoint(start, calledME);
- }
+ } else if (args.size() == 1 && args.get(0).getActualType().startsWith("java.util.")) {
+ ObjectReference returnValue = calledME.getReturnValue();
+ if (calledME.getThisClassName().startsWith("java.util.") && !(calledME.getThisObjId().equals("0"))) {
+ String toCollectionId = calledME.getThisObjId();
+ registerChangeOtherCollectionPoint(start, toCollectionId);
+ } else if (returnValue != null && returnValue.getActualType().startsWith("java.util.")) {
+ String toCollectionId = returnValue.getId();
+ registerChangeOtherCollectionPoint(start, toCollectionId);
+ }
+ }
}
}
}
@@ -71,19 +83,6 @@
String fieldName = fu.getFieldName();
register(updatePoints, objectId, fieldName, tp);
}
-
-// private void registerdefinitionInvocationPoints(TracePoint tp, MethodInvocation mi) {
-// MethodExecution calledME = mi.getCalledMethodExecution();
-// String methodName = calledME.getSignature();
-// List args = calledME.getArguments();
-// if (methodName.contains(".add(") || methodName.contains(".addElement(")) {
-// if (args.size() == 1) {
-// String receiverId = calledME.getThisObjId();
-// String argId = args.get(0).getId();
-// register(definitionInvocationPoints, receiverId, argId, tp);
-// }
-// }
-// }
private void registerdefinitionInvocationPoint(TracePoint tp, MethodExecution calledME) {
List args = calledME.getArguments();
@@ -100,6 +99,15 @@
gettingIteratorPoints.put(iteratorId, tp.duplicate());
}
+ private void registerChangeOtherCollectionPoint(TracePoint tp, String toCollectionId) {
+ List tracePoints = changeOtherCollectionPoints.get(toCollectionId);
+ if (tracePoints == null) {
+ tracePoints = new ArrayList();
+ changeOtherCollectionPoints.put(toCollectionId, tracePoints);
+ }
+ tracePoints.add(tp.duplicate());
+ }
+
private void register(Map>> map, String key1, String key2, TracePoint tp) {
Map> innerMap = map.get(key1);
if (innerMap == null) {
@@ -141,6 +149,18 @@
return gettingIteratorPoints.get(iteratorId);
}
+ public TracePoint getTransferCollectionPoint(String toCollectionId, TracePoint before) {
+ List tracePoints = changeOtherCollectionPoints.get(toCollectionId);
+ long beforeTime = before.getStatement().getTimeStamp();
+ TracePoint tmp = null;
+ for (TracePoint tp : tracePoints) {
+ long time = tp.getStatement().getTimeStamp();
+ if (time >= beforeTime) return tmp;
+ tmp = tp;
+ }
+ return tmp;
+ }
+
private TracePoint getPoint(Map>> map, String key1, String key2, TracePoint before) {
Map> innerMap = map.get(key1);
if (innerMap == null) return null;
@@ -154,5 +174,12 @@
tmp = tp;
}
return tmp;
- }
+ }
+
+ private void reset() {
+ updatePoints.clear();
+ definitionInvocationPoints.clear();
+ gettingIteratorPoints.clear();
+ changeOtherCollectionPoints.clear();
+ }
}