diff --git a/src/org/ntlab/traceDebugger/BreakPointView.java b/src/org/ntlab/traceDebugger/BreakPointView.java index dc8411a..c67e21f 100644 --- a/src/org/ntlab/traceDebugger/BreakPointView.java +++ b/src/org/ntlab/traceDebugger/BreakPointView.java @@ -1,395 +1,400 @@ -package org.ntlab.traceDebugger; - -import java.util.ArrayList; - -import org.eclipse.debug.internal.ui.IInternalDebugUIConstants; -import org.eclipse.debug.ui.DebugUITools; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IMenuListener; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.viewers.CheckboxTableViewer; -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.jface.viewers.Viewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.MouseAdapter; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.swt.widgets.TableItem; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.IWorkbenchActionConstants; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.part.ViewPart; -import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; - -public class BreakPointView extends ViewPart { - protected TableViewer viewer; - protected IAction fileOpenAction; - protected IAction addTraceBreakPointAction; - protected IAction removeTraceBreakPointAction; - protected IAction debugAction; - protected IAction terminateAction; - protected IAction stepIntoAction; - protected IAction stepOverAction; - protected IAction stepReturnAction; - protected IAction stepNextAction; - protected IAction resumeAction; - protected IAction importBreakpointAction; - protected Shell shell; - protected TraceBreakPoints traceBreakPoints; - protected DebuggingController debuggingController = DebuggingController.getInstance(); - public static final String ID = "org.ntlab.traceDebugger.breakPointView"; - public static final String DEBUG_ELCL = "Debug_elcl"; - public static final String DEBUG_DLCL = "Debug_dlcl"; - public static final String IMPORT_BREAKPOINT_ELCL = "ImportBreakPoint_ELCL"; - public static final String IMPORT_BREAKPOINT_DLCL = "ImportBreakPoint_DLCL"; - public static final String STEP_NEXT_ELCL = "StepNext_ELCL"; - public static final String STEP_NEXT_DLCL = "StepNext_DLCL"; - - public BreakPointView() { - // TODO Auto-generated constructor stub - System.out.println("BreakPointView�N���X���������ꂽ��!"); - } - - @Override - public void createPartControl(Composite parent) { - // TODO Auto-generated method stub - System.out.println("BreakPointView#createPartControl(Composite)���Ă΂ꂽ��!"); - shell = parent.getShell(); - viewer = CheckboxTableViewer.newCheckList(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION); - final Table table = viewer.getTable(); - table.setHeaderVisible(true); - table.setLinesVisible(true); - - // �e�[�u���̃J�������쐬 - String[] tableColumnTexts = TraceDebuggerPlugin.isJapanese() ? new String[]{"", "�s", "���\�b�h"} - : new String[]{"", "Line", "Signature"}; - int[] tableColumnWidth = {50, 80, 500}; - 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 BreakPointLabelProvider()); - viewer.addSelectionChangedListener(new ISelectionChangedListener() { - @Override - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection sel = (IStructuredSelection)event.getSelection(); - Object element = sel.getFirstElement(); - if (element instanceof TraceBreakPoint) { - TraceBreakPoint tbp = (TraceBreakPoint)element; - debuggingController.setSelectedTraceBreakPoint(tbp); - - // �I������TraceBreakPoint�̏ꏊ���J���Ĕ��]�\������ (������������?) - MethodExecution methodExecution = tbp.getMethodExecutions().iterator().next(); - int highlightLineNo = tbp.getLineNo(); - JavaEditorOperator.openSrcFileOfMethodExecution(methodExecution, highlightLineNo); - } - } - }); - - table.addMouseListener(new MouseAdapter() { - @Override - public void mouseDown(MouseEvent e) { - Point point = new Point(e.x, e.y); - TableItem item = table.getItem(point); - if (item == null) return; - boolean checked = item.getChecked(); - Object data = item.getData(); - if (data instanceof TraceBreakPoint) { - TraceBreakPoint tbp = (TraceBreakPoint)data; - tbp.setAvailable(checked); - viewer.refresh(); - } - } - }); - - createActions(); - createToolBar(); - createMenuBar(); - createPopupMenu(); - TraceDebuggerPlugin.setActiveView(ID, this); - } - - @Override - public String getTitle() { - return TraceDebuggerPlugin.isJapanese() ? "�u���[�N�|�C���g" : "Breakpoints"; - } - - public Viewer getViewer() { - return viewer; - } - - @Override - public void setFocus() { - // TODO Auto-generated method stub - TraceDebuggerPlugin.setActiveView(ID, this); - viewer.getControl().setFocus(); - } - - protected void createActions() { - ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry(); - ImageDescriptor fileOpenIcon = PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER); - boolean isJapanese = TraceDebuggerPlugin.isJapanese(); - String msg; - - msg = (isJapanese) ? "�g���[�X�t�@�C�����J��" : "Open Trace File..."; - fileOpenAction = new Action(msg, fileOpenIcon) { - @Override - public void run() { - // �g���[�X�o�͐�Q�ƃE�B�U�[�h - debuggingController.fileOpenAction(shell); - } - }; - - addTraceBreakPointAction = new Action() { - @Override - public void run() { - debuggingController.addTraceBreakPointAction(); - } - }; - msg = (isJapanese) ? "�u���[�N�|�C���g��lj�����" : "Add a New Breakpoint"; - addTraceBreakPointAction.setText(msg); - addTraceBreakPointAction.setToolTipText(msg); - - removeTraceBreakPointAction = new Action() { - @Override - public void run() { - debuggingController.removeTraceBreakPointAction(); - } - }; - msg = (isJapanese) ? "�u���[�N�|�C���g���폜����" : "Remove a Breakpoint"; - removeTraceBreakPointAction.setText(msg); - removeTraceBreakPointAction.setToolTipText(msg); - - importBreakpointAction = new Action() { - @Override - public void run() { - debuggingController.importBreakpointAction(); - } - }; - msg = (isJapanese) ? "�u���[�N�|�C���g�� Eclipse ����������" : "Import Breakpoints from Eclipse"; - importBreakpointAction.setText(msg); - importBreakpointAction.setToolTipText(msg); - ImageDescriptor importBreakpointIcon = registry.getDescriptor(IMPORT_BREAKPOINT_DLCL); - importBreakpointAction.setImageDescriptor(importBreakpointIcon); - - debugAction = new Action() { - @Override - public void run() { - debuggingController.debugAction(); - } - }; - msg = (isJapanese) ? "�f�o�b�O" : "Debug"; - debugAction.setText(msg); - debugAction.setToolTipText(msg); - ImageDescriptor debugIcon = registry.getDescriptor(DEBUG_DLCL); - debugAction.setImageDescriptor(debugIcon); - - terminateAction = new Action() { - @Override - public void run() { - debuggingController.terminateAction(); - } - }; - msg = (isJapanese) ? "�I��" : "Terminate"; - terminateAction.setText(msg); - terminateAction.setToolTipText(msg); - ImageDescriptor terminateImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_TERMINATE); - terminateAction.setImageDescriptor(terminateImage); - - stepIntoAction = new Action() { - @Override - public void run() { - debuggingController.stepIntoAction(); - } - }; - msg = (isJapanese) ? "�X�e�b�v�C��" : "Step Into"; - stepIntoAction.setText(msg); - stepIntoAction.setToolTipText(msg); - ImageDescriptor stepIntoImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_INTO); - stepIntoAction.setImageDescriptor(stepIntoImage); - - stepOverAction = new Action() { - @Override - public void run() { - debuggingController.stepOverAction(); - } - }; - msg = (isJapanese) ? "�X�e�b�v�I�[�o�[" : "Step Over"; - stepOverAction.setText(msg); - stepOverAction.setToolTipText(msg); - ImageDescriptor stepOverImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_OVER); - stepOverAction.setImageDescriptor(stepOverImage); - - stepReturnAction = new Action() { - @Override - public void run() { - debuggingController.stepReturnAction(); - } - }; - msg = (isJapanese) ? "�X�e�b�v���^�[��" : "Step Return"; - stepReturnAction.setText(msg); - stepReturnAction.setToolTipText(msg); - ImageDescriptor stepReturnImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_RETURN); - stepReturnAction.setImageDescriptor(stepReturnImage); - - stepNextAction = new Action() { - @Override - public void run() { - debuggingController.stepNextAction(); - } - }; - msg = (isJapanese) ? "�X�e�b�v�l�N�X�g" : "Step Next"; - stepNextAction.setText(msg); - stepNextAction.setToolTipText(msg); - ImageDescriptor stepNextIcon = registry.getDescriptor(STEP_NEXT_DLCL); - stepNextAction.setImageDescriptor(stepNextIcon); - - resumeAction = new Action() { - @Override - public void run() { - debuggingController.resumeAction(); - } - }; - msg = (isJapanese) ? "�ĊJ" : "Resume"; - resumeAction.setText(msg); - resumeAction.setToolTipText(msg); - ImageDescriptor image = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_RESUME); - resumeAction.setImageDescriptor(image); - } - - protected void createToolBar() { - IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); - mgr.add(fileOpenAction); - mgr.add(importBreakpointAction); - mgr.add(debugAction); - mgr.add(terminateAction); - mgr.add(resumeAction); - mgr.add(stepIntoAction); - mgr.add(stepOverAction); - mgr.add(stepReturnAction); - mgr.add(stepNextAction); - } - - protected void createMenuBar() { - IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); - mgr.add(fileOpenAction); - mgr.add(importBreakpointAction); - mgr.add(debugAction); - mgr.add(terminateAction); - mgr.add(resumeAction); - mgr.add(stepIntoAction); - mgr.add(stepOverAction); - mgr.add(stepReturnAction); - mgr.add(stepNextAction); - } - - private void createPopupMenu() { - MenuManager menuMgr = new MenuManager("#PopupMenu"); - menuMgr.setRemoveAllWhenShown(true); - menuMgr.addMenuListener(new IMenuListener() { - @Override - public void menuAboutToShow(IMenuManager manager) { - manager.add(addTraceBreakPointAction); - manager.add(removeTraceBreakPointAction); - manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - } - }); - Menu menu = menuMgr.createContextMenu(viewer.getControl()); - viewer.getControl().setMenu(menu); - getSite().registerContextMenu(menuMgr, viewer); - } - - public TraceBreakPoints getTraceBreakPoints() { - return traceBreakPoints; - } - - public void reset() { - viewer.setInput(new ArrayList()); - viewer.refresh(); - updateImagesForDebug(false); - updateImagesForBreakPoint(false); - } - - public void updateTraceBreakPoints(TraceBreakPoints traceBreakPoints) { - this.traceBreakPoints = traceBreakPoints; - viewer.setInput(traceBreakPoints.getAllTraceBreakPoints()); - final Table table = viewer.getTable(); - for (TableItem item : table.getItems()) { - Object data = item.getData(); - if (data instanceof TraceBreakPoint) { - TraceBreakPoint tbp = (TraceBreakPoint)data; - boolean isAvailable = tbp.isAvailable(); - item.setChecked(isAvailable); - } - } - viewer.refresh(); - } - - 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); - stepIntoAction.setImageDescriptor(stepIntoImage); - ImageDescriptor stepOverImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_OVER); - 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); - stepIntoAction.setImageDescriptor(stepIntoImage); - ImageDescriptor stepOverImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_OVER); - 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); - } - } -} +package org.ntlab.traceDebugger; + +import java.util.ArrayList; + +import org.eclipse.debug.internal.ui.IInternalDebugUIConstants; +import org.eclipse.debug.ui.DebugUITools; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.ImageRegistry; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.CheckboxTableViewer; +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.jface.viewers.Viewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.TableItem; +import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.part.ViewPart; +import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; + +public class BreakPointView extends ViewPart { + protected TableViewer viewer; + protected IAction fileOpenAction; + protected IAction addTraceBreakPointAction; + protected IAction removeTraceBreakPointAction; + protected IAction debugAction; + protected IAction terminateAction; + protected IAction stepIntoAction; + protected IAction stepOverAction; + protected IAction stepReturnAction; + protected IAction stepNextAction; + protected IAction resumeAction; + protected IAction importBreakpointAction; + protected Shell shell; + protected TraceBreakPoints traceBreakPoints; + protected DebuggingController debuggingController = DebuggingController.getInstance(); + public static final String ID = "org.ntlab.traceDebugger.breakPointView"; + public static final String DEBUG_ELCL = "Debug_elcl"; + public static final String DEBUG_DLCL = "Debug_dlcl"; + public static final String IMPORT_BREAKPOINT_ELCL = "ImportBreakPoint_ELCL"; + public static final String IMPORT_BREAKPOINT_DLCL = "ImportBreakPoint_DLCL"; + public static final String STEP_NEXT_ELCL = "StepNext_ELCL"; + public static final String STEP_NEXT_DLCL = "StepNext_DLCL"; + + public BreakPointView() { + // TODO Auto-generated constructor stub + System.out.println("BreakPointView�N���X���������ꂽ��!"); + } + + @Override + public void createPartControl(Composite parent) { + // TODO Auto-generated method stub + System.out.println("BreakPointView#createPartControl(Composite)���Ă΂ꂽ��!"); + shell = parent.getShell(); + viewer = CheckboxTableViewer.newCheckList(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION); + final Table table = viewer.getTable(); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + // �e�[�u���̃J�������쐬 + String[] tableColumnTexts = TraceDebuggerPlugin.isJapanese() ? new String[]{"", "�s", "���\�b�h"} + : new String[]{"", "Line", "Signature"}; + int[] tableColumnWidth = {50, 80, 500}; + 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 BreakPointLabelProvider()); + viewer.addSelectionChangedListener(new ISelectionChangedListener() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection sel = (IStructuredSelection)event.getSelection(); + Object element = sel.getFirstElement(); + if (element instanceof TraceBreakPoint) { + TraceBreakPoint tbp = (TraceBreakPoint)element; + debuggingController.setSelectedTraceBreakPoint(tbp); + + // �I������TraceBreakPoint�̏ꏊ���J���Ĕ��]�\������ (������������?) + MethodExecution methodExecution = tbp.getMethodExecutions().iterator().next(); + int highlightLineNo = tbp.getLineNo(); + JavaEditorOperator.openSrcFileOfMethodExecution(methodExecution, highlightLineNo); + } + } + }); + + table.addMouseListener(new MouseAdapter() { + @Override + public void mouseDown(MouseEvent e) { + Point point = new Point(e.x, e.y); + TableItem item = table.getItem(point); + if (item == null) return; + boolean checked = item.getChecked(); + Object data = item.getData(); + if (data instanceof TraceBreakPoint) { + TraceBreakPoint tbp = (TraceBreakPoint)data; + tbp.setAvailable(checked); + viewer.refresh(); + } + } + }); + + createActions(); + createToolBar(); + createMenuBar(); + createPopupMenu(); + TraceDebuggerPlugin.setActiveView(ID, this); + } + + @Override + public String getTitle() { + return TraceDebuggerPlugin.isJapanese() ? "�u���[�N�|�C���g" : "Breakpoints"; + } + + public Viewer getViewer() { + return viewer; + } + + @Override + public void setFocus() { + // TODO Auto-generated method stub + TraceDebuggerPlugin.setActiveView(ID, this); + viewer.getControl().setFocus(); + } + + @Override + public void dispose() { + TraceDebuggerPlugin.removeView(ID, this); + } + + protected void createActions() { + ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry(); + ImageDescriptor fileOpenIcon = PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER); + boolean isJapanese = TraceDebuggerPlugin.isJapanese(); + String msg; + + msg = (isJapanese) ? "�g���[�X�t�@�C�����J��" : "Open Trace File..."; + fileOpenAction = new Action(msg, fileOpenIcon) { + @Override + public void run() { + // �g���[�X�o�͐�Q�ƃE�B�U�[�h + debuggingController.fileOpenAction(shell); + } + }; + + addTraceBreakPointAction = new Action() { + @Override + public void run() { + debuggingController.addTraceBreakPointAction(); + } + }; + msg = (isJapanese) ? "�u���[�N�|�C���g��lj�����" : "Add a New Breakpoint"; + addTraceBreakPointAction.setText(msg); + addTraceBreakPointAction.setToolTipText(msg); + + removeTraceBreakPointAction = new Action() { + @Override + public void run() { + debuggingController.removeTraceBreakPointAction(); + } + }; + msg = (isJapanese) ? "�u���[�N�|�C���g���폜����" : "Remove a Breakpoint"; + removeTraceBreakPointAction.setText(msg); + removeTraceBreakPointAction.setToolTipText(msg); + + importBreakpointAction = new Action() { + @Override + public void run() { + debuggingController.importBreakpointAction(); + } + }; + msg = (isJapanese) ? "�u���[�N�|�C���g�� Eclipse ����������" : "Import Breakpoints from Eclipse"; + importBreakpointAction.setText(msg); + importBreakpointAction.setToolTipText(msg); + ImageDescriptor importBreakpointIcon = registry.getDescriptor(IMPORT_BREAKPOINT_DLCL); + importBreakpointAction.setImageDescriptor(importBreakpointIcon); + + debugAction = new Action() { + @Override + public void run() { + debuggingController.debugAction(); + } + }; + msg = (isJapanese) ? "�f�o�b�O" : "Debug"; + debugAction.setText(msg); + debugAction.setToolTipText(msg); + ImageDescriptor debugIcon = registry.getDescriptor(DEBUG_DLCL); + debugAction.setImageDescriptor(debugIcon); + + terminateAction = new Action() { + @Override + public void run() { + debuggingController.terminateAction(); + } + }; + msg = (isJapanese) ? "�I��" : "Terminate"; + terminateAction.setText(msg); + terminateAction.setToolTipText(msg); + ImageDescriptor terminateImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_TERMINATE); + terminateAction.setImageDescriptor(terminateImage); + + stepIntoAction = new Action() { + @Override + public void run() { + debuggingController.stepIntoAction(); + } + }; + msg = (isJapanese) ? "�X�e�b�v�C��" : "Step Into"; + stepIntoAction.setText(msg); + stepIntoAction.setToolTipText(msg); + ImageDescriptor stepIntoImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_INTO); + stepIntoAction.setImageDescriptor(stepIntoImage); + + stepOverAction = new Action() { + @Override + public void run() { + debuggingController.stepOverAction(); + } + }; + msg = (isJapanese) ? "�X�e�b�v�I�[�o�[" : "Step Over"; + stepOverAction.setText(msg); + stepOverAction.setToolTipText(msg); + ImageDescriptor stepOverImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_OVER); + stepOverAction.setImageDescriptor(stepOverImage); + + stepReturnAction = new Action() { + @Override + public void run() { + debuggingController.stepReturnAction(); + } + }; + msg = (isJapanese) ? "�X�e�b�v���^�[��" : "Step Return"; + stepReturnAction.setText(msg); + stepReturnAction.setToolTipText(msg); + ImageDescriptor stepReturnImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_RETURN); + stepReturnAction.setImageDescriptor(stepReturnImage); + + stepNextAction = new Action() { + @Override + public void run() { + debuggingController.stepNextAction(); + } + }; + msg = (isJapanese) ? "�X�e�b�v�l�N�X�g" : "Step Next"; + stepNextAction.setText(msg); + stepNextAction.setToolTipText(msg); + ImageDescriptor stepNextIcon = registry.getDescriptor(STEP_NEXT_DLCL); + stepNextAction.setImageDescriptor(stepNextIcon); + + resumeAction = new Action() { + @Override + public void run() { + debuggingController.resumeAction(); + } + }; + msg = (isJapanese) ? "�ĊJ" : "Resume"; + resumeAction.setText(msg); + resumeAction.setToolTipText(msg); + ImageDescriptor image = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_RESUME); + resumeAction.setImageDescriptor(image); + } + + protected void createToolBar() { + IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); + mgr.add(fileOpenAction); + mgr.add(importBreakpointAction); + mgr.add(debugAction); + mgr.add(terminateAction); + mgr.add(resumeAction); + mgr.add(stepIntoAction); + mgr.add(stepOverAction); + mgr.add(stepReturnAction); + mgr.add(stepNextAction); + } + + protected void createMenuBar() { + IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); + mgr.add(fileOpenAction); + mgr.add(importBreakpointAction); + mgr.add(debugAction); + mgr.add(terminateAction); + mgr.add(resumeAction); + mgr.add(stepIntoAction); + mgr.add(stepOverAction); + mgr.add(stepReturnAction); + mgr.add(stepNextAction); + } + + private void createPopupMenu() { + MenuManager menuMgr = new MenuManager("#PopupMenu"); + menuMgr.setRemoveAllWhenShown(true); + menuMgr.addMenuListener(new IMenuListener() { + @Override + public void menuAboutToShow(IMenuManager manager) { + manager.add(addTraceBreakPointAction); + manager.add(removeTraceBreakPointAction); + manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); + } + }); + Menu menu = menuMgr.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(menuMgr, viewer); + } + + public TraceBreakPoints getTraceBreakPoints() { + return traceBreakPoints; + } + + public void reset() { + viewer.setInput(new ArrayList()); + viewer.refresh(); + updateImagesForDebug(false); + updateImagesForBreakPoint(false); + } + + public void updateTraceBreakPoints(TraceBreakPoints traceBreakPoints) { + this.traceBreakPoints = traceBreakPoints; + viewer.setInput(traceBreakPoints.getAllTraceBreakPoints()); + final Table table = viewer.getTable(); + for (TableItem item : table.getItems()) { + Object data = item.getData(); + if (data instanceof TraceBreakPoint) { + TraceBreakPoint tbp = (TraceBreakPoint)data; + boolean isAvailable = tbp.isAvailable(); + item.setChecked(isAvailable); + } + } + viewer.refresh(); + } + + 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); + stepIntoAction.setImageDescriptor(stepIntoImage); + ImageDescriptor stepOverImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_STEP_OVER); + 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); + stepIntoAction.setImageDescriptor(stepIntoImage); + ImageDescriptor stepOverImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_OVER); + 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 2ef6840..ca4bff2 100644 --- a/src/org/ntlab/traceDebugger/BreakPointViewRelatedDelta.java +++ b/src/org/ntlab/traceDebugger/BreakPointViewRelatedDelta.java @@ -1,163 +1,168 @@ -package org.ntlab.traceDebugger; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.swt.widgets.Composite; - -public class BreakPointViewRelatedDelta extends BreakPointView { - private IAction stepBackIntoAction; - private IAction stepBackOverAction; - private IAction stepBackReturnAction; - private IAction backResumeAction; - private DebuggingController debuggingController = DebuggingController.getInstance(); - public static final String ID = "org.ntlab.traceDebugger.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 = "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"; - - public BreakPointViewRelatedDelta() { - // TODO Auto-generated constructor stub - System.out.println("BreakPointViewRelatedDelta�N���X���������ꂽ��!"); - } - - @Override - public void createPartControl(Composite parent) { - // TODO Auto-generated method stub - System.out.println("BreakPointViewRelatedDelta#createPartControl(Composite)���Ă΂ꂽ��!"); - super.createPartControl(parent); - TraceDebuggerPlugin.setActiveView(ID, this); - } - - @Override - public void setFocus() { - // TODO Auto-generated method stub - TraceDebuggerPlugin.setActiveView(ID, this); - viewer.getControl().setFocus(); - } - - @Override - protected void createActions() { - super.createActions(); - ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry(); - boolean isJapanese = TraceDebuggerPlugin.isJapanese(); - String msg; - - backResumeAction = new Action() { - @Override - public void run() { - debuggingController.backResumeAction(); - } - }; - msg = (isJapanese) ? "�t�����ɍĊJ" : "Back Resume"; - backResumeAction.setText(msg); - backResumeAction.setToolTipText(msg); - ImageDescriptor backResumeIcon = registry.getDescriptor(BACK_RESUME_DLCL); - backResumeAction.setImageDescriptor(backResumeIcon); - - stepBackIntoAction = new Action() { - @Override - public void run() { - debuggingController.stepBackIntoAction(); - } - }; - 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); - - stepBackOverAction = new Action() { - @Override - public void run() { - debuggingController.stepBackOverAction(); - } - }; - 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); - - stepBackReturnAction = new Action() { - @Override - public void run() { - debuggingController.stepBackReturnAction(); - } - }; - 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); - } - - @Override - protected void createToolBar() { - IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); - mgr.add(fileOpenAction); - mgr.add(importBreakpointAction); - mgr.add(debugAction); - mgr.add(stepBackReturnAction); - mgr.add(stepBackOverAction); - mgr.add(stepBackIntoAction); - mgr.add(backResumeAction); - mgr.add(terminateAction); - mgr.add(resumeAction); - mgr.add(stepIntoAction); - mgr.add(stepOverAction); - mgr.add(stepReturnAction); - mgr.add(stepNextAction); - } - - @Override - protected void createMenuBar() { - IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); - mgr.add(fileOpenAction); - mgr.add(importBreakpointAction); - mgr.add(debugAction); - mgr.add(stepBackReturnAction); - mgr.add(stepBackOverAction); - mgr.add(stepBackIntoAction); - mgr.add(backResumeAction); - mgr.add(terminateAction); - mgr.add(resumeAction); - mgr.add(stepIntoAction); - mgr.add(stepOverAction); - mgr.add(stepReturnAction); - mgr.add(stepNextAction); - } - - @Override - public void updateImagesForDebug(boolean isRunning) { - super.updateImagesForDebug(isRunning); - ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry(); - if (isRunning) { - ImageDescriptor stepBackIntoImage = registry.getDescriptor(STEP_BACK_INTO_ELCL); - stepBackIntoAction.setImageDescriptor(stepBackIntoImage); - ImageDescriptor stepBackOverImage = registry.getDescriptor(STEP_BACK_OVER_ELCL); - stepBackOverAction.setImageDescriptor(stepBackOverImage); - ImageDescriptor stepBackReturnImage = registry.getDescriptor(STEP_BACK_RETURN_ELCL); - stepBackReturnAction.setImageDescriptor(stepBackReturnImage); - ImageDescriptor backResumeImage = registry.getDescriptor(BACK_RESUME_ELCL); - backResumeAction.setImageDescriptor(backResumeImage); - } else { - ImageDescriptor stepBackIntoImage = registry.getDescriptor(STEP_BACK_INTO_DLCL); - stepBackIntoAction.setImageDescriptor(stepBackIntoImage); - ImageDescriptor stepBackOverImage = registry.getDescriptor(STEP_BACK_OVER_DLCL); - stepBackOverAction.setImageDescriptor(stepBackOverImage); - ImageDescriptor stepBackReturnImage = registry.getDescriptor(STEP_BACK_RETURN_DLCL); - stepBackReturnAction.setImageDescriptor(stepBackReturnImage); - ImageDescriptor backResumeImage = registry.getDescriptor(BACK_RESUME_DLCL); - backResumeAction.setImageDescriptor(backResumeImage); - } - } -} +package org.ntlab.traceDebugger; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.ImageRegistry; +import org.eclipse.swt.widgets.Composite; + +public class BreakPointViewRelatedDelta extends BreakPointView { + private IAction stepBackIntoAction; + private IAction stepBackOverAction; + private IAction stepBackReturnAction; + private IAction backResumeAction; + private DebuggingController debuggingController = DebuggingController.getInstance(); + public static final String ID = "org.ntlab.traceDebugger.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 = "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"; + + public BreakPointViewRelatedDelta() { + // TODO Auto-generated constructor stub + System.out.println("BreakPointViewRelatedDelta�N���X���������ꂽ��!"); + } + + @Override + public void createPartControl(Composite parent) { + // TODO Auto-generated method stub + System.out.println("BreakPointViewRelatedDelta#createPartControl(Composite)���Ă΂ꂽ��!"); + super.createPartControl(parent); + TraceDebuggerPlugin.setActiveView(ID, this); + } + + @Override + public void setFocus() { + // TODO Auto-generated method stub + TraceDebuggerPlugin.setActiveView(ID, this); + viewer.getControl().setFocus(); + } + + @Override + public void dispose() { + TraceDebuggerPlugin.removeView(ID, this); + } + + @Override + protected void createActions() { + super.createActions(); + ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry(); + boolean isJapanese = TraceDebuggerPlugin.isJapanese(); + String msg; + + backResumeAction = new Action() { + @Override + public void run() { + debuggingController.backResumeAction(); + } + }; + msg = (isJapanese) ? "�t�����ɍĊJ" : "Back Resume"; + backResumeAction.setText(msg); + backResumeAction.setToolTipText(msg); + ImageDescriptor backResumeIcon = registry.getDescriptor(BACK_RESUME_DLCL); + backResumeAction.setImageDescriptor(backResumeIcon); + + stepBackIntoAction = new Action() { + @Override + public void run() { + debuggingController.stepBackIntoAction(); + } + }; + 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); + + stepBackOverAction = new Action() { + @Override + public void run() { + debuggingController.stepBackOverAction(); + } + }; + 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); + + stepBackReturnAction = new Action() { + @Override + public void run() { + debuggingController.stepBackReturnAction(); + } + }; + 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); + } + + @Override + protected void createToolBar() { + IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); + mgr.add(fileOpenAction); + mgr.add(importBreakpointAction); + mgr.add(debugAction); + mgr.add(stepBackReturnAction); + mgr.add(stepBackOverAction); + mgr.add(stepBackIntoAction); + mgr.add(backResumeAction); + mgr.add(terminateAction); + mgr.add(resumeAction); + mgr.add(stepIntoAction); + mgr.add(stepOverAction); + mgr.add(stepReturnAction); + mgr.add(stepNextAction); + } + + @Override + protected void createMenuBar() { + IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); + mgr.add(fileOpenAction); + mgr.add(importBreakpointAction); + mgr.add(debugAction); + mgr.add(stepBackReturnAction); + mgr.add(stepBackOverAction); + mgr.add(stepBackIntoAction); + mgr.add(backResumeAction); + mgr.add(terminateAction); + mgr.add(resumeAction); + mgr.add(stepIntoAction); + mgr.add(stepOverAction); + mgr.add(stepReturnAction); + mgr.add(stepNextAction); + } + + @Override + public void updateImagesForDebug(boolean isRunning) { + super.updateImagesForDebug(isRunning); + ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry(); + if (isRunning) { + ImageDescriptor stepBackIntoImage = registry.getDescriptor(STEP_BACK_INTO_ELCL); + stepBackIntoAction.setImageDescriptor(stepBackIntoImage); + ImageDescriptor stepBackOverImage = registry.getDescriptor(STEP_BACK_OVER_ELCL); + stepBackOverAction.setImageDescriptor(stepBackOverImage); + ImageDescriptor stepBackReturnImage = registry.getDescriptor(STEP_BACK_RETURN_ELCL); + stepBackReturnAction.setImageDescriptor(stepBackReturnImage); + ImageDescriptor backResumeImage = registry.getDescriptor(BACK_RESUME_ELCL); + backResumeAction.setImageDescriptor(backResumeImage); + } else { + ImageDescriptor stepBackIntoImage = registry.getDescriptor(STEP_BACK_INTO_DLCL); + stepBackIntoAction.setImageDescriptor(stepBackIntoImage); + ImageDescriptor stepBackOverImage = registry.getDescriptor(STEP_BACK_OVER_DLCL); + stepBackOverAction.setImageDescriptor(stepBackOverImage); + ImageDescriptor stepBackReturnImage = registry.getDescriptor(STEP_BACK_RETURN_DLCL); + stepBackReturnAction.setImageDescriptor(stepBackReturnImage); + ImageDescriptor backResumeImage = registry.getDescriptor(BACK_RESUME_DLCL); + backResumeAction.setImageDescriptor(backResumeImage); + } + } +} diff --git a/src/org/ntlab/traceDebugger/CallStackView.java b/src/org/ntlab/traceDebugger/CallStackView.java index 29fa785..028eaa7 100644 --- a/src/org/ntlab/traceDebugger/CallStackView.java +++ b/src/org/ntlab/traceDebugger/CallStackView.java @@ -73,6 +73,11 @@ viewer.getControl().setFocus(); } + @Override + public void dispose() { + TraceDebuggerPlugin.removeView(ID, this); + } + protected void createActions() { } diff --git a/src/org/ntlab/traceDebugger/CallStackViewRelatedDelta.java b/src/org/ntlab/traceDebugger/CallStackViewRelatedDelta.java index 677fe67..a4b3140 100644 --- a/src/org/ntlab/traceDebugger/CallStackViewRelatedDelta.java +++ b/src/org/ntlab/traceDebugger/CallStackViewRelatedDelta.java @@ -1,111 +1,116 @@ -package org.ntlab.traceDebugger; - -import java.util.List; -import java.util.Map; - -import org.eclipse.core.resources.IMarker; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IMenuListener; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.ui.IWorkbenchActionConstants; -import org.eclipse.ui.IWorkbenchPage; -import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; -import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; -import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager; - -public class CallStackViewRelatedDelta extends CallStackView { - private IAction deltaAction; - public static final String ID = "org.ntlab.traceDebugger.callStackViewRelatedDelta"; - - public CallStackViewRelatedDelta() { - // TODO Auto-generated constructor stub - System.out.println("callStackViewRelatedDelta�N���X���������ꂽ��"); - } - - @Override - public void createPartControl(Composite parent) { - // TODO Auto-generated method stub - System.out.println("CallStackViewRelatedDelta#createPartControl(Composite)���Ă΂ꂽ��!"); - super.createPartControl(parent); - TraceDebuggerPlugin.setActiveView(ID, this); - } - - @Override - public void setFocus() { - // TODO Auto-generated method stub - TraceDebuggerPlugin.setActiveView(ID, this); - viewer.getControl().setFocus(); - } - - @Override - protected void createActions() { - deltaAction = new Action() { - @Override - public void run() { - if (selectionCallStackModel != null) { - MethodExecution callee = selectionCallStackModel.getMethodExecution(); - MethodExecution caller = callee.getParent(); - String callerClassName = caller.getThisClassName(); - String callerId = caller.getThisObjId(); - String calleeClassName = callee.getThisClassName(); - String calleeId = callee.getThisObjId(); - TracePoint before = callee.getCallerTracePoint(); - DeltaMarkerView newDeltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.createNewView(DeltaMarkerView.ID, IWorkbenchPage.VIEW_ACTIVATE); - newDeltaMarkerView.extractDeltaForThisToAnother(callerId, callerClassName, calleeId, calleeClassName, before); - } - } - }; - deltaAction.setText("Extract Delta"); - deltaAction.setToolTipText("Extract Delta"); - } - - protected void createPopupMenu() { - MenuManager menuMgr = new MenuManager("#PopupMenu"); - menuMgr.setRemoveAllWhenShown(true); - menuMgr.addMenuListener(new IMenuListener() { - @Override - public void menuAboutToShow(IMenuManager manager) { - if (selectionCallStackModel != null) { - MethodExecution callee = selectionCallStackModel.getMethodExecution(); - MethodExecution caller = callee.getParent(); - String callerId = caller.getThisObjId(); - String callerClassName = caller.getThisClassName(); - callerClassName = callerClassName.substring(callerClassName.lastIndexOf(".") + 1); - String calleeId = callee.getThisObjId(); - String calleeClassName = callee.getThisClassName(); - calleeClassName = calleeClassName.substring(calleeClassName.lastIndexOf(".") + 1); - String 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); - manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - } - } - }); - Menu menu = menuMgr.createContextMenu(viewer.getControl()); - viewer.getControl().setMenu(menu); - getSite().registerContextMenu(menuMgr, viewer); - } - - @Override - protected void additonalActionOnSelectionChanged(CallStackModel selectedCallStackModel) { - super.additonalActionOnSelectionChanged(selectedCallStackModel); - DeltaMarkerView deltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.getActiveView(DeltaMarkerView.ID); - if (deltaMarkerView != null) { - DeltaMarkerManager deltaMarkerManager = deltaMarkerView.getDeltaMarkerManager(); - if (deltaMarkerManager != null) { - Map> deltaMarkers = deltaMarkerManager.getMarkers(); - if (deltaMarkers != null) { - VariableViewRelatedDelta variableView = (VariableViewRelatedDelta)TraceDebuggerPlugin.getActiveView(VariableViewRelatedDelta.ID); - variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkers); - } - } - } - } -} +package org.ntlab.traceDebugger; + +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.IWorkbenchPage; +import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; +import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; +import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager; + +public class CallStackViewRelatedDelta extends CallStackView { + private IAction deltaAction; + public static final String ID = "org.ntlab.traceDebugger.callStackViewRelatedDelta"; + + public CallStackViewRelatedDelta() { + // TODO Auto-generated constructor stub + System.out.println("callStackViewRelatedDelta�N���X���������ꂽ��"); + } + + @Override + public void createPartControl(Composite parent) { + // TODO Auto-generated method stub + System.out.println("CallStackViewRelatedDelta#createPartControl(Composite)���Ă΂ꂽ��!"); + super.createPartControl(parent); + TraceDebuggerPlugin.setActiveView(ID, this); + } + + @Override + public void setFocus() { + // TODO Auto-generated method stub + TraceDebuggerPlugin.setActiveView(ID, this); + viewer.getControl().setFocus(); + } + + @Override + public void dispose() { + TraceDebuggerPlugin.removeView(ID, this); + } + + @Override + protected void createActions() { + deltaAction = new Action() { + @Override + public void run() { + if (selectionCallStackModel != null) { + MethodExecution callee = selectionCallStackModel.getMethodExecution(); + MethodExecution caller = callee.getParent(); + String callerClassName = caller.getThisClassName(); + String callerId = caller.getThisObjId(); + String calleeClassName = callee.getThisClassName(); + String calleeId = callee.getThisObjId(); + TracePoint before = callee.getCallerTracePoint(); + DeltaMarkerView newDeltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.createNewView(DeltaMarkerView.ID, IWorkbenchPage.VIEW_ACTIVATE); + newDeltaMarkerView.extractDeltaForThisToAnother(callerId, callerClassName, calleeId, calleeClassName, before); + } + } + }; + deltaAction.setText("Extract Delta"); + deltaAction.setToolTipText("Extract Delta"); + } + + protected void createPopupMenu() { + MenuManager menuMgr = new MenuManager("#PopupMenu"); + menuMgr.setRemoveAllWhenShown(true); + menuMgr.addMenuListener(new IMenuListener() { + @Override + public void menuAboutToShow(IMenuManager manager) { + if (selectionCallStackModel != null) { + MethodExecution callee = selectionCallStackModel.getMethodExecution(); + MethodExecution caller = callee.getParent(); + String callerId = caller.getThisObjId(); + String callerClassName = caller.getThisClassName(); + callerClassName = callerClassName.substring(callerClassName.lastIndexOf(".") + 1); + String calleeId = callee.getThisObjId(); + String calleeClassName = callee.getThisClassName(); + calleeClassName = calleeClassName.substring(calleeClassName.lastIndexOf(".") + 1); + String 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); + manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); + } + } + }); + Menu menu = menuMgr.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(menuMgr, viewer); + } + + @Override + protected void additonalActionOnSelectionChanged(CallStackModel selectedCallStackModel) { + super.additonalActionOnSelectionChanged(selectedCallStackModel); + DeltaMarkerView deltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.getActiveView(DeltaMarkerView.ID); + if (deltaMarkerView != null) { + DeltaMarkerManager deltaMarkerManager = deltaMarkerView.getDeltaMarkerManager(); + if (deltaMarkerManager != null) { + Map> deltaMarkers = deltaMarkerManager.getMarkers(); + if (deltaMarkers != null) { + VariableViewRelatedDelta variableView = (VariableViewRelatedDelta)TraceDebuggerPlugin.getActiveView(VariableViewRelatedDelta.ID); + variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkers); + } + } + } + } +} diff --git a/src/org/ntlab/traceDebugger/CallTreeView.java b/src/org/ntlab/traceDebugger/CallTreeView.java index d79a2a6..704413a 100644 --- a/src/org/ntlab/traceDebugger/CallTreeView.java +++ b/src/org/ntlab/traceDebugger/CallTreeView.java @@ -1,123 +1,128 @@ -package org.ntlab.traceDebugger; - -import java.util.List; - -import org.eclipse.core.resources.IMarker; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.TreeNode; -import org.eclipse.jface.viewers.TreeNodeContentProvider; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.swt.widgets.Composite; -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.DeltaMarkerManager; - -public class CallTreeView extends ViewPart { - private TreeViewer viewer; - private CallTreeModels callTreeModels = new CallTreeModels(); - public static final String ID = "org.ntlab.traceDebugger.callTreeView"; - - public CallTreeView() { - // TODO Auto-generated constructor stub - System.out.println("callTreeView�N���X���������ꂽ��"); - } - - @Override - public void createPartControl(Composite parent) { - // TODO Auto-generated method stub - System.out.println("CallTreeView#createPartControl(Composite)���Ă΂ꂽ��!"); - viewer = new TreeViewer(parent); - viewer.setContentProvider(new TreeNodeContentProvider()); - viewer.setLabelProvider(new CallTreeLabelProvider()); - - // �I�������J�����ɑΉ����郁�\�b�h���s�̃\�[�X�t�@�C�����J�����郊�X�i�[��o�^���� - viewer.addSelectionChangedListener(new ISelectionChangedListener() { - @Override - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection sel = (IStructuredSelection)event.getSelection(); - Object element = sel.getFirstElement(); - if (!(element instanceof TreeNode)) return; - Object value = ((TreeNode)element).getValue(); - if (!(value instanceof CallTreeModel)) return; - CallTreeModel callTreeModel = (CallTreeModel)value; - MethodExecution methodExecution = callTreeModel.getMethodExecution(); - TracePoint tp = methodExecution.getEntryPoint(); - - if ((DebuggingController.getInstance().isRunning())) { - highlight(methodExecution); - DebuggingController controller = DebuggingController.getInstance(); - controller.jumpToTheTracePoint(tp, false); - CallStackViewRelatedDelta callStackView = (CallStackViewRelatedDelta)TraceDebuggerPlugin.getActiveView(CallStackViewRelatedDelta.ID); - VariableViewRelatedDelta variableView = ((VariableViewRelatedDelta)TraceDebuggerPlugin.getActiveView(VariableViewRelatedDelta.ID)); - DeltaMarkerView deltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.getActiveView(DeltaMarkerView.ID); - DeltaMarkerManager deltaMarkerManager = deltaMarkerView.getDeltaMarkerManager(); - IMarker coodinatorMarker = deltaMarkerManager.getCoordinatorDeltaMarker(); - MethodExecution coordinatorME = DeltaMarkerManager.getMethodExecution(coodinatorMarker); - if (coordinatorME != null) callStackView.highlight((MethodExecution)coordinatorME); - variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkerManager.getMarkers()); - } else { - int lineNo = tp.getStatement().getLineNo(); - JavaEditorOperator.openSrcFileOfMethodExecution(methodExecution, lineNo); - } - } - }); - createActions(); - createToolBar(); - createMenuBar(); - TraceDebuggerPlugin.setActiveView(ID, this); - } - - @Override - public String getTitle() { - return TraceDebuggerPlugin.isJapanese() ? "���݂̎��s���_" : "CurrentExecutionPoint"; - } - - @Override - public void setFocus() { - // TODO Auto-generated method stub - TraceDebuggerPlugin.setActiveView(ID, this); - viewer.getControl().setFocus(); - } - - private void createActions() { - - } - - private void createToolBar() { - IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); - } - - private void createMenuBar() { - IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); - } - - public void update(DeltaMarkerManager deltaMarkerManager) { - callTreeModels.update(deltaMarkerManager); - viewer.setInput(callTreeModels.getCallTreeModels()); - viewer.expandAll(); - } - - public void highlight(MethodExecution theMe) { - List callTreeModelList = callTreeModels.getCallTreeModelList(); - for (CallTreeModel callTreeModel : callTreeModelList) { - MethodExecution me = callTreeModel.getMethodExecution(); - callTreeModel.setHighlighting(me.equals(theMe)); - } - viewer.refresh(); - } - - public void refresh() { - - } - - public void reset() { - callTreeModels.reset(); - viewer.setInput(callTreeModels.getCallTreeModelList()); - viewer.refresh(); - } -} +package org.ntlab.traceDebugger; + +import java.util.List; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.TreeNode; +import org.eclipse.jface.viewers.TreeNodeContentProvider; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.swt.widgets.Composite; +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.DeltaMarkerManager; + +public class CallTreeView extends ViewPart { + private TreeViewer viewer; + private CallTreeModels callTreeModels = new CallTreeModels(); + public static final String ID = "org.ntlab.traceDebugger.callTreeView"; + + public CallTreeView() { + // TODO Auto-generated constructor stub + System.out.println("callTreeView�N���X���������ꂽ��"); + } + + @Override + public void createPartControl(Composite parent) { + // TODO Auto-generated method stub + System.out.println("CallTreeView#createPartControl(Composite)���Ă΂ꂽ��!"); + viewer = new TreeViewer(parent); + viewer.setContentProvider(new TreeNodeContentProvider()); + viewer.setLabelProvider(new CallTreeLabelProvider()); + + // �I�������J�����ɑΉ����郁�\�b�h���s�̃\�[�X�t�@�C�����J�����郊�X�i�[��o�^���� + viewer.addSelectionChangedListener(new ISelectionChangedListener() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection sel = (IStructuredSelection)event.getSelection(); + Object element = sel.getFirstElement(); + if (!(element instanceof TreeNode)) return; + Object value = ((TreeNode)element).getValue(); + if (!(value instanceof CallTreeModel)) return; + CallTreeModel callTreeModel = (CallTreeModel)value; + MethodExecution methodExecution = callTreeModel.getMethodExecution(); + TracePoint tp = methodExecution.getEntryPoint(); + + if ((DebuggingController.getInstance().isRunning())) { + highlight(methodExecution); + DebuggingController controller = DebuggingController.getInstance(); + controller.jumpToTheTracePoint(tp, false); + CallStackViewRelatedDelta callStackView = (CallStackViewRelatedDelta)TraceDebuggerPlugin.getActiveView(CallStackViewRelatedDelta.ID); + VariableViewRelatedDelta variableView = ((VariableViewRelatedDelta)TraceDebuggerPlugin.getActiveView(VariableViewRelatedDelta.ID)); + DeltaMarkerView deltaMarkerView = (DeltaMarkerView)TraceDebuggerPlugin.getActiveView(DeltaMarkerView.ID); + DeltaMarkerManager deltaMarkerManager = deltaMarkerView.getDeltaMarkerManager(); + IMarker coodinatorMarker = deltaMarkerManager.getCoordinatorDeltaMarker(); + MethodExecution coordinatorME = DeltaMarkerManager.getMethodExecution(coodinatorMarker); + if (coordinatorME != null) callStackView.highlight((MethodExecution)coordinatorME); + variableView.markAndExpandVariablesByDeltaMarkers(deltaMarkerManager.getMarkers()); + } else { + int lineNo = tp.getStatement().getLineNo(); + JavaEditorOperator.openSrcFileOfMethodExecution(methodExecution, lineNo); + } + } + }); + createActions(); + createToolBar(); + createMenuBar(); + TraceDebuggerPlugin.setActiveView(ID, this); + } + + @Override + public String getTitle() { + return TraceDebuggerPlugin.isJapanese() ? "���݂̎��s���_" : "CurrentExecutionPoint"; + } + + @Override + public void setFocus() { + // TODO Auto-generated method stub + TraceDebuggerPlugin.setActiveView(ID, this); + viewer.getControl().setFocus(); + } + + @Override + public void dispose() { + TraceDebuggerPlugin.removeView(ID, this); + } + + private void createActions() { + + } + + private void createToolBar() { + IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); + } + + private void createMenuBar() { + IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); + } + + public void update(DeltaMarkerManager deltaMarkerManager) { + callTreeModels.update(deltaMarkerManager); + viewer.setInput(callTreeModels.getCallTreeModels()); + viewer.expandAll(); + } + + public void highlight(MethodExecution theMe) { + List callTreeModelList = callTreeModels.getCallTreeModelList(); + for (CallTreeModel callTreeModel : callTreeModelList) { + MethodExecution me = callTreeModel.getMethodExecution(); + callTreeModel.setHighlighting(me.equals(theMe)); + } + viewer.refresh(); + } + + public void refresh() { + + } + + public void reset() { + callTreeModels.reset(); + viewer.setInput(callTreeModels.getCallTreeModelList()); + viewer.refresh(); + } +} diff --git a/src/org/ntlab/traceDebugger/DeltaMarkerView.java b/src/org/ntlab/traceDebugger/DeltaMarkerView.java index 0dbc9e3..5951359 100644 --- a/src/org/ntlab/traceDebugger/DeltaMarkerView.java +++ b/src/org/ntlab/traceDebugger/DeltaMarkerView.java @@ -136,6 +136,7 @@ CallStackViewRelatedDelta callStackView = ((CallStackViewRelatedDelta)TraceDebuggerPlugin.getActiveView(CallStackViewRelatedDelta.ID)); callStackView.removeHighlight(); deltaMarkerManager.clearAllMarkers(); + TraceDebuggerPlugin.removeView(ID, this); super.dispose(); } diff --git a/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java b/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java index 4c1399c..7f030f5 100644 --- a/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java +++ b/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java @@ -1,148 +1,156 @@ -package org.ntlab.traceDebugger; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.ui.IViewPart; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.ntlab.traceDebugger.analyzerProvider.AbstractAnalyzer; -import org.osgi.framework.BundleContext; - -/** - * The activator class controls the plug-in life cycle - */ -public class TraceDebuggerPlugin extends AbstractUIPlugin { - - // The plug-in ID - public static final String PLUGIN_ID = "org.ntlab.traceDebugger"; //$NON-NLS-1$ - - private static AbstractAnalyzer analyzer; - - private static int uniqueIdForViews = 0; - - private static Map> viewIdToAllViews = new HashMap<>(); - - private static Map viewIdToActiveView = new HashMap<>(); - - // The shared instance - private static TraceDebuggerPlugin plugin; - - private static boolean isJapanese = true; - - /** - * The constructor - */ - public TraceDebuggerPlugin() { - } - - /* - * (non-Javadoc) - * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) - */ - public void start(BundleContext context) throws Exception { - super.start(context); - plugin = this; - } - - /* - * (non-Javadoc) - * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) - */ - public void stop(BundleContext context) throws Exception { - plugin = null; - super.stop(context); - } - - /** - * Returns the shared instance - * - * @return the shared instance - */ - public static TraceDebuggerPlugin getDefault() { - return plugin; - } - - public static AbstractAnalyzer getAnalyzer() { - return analyzer; - } - - public static IViewPart getActiveView(String viewId) { - return viewIdToActiveView.get(viewId); - } - - public static Map> getAllViews() { - return viewIdToAllViews; - } - - public static Set getViews(String viewId) { - return viewIdToAllViews.get(viewId); - } - - public static void setAnalyzer(AbstractAnalyzer analyzer) { - TraceDebuggerPlugin.analyzer = analyzer; - } - - public static void setActiveView(String viewId, IViewPart activeView) { - viewIdToActiveView.put(viewId, activeView); - addView(viewId, activeView); - } - - private static void addView(String viewId, IViewPart view) { - Set views = viewIdToAllViews.get(viewId); - if (views == null) { - views = new HashSet(); - viewIdToAllViews.put(viewId, views); - } - views.add(view); - } - - public static IViewPart createNewView(String viewId, int mode) { - String secondaryId = "View" + (uniqueIdForViews++); - IWorkbenchPage workbenchPage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - try { - return workbenchPage.showView(viewId, secondaryId, mode); - } catch (PartInitException e) { - throw new RuntimeException(e); - } - } - - @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")); - reg.put(BreakPointViewRelatedDelta.STEP_BACK_OVER_DLCL, getImageDescriptor("/icons/debug/stepbackover_dlcl.png")); - 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")); - - // 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; - } -} +package org.ntlab.traceDebugger; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.ImageRegistry; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.ntlab.traceDebugger.analyzerProvider.AbstractAnalyzer; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class TraceDebuggerPlugin extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "org.ntlab.traceDebugger"; //$NON-NLS-1$ + + private static AbstractAnalyzer analyzer; + + private static int uniqueIdForViews = 0; + + private static Map> viewIdToAllViews = new HashMap<>(); + + private static Map viewIdToActiveView = new HashMap<>(); + + // The shared instance + private static TraceDebuggerPlugin plugin; + + private static boolean isJapanese = true; + + /** + * The constructor + */ + public TraceDebuggerPlugin() { + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static TraceDebuggerPlugin getDefault() { + return plugin; + } + + public static AbstractAnalyzer getAnalyzer() { + return analyzer; + } + + public static IViewPart getActiveView(String viewId) { + return viewIdToActiveView.get(viewId); + } + + public static Map> getAllViews() { + return viewIdToAllViews; + } + + public static Set getViews(String viewId) { + return viewIdToAllViews.get(viewId); + } + + public static void setAnalyzer(AbstractAnalyzer analyzer) { + TraceDebuggerPlugin.analyzer = analyzer; + } + + public static void setActiveView(String viewId, IViewPart activeView) { + viewIdToActiveView.put(viewId, activeView); + addView(viewId, activeView); + } + + private static void addView(String viewId, IViewPart view) { + Set views = viewIdToAllViews.get(viewId); + if (views == null) { + views = new HashSet(); + viewIdToAllViews.put(viewId, views); + } + views.add(view); + } + + public static IViewPart createNewView(String viewId, int mode) { + String secondaryId = "View" + (uniqueIdForViews++); + IWorkbenchPage workbenchPage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + try { + return workbenchPage.showView(viewId, secondaryId, mode); + } catch (PartInitException e) { + throw new RuntimeException(e); + } + } + + public static void removeView(String viewId, IViewPart view) { + viewIdToActiveView.remove(viewId, view); + Set views = viewIdToAllViews.get(viewId); + if (views != null) { + views.remove(view); + } + } + + @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")); + reg.put(BreakPointViewRelatedDelta.STEP_BACK_OVER_DLCL, getImageDescriptor("/icons/debug/stepbackover_dlcl.png")); + 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")); + + // 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/TracePointsView.java b/src/org/ntlab/traceDebugger/TracePointsView.java index f561e17..dff8ced 100644 --- a/src/org/ntlab/traceDebugger/TracePointsView.java +++ b/src/org/ntlab/traceDebugger/TracePointsView.java @@ -1,207 +1,212 @@ -package org.ntlab.traceDebugger; - -import java.util.List; - -import org.eclipse.core.resources.IMarker; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IMenuListener; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IDoubleClickListener; -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.widgets.Composite; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.ui.part.ViewPart; -import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; -import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; - -public class TracePointsView extends ViewPart { - private TableViewer viewer; - private Shell shell; - private IAction addAction; - private IAction removeAction; - private IAction jumpAction; - private TracePoint selectedTp; - private TracePoints tracePoints = new TracePoints(); - public static final String ID = "org.ntlab.traceDebugger.tracePointsView"; - - public TracePointsView() { - // TODO Auto-generated constructor stub - System.out.println("BreakPointView�N���X���������ꂽ��!"); - } - - @Override - public void createPartControl(Composite parent) { - // TODO Auto-generated method stub - System.out.println("TracePointsView#createPartControl(Composite)���Ă΂ꂽ��!"); - shell = parent.getShell(); - viewer = new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION); - Table table = viewer.getTable(); - table.setHeaderVisible(true); - table.setLinesVisible(true); - - // �e�[�u���̃J�������쐬 - 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++) { - tableColumns[i] = new TableColumn(table, SWT.NULL); - tableColumns[i].setText(tableColumnTexts[i]); - tableColumns[i].setWidth(tableColumnWidth[i]); - } - viewer.setContentProvider(new ArrayContentProvider()); - viewer.setLabelProvider(new TracePointsLabelProvider()); - viewer.addSelectionChangedListener(new ISelectionChangedListener() { - @Override - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection sel = (IStructuredSelection)event.getSelection(); - Object element = sel.getFirstElement(); - if (element instanceof TracePoint) { - selectedTp = (TracePoint)element; - MethodExecution me = selectedTp.getMethodExecution(); - int lineNo = selectedTp.getStatement().getLineNo(); - JavaEditorOperator.openSrcFileOfMethodExecution(me, lineNo); - } - } - }); - viewer.addDoubleClickListener(new IDoubleClickListener() { - @Override - public void doubleClick(DoubleClickEvent event) { - IStructuredSelection sel = (IStructuredSelection)event.getSelection(); - Object element = sel.getFirstElement(); - if (element instanceof TracePoint) { - selectedTp = (TracePoint)element; - if (DebuggingController.getInstance().isRunning()) { - jumpToTheTracePoint(selectedTp); - } - } - } - }); - - createActions(); - createToolBar(); - createMenuBar(); - createPopupMenu(); - TraceDebuggerPlugin.setActiveView(ID, this); - } - - @Override - public String getTitle() { - return TraceDebuggerPlugin.isJapanese() ? "���s���_�̓o�^" : "MarkedExecutionPoints"; - } - - @Override - public void setFocus() { - // TODO Auto-generated method stub - TraceDebuggerPlugin.setActiveView(ID, this); - viewer.getControl().setFocus(); - } - - private void createActions() { - boolean isJapanese = TraceDebuggerPlugin.isJapanese(); - String msg; - - addAction = new Action() { - @Override - public void run() { - DebuggingController debuggingController = DebuggingController.getInstance(); - TracePoint currentTp = debuggingController.getCurrentTp(); - addTracePoint(currentTp); - } - }; - msg = (isJapanese) ? "�lj�" : "Add"; - addAction.setText(msg); - addAction.setToolTipText(msg); - - removeAction = new Action() { - @Override - public void run() { - if (selectedTp != null) { - tracePoints.remove(selectedTp); - update(); - } - } - }; - msg = (isJapanese) ? "�폜" : "Remove"; - removeAction.setText(msg); - removeAction.setToolTipText(msg); - - jumpAction = new Action() { - @Override - public void run() { - if (selectedTp != null && DebuggingController.getInstance().isRunning()) { - jumpToTheTracePoint(selectedTp); - } - } - }; - msg = (isJapanese) ? "�W�����v" : "Jump"; - jumpAction.setText(msg); - jumpAction.setToolTipText(msg); - } - - private void createToolBar() { - IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); - mgr.add(addAction); - mgr.add(removeAction); - mgr.add(jumpAction); - } - - private void createMenuBar() { - IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); - mgr.add(addAction); - mgr.add(removeAction); - mgr.add(jumpAction); - } - - private void createPopupMenu() { - MenuManager menuMgr = new MenuManager("#PopupMenu"); - menuMgr.setRemoveAllWhenShown(true); - menuMgr.addMenuListener(new IMenuListener() { - @Override - public void menuAboutToShow(IMenuManager manager) { -// manager.add(addAction); -// manager.add(removeAction); -// manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - } - }); - Menu menu = menuMgr.createContextMenu(viewer.getControl()); - viewer.getControl().setMenu(menu); - getSite().registerContextMenu(menuMgr, viewer); - } - - public void addTracePoint(TracePoint tp) { - if (!(tracePoints.contains(tp))) { - tracePoints.add(tp); - update(); - } - } - - public void reset() { - tracePoints.clear(); - update(); - } - - private void update() { - viewer.setInput(tracePoints.getToArray()); - viewer.refresh(); - } - - protected void jumpToTheTracePoint(TracePoint tp) { - DebuggingController debuggingController = DebuggingController.getInstance(); - debuggingController.jumpToTheTracePoint(tp, false); - List markers = DebuggingController.getInstance().createCurrentLineMarkers(tp); - if (!(markers.isEmpty())) JavaEditorOperator.markAndOpenJavaFile(markers.get(0)); - } +package org.ntlab.traceDebugger; + +import java.util.List; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +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.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.ui.part.ViewPart; +import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; +import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; + +public class TracePointsView extends ViewPart { + private TableViewer viewer; + private Shell shell; + private IAction addAction; + private IAction removeAction; + private IAction jumpAction; + private TracePoint selectedTp; + private TracePoints tracePoints = new TracePoints(); + public static final String ID = "org.ntlab.traceDebugger.tracePointsView"; + + public TracePointsView() { + // TODO Auto-generated constructor stub + System.out.println("BreakPointView�N���X���������ꂽ��!"); + } + + @Override + public void createPartControl(Composite parent) { + // TODO Auto-generated method stub + System.out.println("TracePointsView#createPartControl(Composite)���Ă΂ꂽ��!"); + shell = parent.getShell(); + viewer = new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION); + Table table = viewer.getTable(); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + // �e�[�u���̃J�������쐬 + 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++) { + tableColumns[i] = new TableColumn(table, SWT.NULL); + tableColumns[i].setText(tableColumnTexts[i]); + tableColumns[i].setWidth(tableColumnWidth[i]); + } + viewer.setContentProvider(new ArrayContentProvider()); + viewer.setLabelProvider(new TracePointsLabelProvider()); + viewer.addSelectionChangedListener(new ISelectionChangedListener() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection sel = (IStructuredSelection)event.getSelection(); + Object element = sel.getFirstElement(); + if (element instanceof TracePoint) { + selectedTp = (TracePoint)element; + MethodExecution me = selectedTp.getMethodExecution(); + int lineNo = selectedTp.getStatement().getLineNo(); + JavaEditorOperator.openSrcFileOfMethodExecution(me, lineNo); + } + } + }); + viewer.addDoubleClickListener(new IDoubleClickListener() { + @Override + public void doubleClick(DoubleClickEvent event) { + IStructuredSelection sel = (IStructuredSelection)event.getSelection(); + Object element = sel.getFirstElement(); + if (element instanceof TracePoint) { + selectedTp = (TracePoint)element; + if (DebuggingController.getInstance().isRunning()) { + jumpToTheTracePoint(selectedTp); + } + } + } + }); + + createActions(); + createToolBar(); + createMenuBar(); + createPopupMenu(); + TraceDebuggerPlugin.setActiveView(ID, this); + } + + @Override + public String getTitle() { + return TraceDebuggerPlugin.isJapanese() ? "���s���_�̓o�^" : "MarkedExecutionPoints"; + } + + @Override + public void setFocus() { + // TODO Auto-generated method stub + TraceDebuggerPlugin.setActiveView(ID, this); + viewer.getControl().setFocus(); + } + + @Override + public void dispose() { + TraceDebuggerPlugin.removeView(ID, this); + } + + private void createActions() { + boolean isJapanese = TraceDebuggerPlugin.isJapanese(); + String msg; + + addAction = new Action() { + @Override + public void run() { + DebuggingController debuggingController = DebuggingController.getInstance(); + TracePoint currentTp = debuggingController.getCurrentTp(); + addTracePoint(currentTp); + } + }; + msg = (isJapanese) ? "�lj�" : "Add"; + addAction.setText(msg); + addAction.setToolTipText(msg); + + removeAction = new Action() { + @Override + public void run() { + if (selectedTp != null) { + tracePoints.remove(selectedTp); + update(); + } + } + }; + msg = (isJapanese) ? "�폜" : "Remove"; + removeAction.setText(msg); + removeAction.setToolTipText(msg); + + jumpAction = new Action() { + @Override + public void run() { + if (selectedTp != null && DebuggingController.getInstance().isRunning()) { + jumpToTheTracePoint(selectedTp); + } + } + }; + msg = (isJapanese) ? "�W�����v" : "Jump"; + jumpAction.setText(msg); + jumpAction.setToolTipText(msg); + } + + private void createToolBar() { + IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); + mgr.add(addAction); + mgr.add(removeAction); + mgr.add(jumpAction); + } + + private void createMenuBar() { + IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); + mgr.add(addAction); + mgr.add(removeAction); + mgr.add(jumpAction); + } + + private void createPopupMenu() { + MenuManager menuMgr = new MenuManager("#PopupMenu"); + menuMgr.setRemoveAllWhenShown(true); + menuMgr.addMenuListener(new IMenuListener() { + @Override + public void menuAboutToShow(IMenuManager manager) { +// manager.add(addAction); +// manager.add(removeAction); +// manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); + } + }); + Menu menu = menuMgr.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(menuMgr, viewer); + } + + public void addTracePoint(TracePoint tp) { + if (!(tracePoints.contains(tp))) { + tracePoints.add(tp); + update(); + } + } + + public void reset() { + tracePoints.clear(); + update(); + } + + private void update() { + viewer.setInput(tracePoints.getToArray()); + viewer.refresh(); + } + + protected void jumpToTheTracePoint(TracePoint tp) { + DebuggingController debuggingController = DebuggingController.getInstance(); + debuggingController.jumpToTheTracePoint(tp, false); + List markers = DebuggingController.getInstance().createCurrentLineMarkers(tp); + if (!(markers.isEmpty())) JavaEditorOperator.markAndOpenJavaFile(markers.get(0)); + } } \ No newline at end of file diff --git a/src/org/ntlab/traceDebugger/VariableView.java b/src/org/ntlab/traceDebugger/VariableView.java index 7b2404c..e47f9a7 100644 --- a/src/org/ntlab/traceDebugger/VariableView.java +++ b/src/org/ntlab/traceDebugger/VariableView.java @@ -1,157 +1,162 @@ -package org.ntlab.traceDebugger; - -import java.util.ArrayList; -import java.util.List; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITreeViewerListener; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.TreeExpansionEvent; -import org.eclipse.jface.viewers.TreeNode; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.TreeColumn; -import org.eclipse.ui.part.ViewPart; -import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; - -public class VariableView extends ViewPart { - protected TreeViewer viewer; - protected Variable selectedVariable; - protected Variables variables = Variables.getInstance(); - public static final String ID = "org.ntlab.traceDebugger.variableView"; - - public VariableView() { - // TODO Auto-generated constructor stub - System.out.println("VariableView�N���X���������ꂽ��!"); - } - - @Override - public void createPartControl(Composite parent) { - // TODO Auto-generated method stub - System.out.println("VariableView#createPartControl(Composite)���Ă΂ꂽ��!"); - viewer = new TreeViewer(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); - Tree tree = viewer.getTree(); - tree.setHeaderVisible(true); - tree.setLinesVisible(true); - - 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() { - @Override - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection sel = (IStructuredSelection)event.getSelection(); - Object element = sel.getFirstElement(); - if (element instanceof TreeNode) { - Object value = ((TreeNode)element).getValue(); - if (value instanceof Variable) { - selectedVariable = (Variable)value; - } - } - } - }); - viewer.addTreeListener(new ITreeViewerListener() { - @Override - public void treeExpanded(TreeExpansionEvent event) { - // �c���[���J������Ɏ��s�����B �����ł͊J�����m�[�h����3��̃m�[�h�𐶐����Ēlj�����B - Object element = event.getElement(); - if (!(element instanceof MyTreeNode)) return; - MyTreeNode expandedNode = (MyTreeNode)element; - Object value = expandedNode.getValue(); - if (!(value instanceof Variable)) return; - List childNodes = expandedNode.getChildList(); - if (childNodes == null) return; - for (MyTreeNode childNode : childNodes) { - List grandChildNodes = childNode.getChildList(); - if (grandChildNodes == null) continue; - for (MyTreeNode grandChildNode : grandChildNodes) { - Variable grandChildVariable = (Variable)grandChildNode.getValue(); - grandChildVariable.createNextHierarchyState(); - List list = grandChildVariable.getChildren(); - List nodes = new ArrayList<>(); - for (int i = 0; i < list.size(); i++) { - nodes.add(i, new MyTreeNode(list.get(i))); - } - grandChildNode.setChildList(nodes); - } - } - viewer.refresh(); - } - @Override - public void treeCollapsed(TreeExpansionEvent event) {} - }); - createActions(); - createToolBar(); - createMenuBar(); - createPopupMenu(); - TraceDebuggerPlugin.setActiveView(ID, this); - } - - @Override - public String getTitle() { - return TraceDebuggerPlugin.isJapanese() ? "�ϐ�" : "Variables"; - } - - @Override - public void setFocus() { - // TODO Auto-generated method stub - TraceDebuggerPlugin.setActiveView(ID, this); - viewer.getControl().setFocus(); - } - - protected void createActions() { - - } - - protected void createToolBar() { - IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); - } - - protected void createMenuBar() { - IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); - } - - protected void createPopupMenu() { - - } - - public void reset() { - variables.resetData(); - viewer.setInput(variables.getVariablesTreeNodesList()); - viewer.refresh(); - } - - public void updateVariablesByTracePoint(TracePoint tp, boolean isReturned) { - updateVariablesByTracePoint(tp, isReturned, null); - } - - public void updateVariablesByTracePoint(TracePoint tp, boolean isReturned, TracePoint before) { - updateVariablesByTracePoint(null, tp, isReturned, before); - } - - public void updateVariablesByTracePoint(TracePoint from, TracePoint to, boolean isReturned) { - updateVariablesByTracePoint(from, to, isReturned, null); - } - - public void updateVariablesByTracePoint(TracePoint from, TracePoint to, boolean isReturned, TracePoint before) { - variables.updateAllObjectDataByTracePoint(from, to, isReturned, before); - viewer.setInput(variables.getVariablesTreeNodesList()); - } - - public void updateVariablesForDifferential(TracePoint from, TracePoint to, boolean isReturned) { - variables.updateForDifferential(from, to, isReturned); -// viewer.setInput(variables.getVariablesTreeNodes()); - viewer.refresh(); - } -} +package org.ntlab.traceDebugger; + +import java.util.ArrayList; +import java.util.List; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ITreeViewerListener; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.TreeExpansionEvent; +import org.eclipse.jface.viewers.TreeNode; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; +import org.eclipse.ui.part.ViewPart; +import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; + +public class VariableView extends ViewPart { + protected TreeViewer viewer; + protected Variable selectedVariable; + protected Variables variables = Variables.getInstance(); + public static final String ID = "org.ntlab.traceDebugger.variableView"; + + public VariableView() { + // TODO Auto-generated constructor stub + System.out.println("VariableView�N���X���������ꂽ��!"); + } + + @Override + public void createPartControl(Composite parent) { + // TODO Auto-generated method stub + System.out.println("VariableView#createPartControl(Composite)���Ă΂ꂽ��!"); + viewer = new TreeViewer(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); + Tree tree = viewer.getTree(); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + 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() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection sel = (IStructuredSelection)event.getSelection(); + Object element = sel.getFirstElement(); + if (element instanceof TreeNode) { + Object value = ((TreeNode)element).getValue(); + if (value instanceof Variable) { + selectedVariable = (Variable)value; + } + } + } + }); + viewer.addTreeListener(new ITreeViewerListener() { + @Override + public void treeExpanded(TreeExpansionEvent event) { + // �c���[���J������Ɏ��s�����B �����ł͊J�����m�[�h����3��̃m�[�h�𐶐����Ēlj�����B + Object element = event.getElement(); + if (!(element instanceof MyTreeNode)) return; + MyTreeNode expandedNode = (MyTreeNode)element; + Object value = expandedNode.getValue(); + if (!(value instanceof Variable)) return; + List childNodes = expandedNode.getChildList(); + if (childNodes == null) return; + for (MyTreeNode childNode : childNodes) { + List grandChildNodes = childNode.getChildList(); + if (grandChildNodes == null) continue; + for (MyTreeNode grandChildNode : grandChildNodes) { + Variable grandChildVariable = (Variable)grandChildNode.getValue(); + grandChildVariable.createNextHierarchyState(); + List list = grandChildVariable.getChildren(); + List nodes = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + nodes.add(i, new MyTreeNode(list.get(i))); + } + grandChildNode.setChildList(nodes); + } + } + viewer.refresh(); + } + @Override + public void treeCollapsed(TreeExpansionEvent event) {} + }); + createActions(); + createToolBar(); + createMenuBar(); + createPopupMenu(); + TraceDebuggerPlugin.setActiveView(ID, this); + } + + @Override + public String getTitle() { + return TraceDebuggerPlugin.isJapanese() ? "�ϐ�" : "Variables"; + } + + @Override + public void setFocus() { + // TODO Auto-generated method stub + TraceDebuggerPlugin.setActiveView(ID, this); + viewer.getControl().setFocus(); + } + + @Override + public void dispose() { + TraceDebuggerPlugin.removeView(ID, this); + } + + protected void createActions() { + + } + + protected void createToolBar() { + IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); + } + + protected void createMenuBar() { + IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); + } + + protected void createPopupMenu() { + + } + + public void reset() { + variables.resetData(); + viewer.setInput(variables.getVariablesTreeNodesList()); + viewer.refresh(); + } + + public void updateVariablesByTracePoint(TracePoint tp, boolean isReturned) { + updateVariablesByTracePoint(tp, isReturned, null); + } + + public void updateVariablesByTracePoint(TracePoint tp, boolean isReturned, TracePoint before) { + updateVariablesByTracePoint(null, tp, isReturned, before); + } + + public void updateVariablesByTracePoint(TracePoint from, TracePoint to, boolean isReturned) { + updateVariablesByTracePoint(from, to, isReturned, null); + } + + public void updateVariablesByTracePoint(TracePoint from, TracePoint to, boolean isReturned, TracePoint before) { + variables.updateAllObjectDataByTracePoint(from, to, isReturned, before); + viewer.setInput(variables.getVariablesTreeNodesList()); + } + + public void updateVariablesForDifferential(TracePoint from, TracePoint to, boolean isReturned) { + variables.updateForDifferential(from, to, isReturned); +// viewer.setInput(variables.getVariablesTreeNodes()); + viewer.refresh(); + } +} diff --git a/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java b/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java index df46068..8834e8c 100644 --- a/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java +++ b/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java @@ -53,6 +53,11 @@ TraceDebuggerPlugin.setActiveView(ID, this); viewer.getControl().setFocus(); } + + @Override + public void dispose() { + TraceDebuggerPlugin.removeView(ID, this); + } @Override protected void createActions() {