diff --git a/src/org/ntlab/traceDebugger/BreakPointLabelProvider.java b/src/org/ntlab/traceDebugger/BreakPointLabelProvider.java index f48b231..e39696c 100644 --- a/src/org/ntlab/traceDebugger/BreakPointLabelProvider.java +++ b/src/org/ntlab/traceDebugger/BreakPointLabelProvider.java @@ -14,7 +14,8 @@ TraceBreakPoint tbp = (TraceBreakPoint)element; switch (columnIndex) { case 0: - return tbp.isAvailable() ? "True" : "False"; +// return tbp.isAvailable() ? "True" : "False"; + return ""; case 1: return String.valueOf(tbp.getLineNo()); case 2: @@ -26,6 +27,7 @@ @Override public Image getColumnImage(Object element, int columnIndex) { + if (columnIndex == 0) return null; return getImage(element); } diff --git a/src/org/ntlab/traceDebugger/BreakPointView.java b/src/org/ntlab/traceDebugger/BreakPointView.java index fff2771..32c9ee0 100644 --- a/src/org/ntlab/traceDebugger/BreakPointView.java +++ b/src/org/ntlab/traceDebugger/BreakPointView.java @@ -14,17 +14,24 @@ import org.eclipse.jface.action.Separator; import org.eclipse.jface.resource.ImageDescriptor; 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.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +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; @@ -46,6 +53,7 @@ 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"; @@ -59,8 +67,8 @@ // TODO Auto-generated method stub System.out.println("BreakPointView#createPartControl(Composite)���Ă΂ꂽ��!"); shell = parent.getShell(); - viewer = new TableViewer(parent, SWT.FULL_SELECTION); - Table table = viewer.getTable(); + 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); @@ -91,6 +99,21 @@ } } }); + + 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); + } + } + }); createActions(); createToolBar(); @@ -274,6 +297,14 @@ viewer.getControl().setMenu(menu); getSite().registerContextMenu(menuMgr, viewer); } + + public TraceBreakPoints getTraceBreakPoints() { + return traceBreakPoints; + } + +// public void setTraceBreakPoints(TraceBreakPoints traceBreakPoints) { +// this.traceBreakPoints = traceBreakPoints; +// } public void reset() { viewer.setInput(new ArrayList()); @@ -281,7 +312,19 @@ } 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(); + if (data instanceof TraceBreakPoint) { + TraceBreakPoint tbp = (TraceBreakPoint)data; + boolean isAvailable = tbp.isAvailable(); + item.setChecked(isAvailable); + } + } viewer.refresh(); } diff --git a/src/org/ntlab/traceDebugger/DebuggingController.java b/src/org/ntlab/traceDebugger/DebuggingController.java index 612b717..fb99db0 100644 --- a/src/org/ntlab/traceDebugger/DebuggingController.java +++ b/src/org/ntlab/traceDebugger/DebuggingController.java @@ -37,7 +37,7 @@ private static final DebuggingController theInstance = new DebuggingController(); private TracePoint debuggingTp; private TraceBreakPoint selectedTraceBreakPoint; - private TraceBreakPoints traceBreakPoints; +// private TraceBreakPoints traceBreakPoints; private IMarker currentLineMarker; private LoadingTraceFileStatus loadingTraceFileStatus = LoadingTraceFileStatus.NOT_YET; private boolean isRunning = false; @@ -106,8 +106,8 @@ TraceJSON trace = new TraceJSON(filePath); TraceDebuggerPlugin.setAnalyzer(new DeltaExtractionAnalyzer(trace)); VariableUpdatePointFinder.getInstance().setTrace(trace); - traceBreakPoints = new TraceBreakPoints(trace); - + final TraceBreakPoints traceBreakPoints = new TraceBreakPoints(trace); + // GUI�̑����GUI�̃C�x���g�f�B�X�p�b�`���s���Ă���X���b�h���炵������ł��Ȃ��̂ł������� final BreakPointView breakpointView = (BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID); Control control = breakpointView.getViewer().getControl(); @@ -142,6 +142,7 @@ inputDialog = new InputDialog(null, "line No dialog", "Input line no", "", null); if (inputDialog.open() != InputDialog.OK) return false; int lineNo = Integer.parseInt(inputDialog.getValue()); + TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints(); boolean isSuccess = traceBreakPoints.addTraceBreakPoint(methodSignature, lineNo); if (!isSuccess) { MessageDialog.openInformation(null, "Error", "This trace point does not exist in the trace."); @@ -156,6 +157,7 @@ MessageDialog.openInformation(null, "Error", "Trace file was not found"); return false; } + TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints(); traceBreakPoints.importBreakpointFromEclipse(); ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateTraceBreakPoints(traceBreakPoints); return true; @@ -163,6 +165,7 @@ public boolean removeTraceBreakPointAction() { if (selectedTraceBreakPoint == null) return false; + TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints(); traceBreakPoints.removeTraceBreakPoint(selectedTraceBreakPoint); ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateTraceBreakPoints(traceBreakPoints); return true; @@ -171,6 +174,7 @@ public boolean changeAvailableAction() { if (selectedTraceBreakPoint == null) return false; selectedTraceBreakPoint.changeAvailable(); + TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints(); ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).updateTraceBreakPoints(traceBreakPoints); return true; } @@ -183,6 +187,7 @@ if (isRunning) { return false; } + TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints(); debuggingTp = traceBreakPoints.getFirstTracePoint(); if (debuggingTp == null) { MessageDialog.openInformation(null, "Error", "An available breakpoint was not found"); @@ -330,6 +335,7 @@ if (debuggingTp == null) return false; long currentTime = debuggingTp.getStatement().getTimeStamp(); TracePoint previousTp = debuggingTp; + TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints(); debuggingTp = traceBreakPoints.getNextTracePoint(currentTime); if (debuggingTp == null) { terminateAction(); @@ -406,6 +412,7 @@ if (debuggingTp == null) return false; TracePoint previousTp = debuggingTp; long currentTime = debuggingTp.getStatement().getTimeStamp(); + TraceBreakPoints traceBreakPoints = ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).getTraceBreakPoints(); debuggingTp = traceBreakPoints.getPreviousTracePoint(currentTime); if (debuggingTp == null) { terminateAction(); diff --git a/src/org/ntlab/traceDebugger/TraceBreakPoint.java b/src/org/ntlab/traceDebugger/TraceBreakPoint.java index fa46658..44b17f0 100644 --- a/src/org/ntlab/traceDebugger/TraceBreakPoint.java +++ b/src/org/ntlab/traceDebugger/TraceBreakPoint.java @@ -114,6 +114,10 @@ return isAvailable; } + public void setAvailable(boolean isAvailable) { + this.isAvailable = isAvailable; + } + public void changeAvailable() { isAvailable = !isAvailable; }