diff --git a/icons/debug/import_brkpts_dlcl.png b/icons/debug/import_brkpts_dlcl.png new file mode 100644 index 0000000..13e5061 --- /dev/null +++ b/icons/debug/import_brkpts_dlcl.png Binary files differ diff --git a/icons/debug/import_brkpts_elcl.png b/icons/debug/import_brkpts_elcl.png new file mode 100644 index 0000000..7c4ae88 --- /dev/null +++ b/icons/debug/import_brkpts_elcl.png Binary files differ diff --git a/icons/debug/stepnext_dlcl.png b/icons/debug/stepnext_dlcl.png new file mode 100644 index 0000000..0b376a8 --- /dev/null +++ b/icons/debug/stepnext_dlcl.png Binary files differ diff --git a/icons/debug/stepnext_elcl.png b/icons/debug/stepnext_elcl.png new file mode 100644 index 0000000..2cdbc6d --- /dev/null +++ b/icons/debug/stepnext_elcl.png Binary files differ diff --git a/icons/variable/fieldvariable.png b/icons/variable/fieldvariable.png new file mode 100644 index 0000000..224b570 --- /dev/null +++ b/icons/variable/fieldvariable.png Binary files differ diff --git a/icons/variable/localvariable.png b/icons/variable/localvariable.png new file mode 100644 index 0000000..a496c2b --- /dev/null +++ b/icons/variable/localvariable.png Binary files differ diff --git a/icons/variable/specialvariable.png b/icons/variable/specialvariable.png new file mode 100644 index 0000000..d2ea89a --- /dev/null +++ b/icons/variable/specialvariable.png Binary files differ diff --git a/icons/variable/thisvariable.png b/icons/variable/thisvariable.png new file mode 100644 index 0000000..af367fb --- /dev/null +++ b/icons/variable/thisvariable.png Binary files differ diff --git a/icons/view/breakpoint_view.png b/icons/view/breakpoint_view.png new file mode 100644 index 0000000..6b17442 --- /dev/null +++ b/icons/view/breakpoint_view.png Binary files differ diff --git a/icons/view/callstack_view.png b/icons/view/callstack_view.png new file mode 100644 index 0000000..97d5e2d --- /dev/null +++ b/icons/view/callstack_view.png Binary files differ diff --git a/icons/view/calltree_view.png b/icons/view/calltree_view.png new file mode 100644 index 0000000..ae6d660 --- /dev/null +++ b/icons/view/calltree_view.png Binary files differ diff --git a/icons/view/deltamarker_view.png b/icons/view/deltamarker_view.png new file mode 100644 index 0000000..cc39fb3 --- /dev/null +++ b/icons/view/deltamarker_view.png Binary files differ diff --git a/icons/view/tracepoints_view.png b/icons/view/tracepoints_view.png new file mode 100644 index 0000000..a22ec80 --- /dev/null +++ b/icons/view/tracepoints_view.png Binary files differ diff --git a/icons/view/variable_view.png b/icons/view/variable_view.png new file mode 100644 index 0000000..d4d5774 --- /dev/null +++ b/icons/view/variable_view.png Binary files differ diff --git a/plugin.xml b/plugin.xml index 2de2e99..1310c0e 100644 --- a/plugin.xml +++ b/plugin.xml @@ -10,6 +10,7 @@ @@ -17,6 +18,7 @@ @@ -24,6 +26,7 @@ @@ -35,6 +38,7 @@ @@ -42,6 +46,7 @@ @@ -49,6 +54,7 @@ @@ -56,6 +62,7 @@ @@ -64,6 +71,7 @@ allowMultiple="true" category="org.ntlab.traceDebugger.category2" class="org.ntlab.traceDebugger.DeltaMarkerView" + icon="icons/view/deltamarker_view.png" id="org.ntlab.traceDebugger.deltaMarkerView" name="ExtractedExecutionPoints" restorable="true"> @@ -72,6 +80,7 @@ allowMultiple="true" category="org.ntlab.traceDebugger.category2" class="org.ntlab.traceDebugger.CallTreeView" + icon="icons/view/calltree_view.png" id="org.ntlab.traceDebugger.callTreeView" name="CurrentExecutionPoint" restorable="true"> diff --git a/src/org/ntlab/traceDebugger/BreakPointLabelProvider.java b/src/org/ntlab/traceDebugger/BreakPointLabelProvider.java index e39696c..0712e66 100644 --- a/src/org/ntlab/traceDebugger/BreakPointLabelProvider.java +++ b/src/org/ntlab/traceDebugger/BreakPointLabelProvider.java @@ -1,10 +1,10 @@ package org.ntlab.traceDebugger; +import org.eclipse.debug.ui.DebugUITools; +import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.PlatformUI; public class BreakPointLabelProvider extends LabelProvider implements ITableLabelProvider { @@ -27,12 +27,14 @@ @Override public Image getColumnImage(Object element, int columnIndex) { - if (columnIndex == 0) return null; - return getImage(element); - } - - @Override - public Image getImage(Object element) { - return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT); + if (columnIndex == 0 && element instanceof TraceBreakPoint) { + TraceBreakPoint tbp = (TraceBreakPoint)element; + if (tbp.isAvailable()) { + return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_BREAKPOINT); + } else { + return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_BREAKPOINT_DISABLED); + } + } + return null; } } diff --git a/src/org/ntlab/traceDebugger/BreakPointView.java b/src/org/ntlab/traceDebugger/BreakPointView.java index d444aaa..7517f30 100644 --- a/src/org/ntlab/traceDebugger/BreakPointView.java +++ b/src/org/ntlab/traceDebugger/BreakPointView.java @@ -13,6 +13,7 @@ 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; @@ -56,6 +57,10 @@ protected TraceBreakPoints traceBreakPoints; protected DebuggingController debuggingController = DebuggingController.getInstance(); public static final String ID = "org.ntlab.traceDebugger.breakPointView"; + 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 @@ -74,7 +79,7 @@ // �e�[�u���̃J�������쐬 String[] tableColumnTexts = {"", "Line", "Signature"}; - int[] tableColumnWidth = {30, 80, 500}; + 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); @@ -111,6 +116,7 @@ if (data instanceof TraceBreakPoint) { TraceBreakPoint tbp = (TraceBreakPoint)data; tbp.setAvailable(checked); + viewer.refresh(); } } }); @@ -133,7 +139,8 @@ viewer.getControl().setFocus(); } - protected void createActions() { + protected void createActions() { + ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry(); ImageDescriptor fileOpenIcon = PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER); fileOpenAction = new Action("Open Trace File...", fileOpenIcon) { @Override @@ -178,6 +185,8 @@ }; importBreakpointAction.setText("Import Breakpoints"); importBreakpointAction.setToolTipText("Copy Breakpoints from Eclipse"); + ImageDescriptor importBreakpointIcon = registry.getDescriptor(IMPORT_BREAKPOINT_DLCL); + importBreakpointAction.setImageDescriptor(importBreakpointIcon); debugAction = new Action() { @Override @@ -241,7 +250,9 @@ } }; stepNextAction.setText("Step Next"); - stepNextAction.setToolTipText("Step Next"); + stepNextAction.setToolTipText("Step Next"); + ImageDescriptor stepNextIcon = registry.getDescriptor(STEP_NEXT_DLCL); + stepNextAction.setImageDescriptor(stepNextIcon); resumeAction = new Action() { @Override @@ -301,21 +312,17 @@ public TraceBreakPoints getTraceBreakPoints() { return traceBreakPoints; } - -// public void setTraceBreakPoints(TraceBreakPoints traceBreakPoints) { -// this.traceBreakPoints = traceBreakPoints; -// } public void reset() { viewer.setInput(new ArrayList()); viewer.refresh(); + updateImagesForBreakPoint(false); + updateImagesForDebug(false); } public void updateTraceBreakPoints(TraceBreakPoints traceBreakPoints) { this.traceBreakPoints = traceBreakPoints; viewer.setInput(traceBreakPoints.getAllTraceBreakPoints()); -// viewer.refresh(); - final Table table = viewer.getTable(); for (TableItem item : table.getItems()) { Object data = item.getData(); @@ -328,7 +335,19 @@ viewer.refresh(); } - public void updateImages(boolean isRunning) { + public void updateImagesForBreakPoint(boolean hasLoadedTraceFile) { + ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry(); + if (hasLoadedTraceFile) { + ImageDescriptor importBreakpointIcon = registry.getDescriptor(IMPORT_BREAKPOINT_ELCL); + importBreakpointAction.setImageDescriptor(importBreakpointIcon); + } else { + ImageDescriptor importBreakpointIcon = registry.getDescriptor(IMPORT_BREAKPOINT_DLCL); + importBreakpointAction.setImageDescriptor(importBreakpointIcon); + } + } + + public void updateImagesForDebug(boolean isRunning) { + ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry(); if (isRunning) { ImageDescriptor terminateImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE); terminateAction.setImageDescriptor(terminateImage); @@ -338,6 +357,8 @@ 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 { @@ -349,6 +370,8 @@ stepOverAction.setImageDescriptor(stepOverImage); ImageDescriptor stepReturnImage = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_STEP_RETURN); stepReturnAction.setImageDescriptor(stepReturnImage); + ImageDescriptor stepNextIcon = registry.getDescriptor(STEP_NEXT_DLCL); + stepNextAction.setImageDescriptor(stepNextIcon); ImageDescriptor image = DebugUITools.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_RESUME); resumeAction.setImageDescriptor(image); } diff --git a/src/org/ntlab/traceDebugger/BreakPointViewRelatedDelta.java b/src/org/ntlab/traceDebugger/BreakPointViewRelatedDelta.java index 08f1f50..62ec337 100644 --- a/src/org/ntlab/traceDebugger/BreakPointViewRelatedDelta.java +++ b/src/org/ntlab/traceDebugger/BreakPointViewRelatedDelta.java @@ -17,10 +17,10 @@ public static final String ID = "org.ntlab.traceDebugger.breakPointViewRelatedDelta"; public static final String STEP_BACK_INTO_ELCL = "StepBackInto_ELCL"; public static final String STEP_BACK_INTO_DLCL = "StepBackInto_DLCL"; - public static final String STEP_BACK_OVER_ELCL = "StepOverInto_ELCL"; - public static final String STEP_BACK_OVER_DLCL = "StepOverInto_DLCL"; - public static final String STEP_BACK_RETURN_ELCL = "StepReturnInto_ELCL"; - public static final String STEP_BACK_RETURN_DLCL = "StepReturnInto_DLCL"; + public static final String STEP_BACK_OVER_ELCL = "StepBackOver_ELCL"; + public static final String STEP_BACK_OVER_DLCL = "StepBackOver_DLCL"; + public static final String STEP_BACK_RETURN_ELCL = "StepBackReturn_ELCL"; + public static final String STEP_BACK_RETURN_DLCL = "StepBackReturn_DLCL"; public static final String BACK_RESUME_ELCL = "BackResume_ELCL"; public static final String BACK_RESUME_DLCL = "BackResume_DLCL"; @@ -130,8 +130,8 @@ } @Override - public void updateImages(boolean isRunning) { - super.updateImages(isRunning); + public void updateImagesForDebug(boolean isRunning) { + super.updateImagesForDebug(isRunning); ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry(); if (isRunning) { ImageDescriptor stepBackIntoImage = registry.getDescriptor(STEP_BACK_INTO_ELCL); diff --git a/src/org/ntlab/traceDebugger/CallStackLabelProvider.java b/src/org/ntlab/traceDebugger/CallStackLabelProvider.java index c38fd4c..bb84793 100644 --- a/src/org/ntlab/traceDebugger/CallStackLabelProvider.java +++ b/src/org/ntlab/traceDebugger/CallStackLabelProvider.java @@ -1,5 +1,8 @@ package org.ntlab.traceDebugger; +import org.eclipse.debug.core.DebugPlugin; +import org.eclipse.debug.ui.DebugUITools; +import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.jface.viewers.IColorProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TreeNode; @@ -35,7 +38,12 @@ @Override public Image getImage(Object element) { if (element instanceof TreeNode) { - return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT); + Object value = ((TreeNode)element).getValue(); + if (value instanceof String) { + return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_THREAD_SUSPENDED); + } else if (value instanceof CallStackModel) { + return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_STACKFRAME); + } } return null; } diff --git a/src/org/ntlab/traceDebugger/CallTreeLabelProvider.java b/src/org/ntlab/traceDebugger/CallTreeLabelProvider.java index 371e09e..0221ebc 100644 --- a/src/org/ntlab/traceDebugger/CallTreeLabelProvider.java +++ b/src/org/ntlab/traceDebugger/CallTreeLabelProvider.java @@ -1,5 +1,7 @@ package org.ntlab.traceDebugger; +import org.eclipse.debug.ui.DebugUITools; +import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.jface.viewers.IColorProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TreeNode; @@ -25,7 +27,10 @@ @Override public Image getImage(Object element) { if (element instanceof TreeNode) { - return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT); + Object value = ((TreeNode)element).getValue(); + if (value instanceof CallTreeModel) { + return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_STACKFRAME); + } } return null; } diff --git a/src/org/ntlab/traceDebugger/DebuggingController.java b/src/org/ntlab/traceDebugger/DebuggingController.java index 19f6b6f..84a6e24 100644 --- a/src/org/ntlab/traceDebugger/DebuggingController.java +++ b/src/org/ntlab/traceDebugger/DebuggingController.java @@ -37,7 +37,6 @@ private static final DebuggingController theInstance = new DebuggingController(); private TracePoint debuggingTp; private TraceBreakPoint selectedTraceBreakPoint; -// private TraceBreakPoints traceBreakPoints; private IMarker currentLineMarker; private LoadingTraceFileStatus loadingTraceFileStatus = LoadingTraceFileStatus.NOT_YET; private boolean isRunning = false; @@ -115,6 +114,7 @@ @Override public void run() { breakpointView.updateTraceBreakPoints(traceBreakPoints); + breakpointView.updateImagesForBreakPoint(true); } }); monitor.done(); @@ -194,7 +194,7 @@ return false; } refresh(null, debuggingTp, false); - ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateImages(true); + ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateImagesForDebug(true); isRunning = true; return true; } @@ -210,7 +210,7 @@ } ((CallStackView)TraceDebuggerPlugin.getActiveView(CallStackView.ID)).reset(); ((VariableView)TraceDebuggerPlugin.getActiveView(VariableView.ID)).reset(); - ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateImages(false); + ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateImagesForDebug(false); isRunning = false; } diff --git a/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java b/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java index d14f836..3edc458 100644 --- a/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java +++ b/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java @@ -113,6 +113,11 @@ @Override protected void initializeImageRegistry(ImageRegistry reg) { + // �u���[�N�|�C���g�r���[�Ɋւ���A�C�R�� + reg.put(BreakPointView.IMPORT_BREAKPOINT_ELCL, getImageDescriptor("/icons/debug/import_brkpts_elcl.png")); + reg.put(BreakPointView.IMPORT_BREAKPOINT_DLCL, getImageDescriptor("/icons/debug/import_brkpts_dlcl.png")); + reg.put(BreakPointViewRelatedDelta.STEP_NEXT_ELCL, getImageDescriptor("/icons/debug/stepnext_elcl.png")); + reg.put(BreakPointViewRelatedDelta.STEP_NEXT_DLCL, getImageDescriptor("/icons/debug/stepnext_dlcl.png")); reg.put(BreakPointViewRelatedDelta.STEP_BACK_INTO_ELCL, getImageDescriptor("/icons/debug/stepbackinto_elcl.png")); reg.put(BreakPointViewRelatedDelta.STEP_BACK_INTO_DLCL, getImageDescriptor("/icons/debug/stepbackinto_dlcl.png")); reg.put(BreakPointViewRelatedDelta.STEP_BACK_OVER_ELCL, getImageDescriptor("/icons/debug/stepbackover_elcl.png")); @@ -120,7 +125,13 @@ reg.put(BreakPointViewRelatedDelta.STEP_BACK_RETURN_ELCL, getImageDescriptor("/icons/debug/stepbackreturn_elcl.png")); reg.put(BreakPointViewRelatedDelta.STEP_BACK_RETURN_DLCL, getImageDescriptor("/icons/debug/stepbackreturn_dlcl.png")); reg.put(BreakPointViewRelatedDelta.BACK_RESUME_ELCL, getImageDescriptor("/icons/debug/backresume_elcl.png")); - reg.put(BreakPointViewRelatedDelta.BACK_RESUME_DLCL, getImageDescriptor("/icons/debug/backresume_dlcl.png")); + reg.put(BreakPointViewRelatedDelta.BACK_RESUME_DLCL, getImageDescriptor("/icons/debug/backresume_dlcl.png")); + + // �ϐ��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) { diff --git a/src/org/ntlab/traceDebugger/VariableLabelProvider.java b/src/org/ntlab/traceDebugger/VariableLabelProvider.java index 058d92b..3869875 100644 --- a/src/org/ntlab/traceDebugger/VariableLabelProvider.java +++ b/src/org/ntlab/traceDebugger/VariableLabelProvider.java @@ -1,5 +1,6 @@ package org.ntlab.traceDebugger; +import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.jface.viewers.ITableColorProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; @@ -8,9 +9,15 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; +import org.ntlab.traceDebugger.Variable.VariableType; import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager; public class VariableLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider { + public static final String SPECIAL_VARIABLE = "SpecialVariable"; + public static final String THIS_VARIABLE = "ThisVariable"; + public static final String FIELD_VARIABLE = "FieldVariable"; + public static final String ARG_VARIABLE = "ArgVariable"; + @Override public String getColumnText(Object element, int columnIndex) { if (element instanceof TreeNode) { @@ -65,7 +72,27 @@ @Override public Image getColumnImage(Object element, int columnIndex) { - return getImage(element); + if (columnIndex != 0) return null; + ImageRegistry registry = TraceDebuggerPlugin.getDefault().getImageRegistry(); + if (element instanceof TreeNode) { + Object value = ((TreeNode)element).getValue(); + if (value instanceof String) { + return registry.getDescriptor(SPECIAL_VARIABLE).createImage(); + } else if (value instanceof Variable) { + Variable variable = (Variable)value; + VariableType variableType = variable.getVariableType(); + if (variable.getVariableName().equals("this")) { + return registry.getDescriptor(THIS_VARIABLE).createImage(); + } else if (variableType == VariableType.PARAMETER){ + return registry.getDescriptor(ARG_VARIABLE).createImage(); + } else if (variableType.isContainerSide()) { + return registry.getDescriptor(THIS_VARIABLE).createImage(); + } else { + return registry.getDescriptor(FIELD_VARIABLE).createImage(); + } + } + } + return null; } @Override diff --git a/src/org/ntlab/traceDebugger/VariableView.java b/src/org/ntlab/traceDebugger/VariableView.java index 946d429..9bc8fae 100644 --- a/src/org/ntlab/traceDebugger/VariableView.java +++ b/src/org/ntlab/traceDebugger/VariableView.java @@ -39,13 +39,13 @@ tree.setLinesVisible(true); String[] treeColumnTexts = {"Name", "Value"}; - int[] treeColumnWidth = {100, 200}; + 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() {