diff options
author | Mikhail Khodjaiants | 2011-02-22 18:50:40 +0000 |
---|---|---|
committer | Mikhail Khodjaiants | 2011-02-22 18:50:40 +0000 |
commit | 9684ae54d1c91a70f88250416ffe419465630332 (patch) | |
tree | 22418f2ad3cb93b53e8c9877b46b9d1fbf0ba57d /dsf-gdb | |
parent | 353b63daf91362469785379eed19ed28d45c49bf (diff) | |
download | org.eclipse.cdt-9684ae54d1c91a70f88250416ffe419465630332.tar.gz org.eclipse.cdt-9684ae54d1c91a70f88250416ffe419465630332.tar.xz org.eclipse.cdt-9684ae54d1c91a70f88250416ffe419465630332.zip |
Bug 337303: Refactor DisassemblyToggleBreakpointsTarget and DisassemblyToggleTracepointsTarget
Diffstat (limited to 'dsf-gdb')
-rw-r--r-- | dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/DisassemblyToggleTracepointsTarget.java | 138 |
1 files changed, 15 insertions, 123 deletions
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/DisassemblyToggleTracepointsTarget.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/DisassemblyToggleTracepointsTarget.java index 9209c50b51d..5b0fc65561c 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/DisassemblyToggleTracepointsTarget.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/DisassemblyToggleTracepointsTarget.java @@ -10,143 +10,35 @@ *******************************************************************************/ package org.eclipse.cdt.dsf.gdb.internal.ui.breakpoints; -import java.net.URI; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - import org.eclipse.cdt.core.IAddress; import org.eclipse.cdt.debug.core.CDIDebugModel; import org.eclipse.cdt.debug.core.model.ICBreakpointType; -import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.DisassemblySelection; -import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.IDisassemblyPart; -import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.IDisassemblySelection; -import org.eclipse.core.filesystem.URIUtil; -import org.eclipse.core.resources.IMarker; +import org.eclipse.cdt.dsf.debug.ui.actions.AbstractDisassemblyBreakpointsTarget; import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.debug.core.DebugPlugin; -import org.eclipse.debug.core.model.IBreakpoint; -import org.eclipse.debug.ui.actions.IToggleBreakpointsTargetExtension; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.ITextSelection; -import org.eclipse.jface.text.Position; -import org.eclipse.jface.text.source.IAnnotationModel; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.texteditor.SimpleMarkerAnnotation; /** * Toggle tracepoint target implementation for the disassembly part. */ -public class DisassemblyToggleTracepointsTarget implements IToggleBreakpointsTargetExtension { - - public void toggleLineBreakpoints(IWorkbenchPart part, ISelection selection) throws CoreException { - assert part instanceof IDisassemblyPart && selection instanceof ITextSelection; - - if (!(selection instanceof IDisassemblySelection)) { - selection = new DisassemblySelection((ITextSelection) selection, (IDisassemblyPart) part); - } - IDisassemblySelection disassemblySelection = (IDisassemblySelection)selection; - int line = disassemblySelection.getStartLine(); - IBreakpoint[] bp = getBreakpointsAtLine((IDisassemblyPart) part, line); - if (bp == null || bp.length == 0) { - insertBreakpoint(disassemblySelection); - } else { - for (int i = 0; i < bp.length; i++) { - bp[i].delete(); - } - } - } - - public boolean canToggleLineBreakpoints(IWorkbenchPart part, ISelection selection) { - return part instanceof IDisassemblyPart && selection instanceof ITextSelection; - } - - public void toggleMethodBreakpoints(IWorkbenchPart part, ISelection selection) throws CoreException { - } +public class DisassemblyToggleTracepointsTarget extends AbstractDisassemblyBreakpointsTarget { - public boolean canToggleMethodBreakpoints(IWorkbenchPart part, ISelection selection) { - return false; - } - - public void toggleWatchpoints(IWorkbenchPart part, ISelection selection) throws CoreException { - } - - public boolean canToggleWatchpoints(IWorkbenchPart part, ISelection selection) { - return false; - } - /* - * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTargetExtension#canToggleBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) + /* (non-Javadoc) + * @see org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.AbstractDisassemblyBreakpointsTarget#createLineBreakpoint(java.lang.String, org.eclipse.core.resources.IResource, int) */ - public boolean canToggleBreakpoints(IWorkbenchPart part, ISelection selection) { - return canToggleLineBreakpoints(part, selection); + @Override + protected void createLineBreakpoint( String sourceHandle, IResource resource, int lineNumber ) throws CoreException { + CDIDebugModel.createLineTracepoint( sourceHandle, resource, getBreakpointType(), lineNumber, true, 0, "", true ); //$NON-NLS-1$ } - /* - * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTargetExtension#toggleBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) + + /* (non-Javadoc) + * @see org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.AbstractDisassemblyBreakpointsTarget#createAddressBreakpoint(org.eclipse.core.resources.IResource, org.eclipse.cdt.core.IAddress) */ - public void toggleBreakpoints(IWorkbenchPart part, ISelection selection) throws CoreException { - toggleLineBreakpoints(part, selection); + @Override + protected void createAddressBreakpoint( IResource resource, IAddress address ) throws CoreException { + CDIDebugModel.createAddressTracepoint( null, null, resource, getBreakpointType(), -1, address, true, 0, "", true ); //$NON-NLS-1$ } - private IBreakpoint[] getBreakpointsAtLine(IDisassemblyPart part, int line) { - List<IBreakpoint> breakpoints = new ArrayList<IBreakpoint>(); - IAnnotationModel annotationModel = part.getTextViewer().getAnnotationModel(); - IDocument document = part.getTextViewer().getDocument(); - if (annotationModel != null) { - Iterator<?> iterator = annotationModel.getAnnotationIterator(); - while (iterator.hasNext()) { - Object object = iterator.next(); - if (object instanceof SimpleMarkerAnnotation) { - SimpleMarkerAnnotation markerAnnotation = (SimpleMarkerAnnotation) object; - IMarker marker = markerAnnotation.getMarker(); - try { - if (marker.isSubtypeOf(IBreakpoint.BREAKPOINT_MARKER)) { - Position position = annotationModel.getPosition(markerAnnotation); - int bpLine = document.getLineOfOffset(position.getOffset()); - if (line == bpLine) { - IBreakpoint breakpoint = DebugPlugin.getDefault().getBreakpointManager().getBreakpoint(marker); - if (breakpoint != null) { - breakpoints.add(breakpoint); - } - } - } - } catch (CoreException e) { - } catch (BadLocationException e) { - } - } - } - } - IBreakpoint[] breakpointsArray = new IBreakpoint[breakpoints.size()]; - return breakpoints.toArray(breakpointsArray ); + protected int getBreakpointType() { + return ICBreakpointType.REGULAR; } - private void insertBreakpoint(IDisassemblySelection selection) throws CoreException { - IAddress address = selection.getStartAddress(); - if (address == null) { - return; - } - URI fileUri = selection.getSourceLocationURI(); - if (fileUri != null) { - String filePath = null; - IResource resource = selection.getSourceFile(); - if (resource != null) { - final IPath location= resource.getLocation(); - if (location == null) { - return; - } - filePath = location.toOSString(); - } else { - resource = ResourcesPlugin.getWorkspace().getRoot(); - filePath = URIUtil.toPath(fileUri).toOSString(); - } - int srcLine = selection.getSourceLine(); - CDIDebugModel.createLineTracepoint(filePath, resource, ICBreakpointType.REGULAR, srcLine + 1, true, 0, "", true); //$NON-NLS-1$ - } else { - IResource resource = ResourcesPlugin.getWorkspace().getRoot(); - CDIDebugModel.createAddressTracepoint(null, null, resource, ICBreakpointType.REGULAR, -1, address, true, 0, "", true); //$NON-NLS-1$ - } - } }
\ No newline at end of file |