diff --git a/org.ntlab.reverseDebugger/plugin.xml b/org.ntlab.reverseDebugger/plugin.xml
index 265e6ed..5011c18 100644
--- a/org.ntlab.reverseDebugger/plugin.xml
+++ b/org.ntlab.reverseDebugger/plugin.xml
@@ -23,9 +23,16 @@
+
+
diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/DebuggingControlAction.java b/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/DebuggingControlAction.java
index 46c7e28..d46ed53 100644
--- a/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/DebuggingControlAction.java
+++ b/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/DebuggingControlAction.java
@@ -32,6 +32,7 @@
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.PartInitException;
+import org.ntlab.reversedebugger.ObjectFlowAliases;
import com.sun.jdi.AbsentInformationException;
import com.sun.jdi.BooleanValue;
@@ -218,36 +219,44 @@
int aliasNo = scanner.nextInt();
methodName = "get";
Value startAlias = callInstanceMethod(vm, thread, methodName, (ObjectReference)startAliasList, vm.mirrorOf(aliasNo));
- methodName = "toString";
- Value str = callInstanceMethod(vm, thread, methodName, (ObjectReference)startAlias);
- printValue("", "", str, true);
- methodName = "getObjectFlow";
- Value aliasLists = callStaticMethod(vm, thread, packageName, className, methodName, startAlias);
- System.out.println();
- // �擾�������X�g�̒��g�����[�v�ʼnȂ���m�F��, ���łɓ��Y�\�[�X�t�@�C����Ώ�Eclipse�ŊJ�����Ă݂�
- methodName = "size";
- int aliasListsSize = ((IntegerValue)callInstanceMethod(vm, thread, methodName, (ObjectReference)aliasLists)).value();
- for (int i = 0; i < aliasListsSize; i++) {
- ArrayList aliasViewList = new ArrayList<>();
- System.out.println("---------------------------------------------");
- System.out.println("���X�g" + i);
- methodName = "get";
- Value aliasList = callInstanceMethod(vm, thread, methodName,(ObjectReference)aliasLists, vm.mirrorOf(i));
- methodName = "size";
- int aliasListSize = ((IntegerValue)callInstanceMethod(vm, thread, methodName, (ObjectReference)aliasList)).value();
- for (int j = 0; j < aliasListSize; j++) {
- methodName = "get";
- Value alias = callInstanceMethod(vm, thread, methodName, (ObjectReference)aliasList, vm.mirrorOf(j));
- methodName = "toString";
- Value str2 = callInstanceMethod(vm, thread, methodName, (ObjectReference)alias);
- printValue("", "", str2, true);
- methodName = "getMethodExecution";
- Value aliasMethodExecution = callInstanceMethod(vm ,thread, methodName, (ObjectReference)alias);
- openSrcFileOfMethodExecution(vm, thread, aliasMethodExecution);
- aliasViewList.add(new MethodCaller(vm, thread, (ObjectReference)alias));
- }
- }
+ // DebuggingControl������GUI�֘A�̃N���X�̕��ɖ�����V�[�h�G�C���A�X��n���ăI�u�W�F�N�g�t���[�����s���Ă݂�
+ // �ꎞ�I�Ȃ��̂�, �ŏI�I�ɂ͂����ł�鏈���ł͂Ȃ��Ȃ�̂ŕs�v�ɂȂ�͂�
+ ObjectFlowAliases.getInstance().getObjectFlow(new MethodCaller(vm, thread, (ObjectReference)startAlias));
+
+ // �ȉ��͈ꎞ�I�ɃR�����g�A�E�g���Ă���
+// methodName = "toString";
+// Value str = callInstanceMethod(vm, thread, methodName, (ObjectReference)startAlias);
+// printValue("", "", str, true);
+// methodName = "getObjectFlow";
+// Value aliasLists = callStaticMethod(vm, thread, packageName, className, methodName, startAlias);
+// System.out.println();
+//
+// // �擾�������X�g�̒��g�����[�v�ʼnȂ���m�F��, ���łɓ��Y�\�[�X�t�@�C����Ώ�Eclipse�ŊJ�����Ă݂�
+// methodName = "size";
+// int aliasListsSize = ((IntegerValue)callInstanceMethod(vm, thread, methodName, (ObjectReference)aliasLists)).value();
+// List> objectFlowAliasLists = new ArrayList<>();
+// for (int i = 0; i < aliasListsSize; i++) {
+// List objectFlowAliasList = new ArrayList<>();
+// objectFlowAliasLists.add(objectFlowAliasList);
+// System.out.println("---------------------------------------------");
+// System.out.println("���X�g" + i);
+// methodName = "get";
+// Value aliasList = callInstanceMethod(vm, thread, methodName,(ObjectReference)aliasLists, vm.mirrorOf(i));
+// methodName = "size";
+// int aliasListSize = ((IntegerValue)callInstanceMethod(vm, thread, methodName, (ObjectReference)aliasList)).value();
+// for (int j = 0; j < aliasListSize; j++) {
+// methodName = "get";
+// Value alias = callInstanceMethod(vm, thread, methodName, (ObjectReference)aliasList, vm.mirrorOf(j));
+// methodName = "toString";
+// Value str2 = callInstanceMethod(vm, thread, methodName, (ObjectReference)alias);
+// printValue("", "", str2, true);
+// methodName = "getMethodExecution";
+// Value aliasMethodExecution = callInstanceMethod(vm ,thread, methodName, (ObjectReference)alias);
+// openSrcFileOfMethodExecution(vm, thread, aliasMethodExecution);
+// objectFlowAliasList.add(new MethodCaller(vm, thread, (ObjectReference)alias));
+// }
+// }
}
/**
diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/MethodCaller.java b/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/MethodCaller.java
index 6174e1a..eacfc7c 100644
--- a/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/MethodCaller.java
+++ b/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/MethodCaller.java
@@ -30,6 +30,14 @@
this.obj = obj;
}
+ public VirtualMachine getVm() {
+ return vm;
+ }
+
+ public ThreadReference getThread() {
+ return thread;
+ }
+
public ObjectReference getObj() {
return obj;
}
diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/AliasLabelProvider.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/AliasLabelProvider.java
deleted file mode 100644
index cf4b4eb..0000000
--- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/AliasLabelProvider.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.ntlab.reversedebugger;
-
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.ntlab.debuggingControl.MethodCaller;
-
-import com.sun.jdi.ClassNotLoadedException;
-import com.sun.jdi.IncompatibleThreadStateException;
-import com.sun.jdi.IntegerValue;
-import com.sun.jdi.InvalidTypeException;
-import com.sun.jdi.InvocationException;
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.StringReference;
-import com.sun.jdi.Value;
-
-public class AliasLabelProvider extends LabelProvider implements ITableLabelProvider {
-
- @Override
- public String getColumnText(Object element, int columnIndex) {
- if (element instanceof MethodCaller) {
- MethodCaller mc = (MethodCaller)element;
- try {
- switch (columnIndex) {
- case 0:
- return ((StringReference)mc.callInstanceMethod("getObjectId")).value();
- case 1:
- return String.valueOf(((IntegerValue)mc.callInstanceMethod("getLineNo")).value());
- case 2:
- return ((StringReference)mc.callInstanceMethod("getStatementType")).value();
- case 3:
- return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value();
- case 4:
- return String.format("%3d", (((IntegerValue)mc.callInstanceMethod("getOccurrenceExp")).value()));
- case 5:
- return ((StringReference)mc.callInstanceMethod("getClassName")).value();
- }
- } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) {
- e.printStackTrace();
- }
- }
- return "�e�X�g�p�e�L�X�g" + columnIndex;
- }
-
- @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);
- }
-}
diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/AliasView.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/AliasView.java
deleted file mode 100644
index 0911408..0000000
--- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/AliasView.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.ntlab.reversedebugger;
-
-import java.util.ArrayList;
-import java.util.List;
-
-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.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.dialogs.ViewLabelProvider;
-import org.eclipse.ui.part.ViewPart;
-import org.ntlab.debuggingControl.DebuggingControlAction;
-import org.ntlab.debuggingControl.MethodCaller;
-
-public class AliasView extends ViewPart {
- private TableViewer viewer;
- private IAction updateAction;
- private SeedAliases seedAliases = new SeedAliases();
-
- public AliasView() {
- // TODO Auto-generated constructor stub
- System.out.println("AliasView�N���X���������ꂽ��!");
- }
-
- @Override
- public void createPartControl(Composite parent) {
- // TODO Auto-generated method stub
- System.out.println("AliasView#createPartControl(Composite)���Ăꂽ��!");
- viewer = new TableViewer(parent);
- Table table = viewer.getTable();
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
-
- // �e�[�u���̃J�������쐬
- String[] tableColumnTexts = {"objectID", "lineNo", "statementType", "statementSignature", "exp", "class"};
- int[] tableColumnWidth = {150, 80, 180, 400, 80, 400};
- TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length];
- for (int i = 0; i < tableColumns.length; i++) {
- tableColumns[i] = new TableColumn(table, SWT.NULL);
- tableColumns[i].setText(tableColumnTexts[i]);
- tableColumns[i].setWidth(tableColumnWidth[i]);
- }
-
- viewer.setContentProvider(new ArrayContentProvider());
- viewer.setLabelProvider(new AliasLabelProvider());
- viewer.setInput(seedAliases.getSeedAliases());
- createActions();
- createToolBar();
- createMenuBar();
- }
-
- @Override
- public void setFocus() {
- // TODO Auto-generated method stub
- viewer.getControl().setFocus();
- }
-
- private void createActions() {
- updateAction = new Action() {
- @Override
- public void run() {
- seedAliases.reset();
- viewer.setInput(seedAliases.getSeedAliases());
- }
- };
- updateAction.setText("�e�L�X�g");
- updateAction.setToolTipText("�c�[���`�b�v�e�L�X�g");
- updateAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
- }
-
- private void createToolBar() {
- IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
- mgr.add(updateAction);
- }
-
- private void createMenuBar() {
- IMenuManager mgr = getViewSite().getActionBars().getMenuManager();
- mgr.add(updateAction);
- }
-}
diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasLabelProvider.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasLabelProvider.java
new file mode 100644
index 0000000..ca98b23
--- /dev/null
+++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasLabelProvider.java
@@ -0,0 +1,57 @@
+package org.ntlab.reversedebugger;
+
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.ntlab.debuggingControl.MethodCaller;
+
+import com.sun.jdi.ClassNotLoadedException;
+import com.sun.jdi.IncompatibleThreadStateException;
+import com.sun.jdi.IntegerValue;
+import com.sun.jdi.InvalidTypeException;
+import com.sun.jdi.InvocationException;
+import com.sun.jdi.StringReference;
+
+public class ObjectFlowAliasLabelProvider extends LabelProvider implements ITableLabelProvider {
+
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ if (element instanceof MethodCaller) {
+ MethodCaller mc = (MethodCaller)element;
+ if (mc.getObj() == null) {
+ return "";
+ }
+ try {
+ switch (columnIndex) {
+ case 0:
+ return ((StringReference)mc.callInstanceMethod("getObjectId")).value();
+ case 1:
+ return String.valueOf(((IntegerValue)mc.callInstanceMethod("getLineNo")).value());
+ case 2:
+ return ((StringReference)mc.callInstanceMethod("getStatementType")).value();
+ case 3:
+ return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value();
+ case 4:
+ return String.format("%3d", (((IntegerValue)mc.callInstanceMethod("getOccurrenceExp")).value()));
+ case 5:
+ return ((StringReference)mc.callInstanceMethod("getClassName")).value();
+ }
+ } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) {
+ e.printStackTrace();
+ }
+ }
+ return "�e�X�g�p�e�L�X�g" + columnIndex;
+ }
+
+ @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);
+ }
+}
diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasView.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasView.java
new file mode 100644
index 0000000..54c0759
--- /dev/null
+++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasView.java
@@ -0,0 +1,81 @@
+package org.ntlab.reversedebugger;
+
+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.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+public class ObjectFlowAliasView extends ViewPart {
+ private TableViewer viewer;
+ private IAction updateAction;
+ private ObjectFlowAliases objectFlowAliases = ObjectFlowAliases.getInstance();
+
+ public ObjectFlowAliasView() {
+ // TODO Auto-generated constructor stub
+ System.out.println("ObjectFlowView�N���X���������ꂽ��!");
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ // TODO Auto-generated method stub
+ System.out.println("ObjectFlowView#createPartControl(Composite)���Ăꂽ��!");
+ viewer = new TableViewer(parent, SWT.FULL_SELECTION);
+ Table table = viewer.getTable();
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+
+ // �e�[�u���̃J�������쐬
+ String[] tableColumnTexts = {"objectID", "lineNo", "statementType", "statementSignature", "exp", "class"};
+ int[] tableColumnWidth = {150, 80, 180, 400, 80, 400};
+ TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length];
+ for (int i = 0; i < tableColumns.length; i++) {
+ tableColumns[i] = new TableColumn(table, SWT.NULL);
+ tableColumns[i].setText(tableColumnTexts[i]);
+ tableColumns[i].setWidth(tableColumnWidth[i]);
+ }
+
+ viewer.setContentProvider(new ArrayContentProvider());
+ viewer.setLabelProvider(new ObjectFlowAliasLabelProvider());
+ viewer.setInput(objectFlowAliases.getObjectFlowSingleList(true));
+ createActions();
+ createToolBar();
+ createMenuBar();
+ }
+
+ @Override
+ public void setFocus() {
+ // TODO Auto-generated method stub
+ viewer.getControl().setFocus();
+ }
+
+ private void createActions() {
+ updateAction = new Action() {
+ @Override
+ public void run() {
+ viewer.setInput(objectFlowAliases.getObjectFlowSingleList(true));
+ }
+ };
+ updateAction.setText("�e�L�X�g");
+ updateAction.setToolTipText("�c�[���`�b�v�e�L�X�g");
+ updateAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+ }
+
+ private void createToolBar() {
+ IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
+ mgr.add(updateAction);
+ }
+
+ private void createMenuBar() {
+ IMenuManager mgr = getViewSite().getActionBars().getMenuManager();
+ mgr.add(updateAction);
+ }
+}
diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliases.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliases.java
new file mode 100644
index 0000000..dd821d8
--- /dev/null
+++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliases.java
@@ -0,0 +1,84 @@
+package org.ntlab.reversedebugger;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.ntlab.debuggingControl.MethodCaller;
+
+import com.sun.jdi.ClassNotLoadedException;
+import com.sun.jdi.IncompatibleThreadStateException;
+import com.sun.jdi.IntegerValue;
+import com.sun.jdi.InvalidTypeException;
+import com.sun.jdi.InvocationException;
+import com.sun.jdi.ObjectReference;
+import com.sun.jdi.Value;
+import com.sun.jdi.VirtualMachine;
+
+public class ObjectFlowAliases {
+ private static ObjectFlowAliases theInstance = null;
+ private List> objectFlowAliases = new ArrayList<>();
+ private static final String TRACE = "org.ntlab.traceCollector.tracer.trace";
+
+ private ObjectFlowAliases() {
+
+ }
+
+ public static ObjectFlowAliases getInstance() {
+ if (theInstance == null) {
+ theInstance = new ObjectFlowAliases();
+ }
+ return theInstance;
+ }
+
+ public List> getObjectFlow() {
+ return objectFlowAliases;
+ }
+
+ public List> getObjectFlow(MethodCaller alias) {
+ createObjectFlow(alias);
+ return objectFlowAliases;
+ }
+
+ public List getObjectFlowSingleList(boolean hasBound) {
+ List list = new ArrayList<>();
+ for (int i = 0; i < objectFlowAliases.size(); i++) {
+ for (int j = 0; j < objectFlowAliases.get(i).size(); j++) {
+ list.add(objectFlowAliases.get(i).get(j));
+ }
+ if (hasBound) {
+ list.add(new MethodCaller(null, null)); // ���E�p�̃_�~�[�C���X�^���X�����Ēlj�
+ }
+ }
+ return list;
+ }
+
+ public List getObjectFlowSingleList(MethodCaller alias, boolean hasBound) {
+ createObjectFlow(alias);
+ return getObjectFlowSingleList(hasBound);
+ }
+
+ public void createObjectFlow(MethodCaller alias) {
+ System.out.println("ObjectFlowAliases#createObjectFlow(MethodCaller)���Ăꂽ��!");
+ MethodCaller mc = new MethodCaller(alias.getVm(), alias.getThread());
+ objectFlowAliases.clear();
+ try {
+ // �I�������G�C���A�X���N�_�ɃI�u�W�F�N�g�t���[���Ăяo���Č��ʂ����X�g�Ŏ��
+ ObjectReference aliasListsReference = (ObjectReference)alias.callStaticMethod(TRACE, "TraceJSON", "getObjectFlow", alias.getObj());
+
+ // �擾�������X�g�̒��g�����[�v�ʼnȂ�����o��, �Ǘ��p�̃��X�g�ɋl�ߒ���
+ int aliasListsSize = ((IntegerValue)mc.setObj(aliasListsReference).callInstanceMethod("size")).value();
+ for (int i = 0; i < aliasListsSize; i++) {
+ List list = new ArrayList<>();
+ objectFlowAliases.add(list);
+ ObjectReference aliasListReference = (ObjectReference)mc.setObj(aliasListsReference).callInstanceMethod("get", mc.getVm().mirrorOf(i));
+ int aliasListSize = ((IntegerValue)mc.setObj(aliasListReference).callInstanceMethod("size")).value();
+ for (int j = 0; j < aliasListSize; j++) {
+ ObjectReference aliasReference = (ObjectReference)mc.setObj(aliasListReference).callInstanceMethod("get", mc.getVm().mirrorOf(j));
+ list.add(new MethodCaller(alias.getVm(), alias.getThread(), aliasReference));
+ }
+ }
+ } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasLabelProvider.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasLabelProvider.java
new file mode 100644
index 0000000..acb9538
--- /dev/null
+++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasLabelProvider.java
@@ -0,0 +1,56 @@
+package org.ntlab.reversedebugger;
+
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.ntlab.debuggingControl.MethodCaller;
+
+import com.sun.jdi.ClassNotLoadedException;
+import com.sun.jdi.IncompatibleThreadStateException;
+import com.sun.jdi.IntegerValue;
+import com.sun.jdi.InvalidTypeException;
+import com.sun.jdi.InvocationException;
+import com.sun.jdi.ObjectReference;
+import com.sun.jdi.StringReference;
+import com.sun.jdi.Value;
+
+public class SeedAliasLabelProvider extends LabelProvider implements ITableLabelProvider {
+
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ if (element instanceof MethodCaller) {
+ MethodCaller mc = (MethodCaller)element;
+ try {
+ switch (columnIndex) {
+ case 0:
+ return ((StringReference)mc.callInstanceMethod("getObjectId")).value();
+ case 1:
+ return String.valueOf(((IntegerValue)mc.callInstanceMethod("getLineNo")).value());
+ case 2:
+ return ((StringReference)mc.callInstanceMethod("getStatementType")).value();
+ case 3:
+ return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value();
+ case 4:
+ return String.format("%3d", (((IntegerValue)mc.callInstanceMethod("getOccurrenceExp")).value()));
+ case 5:
+ return ((StringReference)mc.callInstanceMethod("getClassName")).value();
+ }
+ } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) {
+ e.printStackTrace();
+ }
+ }
+ return "�e�X�g�p�e�L�X�g" + columnIndex;
+ }
+
+ @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);
+ }
+}
diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasView.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasView.java
new file mode 100644
index 0000000..c7c2571
--- /dev/null
+++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasView.java
@@ -0,0 +1,90 @@
+package org.ntlab.reversedebugger;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.internal.dialogs.ViewLabelProvider;
+import org.eclipse.ui.part.ViewPart;
+import org.ntlab.debuggingControl.DebuggingControlAction;
+import org.ntlab.debuggingControl.MethodCaller;
+
+public class SeedAliasView extends ViewPart {
+ private TableViewer viewer;
+ private IAction updateAction;
+ private SeedAliases seedAliases = new SeedAliases();
+
+ public SeedAliasView() {
+ // TODO Auto-generated constructor stub
+ System.out.println("AliasView�N���X���������ꂽ��!");
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ // TODO Auto-generated method stub
+ System.out.println("AliasView#createPartControl(Composite)���Ăꂽ��!");
+ viewer = new TableViewer(parent, SWT.FULL_SELECTION);
+ Table table = viewer.getTable();
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+
+ // �e�[�u���̃J�������쐬
+ String[] tableColumnTexts = {"objectID", "lineNo", "statementType", "statementSignature", "exp", "class"};
+ int[] tableColumnWidth = {150, 80, 180, 400, 80, 400};
+ TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length];
+ for (int i = 0; i < tableColumns.length; i++) {
+ tableColumns[i] = new TableColumn(table, SWT.NULL);
+ tableColumns[i].setText(tableColumnTexts[i]);
+ tableColumns[i].setWidth(tableColumnWidth[i]);
+ }
+
+ viewer.setContentProvider(new ArrayContentProvider());
+ viewer.setLabelProvider(new SeedAliasLabelProvider());
+ viewer.setInput(seedAliases.getSeedAliases());
+ createActions();
+ createToolBar();
+ createMenuBar();
+ }
+
+ @Override
+ public void setFocus() {
+ // TODO Auto-generated method stub
+ viewer.getControl().setFocus();
+ }
+
+ private void createActions() {
+ updateAction = new Action() {
+ @Override
+ public void run() {
+ seedAliases.reset();
+ viewer.setInput(seedAliases.getSeedAliases());
+ }
+ };
+ updateAction.setText("�e�L�X�g");
+ updateAction.setToolTipText("�c�[���`�b�v�e�L�X�g");
+ updateAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+ }
+
+ private void createToolBar() {
+ IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
+ mgr.add(updateAction);
+ }
+
+ private void createMenuBar() {
+ IMenuManager mgr = getViewSite().getActionBars().getMenuManager();
+ mgr.add(updateAction);
+ }
+}