diff --git a/org.ntlab.reverseDebugger/plugin.xml b/org.ntlab.reverseDebugger/plugin.xml index 5011c18..d79cb2d 100644 --- a/org.ntlab.reverseDebugger/plugin.xml +++ b/org.ntlab.reverseDebugger/plugin.xml @@ -36,5 +36,13 @@ restorable="true"> + + + + diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/JavaEditorOperator.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/JavaEditorOperator.java index bdf1355..0c537de 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/JavaEditorOperator.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/JavaEditorOperator.java @@ -32,7 +32,6 @@ private static final String TRACE = "org.ntlab.traceCollector.tracer.trace"; public void openSrcFile(MethodCaller alias) { - System.out.println("JavaEditorOpenSrcFile(MethodCaller)���Ă΂ꂽ��!"); try { ObjectReference methodExecution = (ObjectReference)alias.callInstanceMethod("getMethodExecution"); MethodCaller meCaller = new MethodCaller(alias.getVm(), alias.getThread(), methodExecution); diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasLabelProvider.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasLabelProvider.java index ca98b23..3df254a 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasLabelProvider.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasLabelProvider.java @@ -28,15 +28,15 @@ 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(); + case 2: + return String.valueOf(((IntegerValue)mc.callInstanceMethod("getLineNo")).value()); + case 3: + return ((StringReference)mc.callInstanceMethod("getStatementType")).value(); + case 4: + return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value(); + case 5: + return String.format("%3d", (((IntegerValue)mc.callInstanceMethod("getOccurrenceExp")).value())); } } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) { e.printStackTrace(); diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasView.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasView.java index ce6d7c6..8b312f1 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasView.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasView.java @@ -5,6 +5,7 @@ import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; @@ -13,7 +14,9 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; import org.ntlab.debuggingControl.MethodCaller; @@ -24,6 +27,7 @@ private IAction resetAction; private ObjectFlowAliases objectFlowAliases = ObjectFlowAliases.getInstance(); private JavaEditorOperator javaEditorOperator = new JavaEditorOperator(); + public static final String ID = "org.ntlab.reverseDebugger.objectFlowAliasView"; public ObjectFlowAliasView() { // TODO Auto-generated constructor stub @@ -40,8 +44,8 @@ table.setLinesVisible(true); // �e�[�u���̃J�������쐬 - String[] tableColumnTexts = {"objectID", "lineNo", "statementType", "statementSignature", "exp", "class"}; - int[] tableColumnWidth = {150, 80, 180, 400, 80, 400}; + String[] tableColumnTexts = {"objectID", "class", "lineNo", "statementType", "statementSignature", "occurrence"}; + int[] tableColumnWidth = {150, 160, 80, 180, 300, 100}; TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length]; for (int i = 0; i < tableColumns.length; i++) { tableColumns[i] = new TableColumn(table, SWT.NULL); @@ -58,14 +62,13 @@ public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection sel = (IStructuredSelection)event.getSelection(); Object element = sel.getFirstElement(); - System.out.println(element); if (element instanceof MethodCaller) { MethodCaller alias = (MethodCaller)element; SeedAliases.getInstance().createSeedAliases(alias); javaEditorOperator.openSrcFile(alias); } } - }); + }); createActions(); createToolBar(); createMenuBar(); @@ -75,6 +78,7 @@ public void setFocus() { // TODO Auto-generated method stub viewer.getControl().setFocus(); + viewer.setInput(objectFlowAliases.getObjectFlowSingleList(true)); } private void createActions() { @@ -82,10 +86,11 @@ @Override public void run() { viewer.setInput(objectFlowAliases.getObjectFlowSingleList(true)); +// viewer.refresh(); } }; - refreshAction.setText("�e�L�X�g"); - refreshAction.setToolTipText("�c�[���`�b�v�e�L�X�g"); + refreshAction.setText("���t���b�V��"); + refreshAction.setToolTipText("���t���b�V��"); refreshAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK)); resetAction = new Action() { @@ -94,8 +99,8 @@ objectFlowAliases.reset(); } }; - resetAction.setText("�e�L�X�g"); - resetAction.setToolTipText("�c�[���`�b�v�e�L�X�g"); + resetAction.setText("���Z�b�g"); + resetAction.setToolTipText("���Z�b�g"); resetAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_WARN_TSK)); } diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ReverseDebuggerPerspective.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ReverseDebuggerPerspective.java new file mode 100644 index 0000000..84e8115 --- /dev/null +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ReverseDebuggerPerspective.java @@ -0,0 +1,27 @@ +package org.ntlab.reversedebugger; + +import org.eclipse.ui.IFolderLayout; +import org.eclipse.ui.IPageLayout; +import org.eclipse.ui.IPerspectiveFactory; +import org.eclipse.ui.part.IPage; + +public class ReverseDebuggerPerspective implements IPerspectiveFactory { + + @Override + public void createInitialLayout(IPageLayout layout) { + // �G�f�B�^�̏ꏊ���擾 + String editorArea = layout.getEditorArea(); + + // ����ɂ̓X�^�b�N�̃r���[��z�u����\�肾��, �Ή�ID��������Ȃ��̂łƂ肠�������ɃA�E�g���C����z�u���Ă��� + IFolderLayout topLeft = layout.createFolder("topLeft", IPageLayout.TOP, 0.35f, editorArea); + topLeft.addView(IPageLayout.ID_OUTLINE); + + // �E��ɃV�[�h�G�C���A�X�̃r���[��z�u + IFolderLayout topRight = layout.createFolder("topRight", IPageLayout.RIGHT, 0.35f, "topLeft"); + topRight.addView(SeedAliasView.ID); + + // ����ɃI�u�W�F�N�g�t���[�G�C���A�X�̃r���[��z�u + IFolderLayout bottomRight = layout.createFolder("bottomRight", IPageLayout.RIGHT, 0.35f, editorArea); + bottomRight.addView(ObjectFlowAliasView.ID); + } +} diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasLabelProvider.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasLabelProvider.java index acb9538..1f197dc 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasLabelProvider.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasLabelProvider.java @@ -27,15 +27,15 @@ 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(); + case 2: + return String.valueOf(((IntegerValue)mc.callInstanceMethod("getLineNo")).value()); + case 3: + return ((StringReference)mc.callInstanceMethod("getStatementType")).value(); + case 4: + return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value(); + case 5: + return String.format("%3d", (((IntegerValue)mc.callInstanceMethod("getOccurrenceExp")).value())); } } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) { e.printStackTrace(); diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasView.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasView.java index f904df2..6b5b1cc 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasView.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasView.java @@ -1,22 +1,23 @@ 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.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.internal.dialogs.ViewLabelProvider; import org.eclipse.ui.part.ViewPart; @@ -28,7 +29,9 @@ private IAction refreshAction; private IAction resetAction; private SeedAliases seedAliases = SeedAliases.getInstance(); - + public static final String ID = "org.ntlab.reverseDebugger.seedAliasView"; +// private ISelectionListener listener; + public SeedAliasView() { // TODO Auto-generated constructor stub System.out.println("AliasView�N���X���������ꂽ��!"); @@ -44,8 +47,8 @@ table.setLinesVisible(true); // �e�[�u���̃J�������쐬 - String[] tableColumnTexts = {"objectID", "lineNo", "statementType", "statementSignature", "exp", "class"}; - int[] tableColumnWidth = {150, 80, 180, 400, 80, 400}; + String[] tableColumnTexts = {"objectID", "class", "lineNo", "statementType", "statementSignature", "occurrence"}; + int[] tableColumnWidth = {150, 160, 80, 180, 300, 100}; TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length]; for (int i = 0; i < tableColumns.length; i++) { tableColumns[i] = new TableColumn(table, SWT.NULL); @@ -68,15 +71,33 @@ } } }); + +// listener = new ISelectionListener() { +// @Override +// public void selectionChanged(IWorkbenchPart part, ISelection selection) { +// System.out.println("test"); +// System.out.println(part); +// System.out.println(selection); +// } +// }; +// getSite().getPage().addSelectionListener(listener); + createActions(); createToolBar(); createMenuBar(); } + + @Override + public void dispose() { +// getSite().getPage().removeSelectionListener(listener); + super.dispose(); + } @Override public void setFocus() { // TODO Auto-generated method stub viewer.getControl().setFocus(); + viewer.refresh(); } private void createActions() { @@ -89,8 +110,8 @@ viewer.refresh(); } }; - refreshAction.setText("�e�L�X�g"); - refreshAction.setToolTipText("�c�[���`�b�v�e�L�X�g"); + refreshAction.setText("���t���b�V��"); + refreshAction.setToolTipText("���t���b�V��"); refreshAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK)); resetAction = new Action() { @@ -99,8 +120,8 @@ seedAliases.reset(); } }; - resetAction.setText("�e�L�X�g"); - resetAction.setToolTipText("�c�[���`�b�v�e�L�X�g"); + resetAction.setText("���Z�b�g"); + resetAction.setToolTipText("���Z�b�g"); resetAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_WARN_TSK)); }