Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikhail Khodjaiants2011-02-22 18:50:40 +0000
committerMikhail Khodjaiants2011-02-22 18:50:40 +0000
commit9684ae54d1c91a70f88250416ffe419465630332 (patch)
tree22418f2ad3cb93b53e8c9877b46b9d1fbf0ba57d /dsf-gdb
parent353b63daf91362469785379eed19ed28d45c49bf (diff)
downloadorg.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.java138
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

Back to the top