From 4b389fbd4851fb72316827e46bdaceba41585c2e Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Thu, 19 Sep 2002 19:21:19 +0000 Subject: [PATCH] Implementation of 'Run To Line' action. --- .../eclipse/cdt/debug/core/IRunToLine.java | 32 +++ .../internal/core/model/CDebugTarget.java | 25 ++ .../icons/full/clcl16/runtoline_co.gif | Bin 0 -> 138 bytes .../icons/full/dlcl16/runtoline_co.gif | Bin 0 -> 104 bytes .../icons/full/elcl16/runtoline_co.gif | Bin 0 -> 109 bytes .../plugin.properties | 1 + debug/org.eclipse.cdt.debug.ui/plugin.xml | 40 +++- .../actions/AbstractEditorActionDelegate.java | 224 ++++++++++++++++++ .../actions/AddExpressionActionDelegate.java | 185 +-------------- .../ui/actions/RunToLineActionDelegate.java | 93 ++++++++ 10 files changed, 416 insertions(+), 184 deletions(-) create mode 100644 debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/IRunToLine.java create mode 100644 debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/runtoline_co.gif create mode 100644 debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/runtoline_co.gif create mode 100644 debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/runtoline_co.gif create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AbstractEditorActionDelegate.java create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineActionDelegate.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/IRunToLine.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/IRunToLine.java new file mode 100644 index 00000000000..4dfb32d4f22 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/IRunToLine.java @@ -0,0 +1,32 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ +package org.eclipse.cdt.debug.core; + +import org.eclipse.core.resources.IResource; +import org.eclipse.debug.core.DebugException; + +/** + * + * Provides the ability to run a debug target to the given line. + * + * @since Sep 19, 2002 + */ +public interface IRunToLine +{ + /** + * Returns whether this operation is currently available for this element. + * + * @return whether this operation is currently available + */ + public boolean canRunToLine( IResource resource, int lineNumber ); + + /** + * Causes this element to run to specified location. + * + * @exception DebugException on failure. Reasons include: + */ + public void runToLine( IResource resource, int lineNumber ) throws DebugException; +} diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java index 54fb57f32d4..ddbcd8856af 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java @@ -21,6 +21,7 @@ import org.eclipse.cdt.debug.core.ICWatchpoint; import org.eclipse.cdt.debug.core.IFormattedMemoryBlock; import org.eclipse.cdt.debug.core.IFormattedMemoryRetrieval; import org.eclipse.cdt.debug.core.IRestart; +import org.eclipse.cdt.debug.core.IRunToLine; import org.eclipse.cdt.debug.core.IState; import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.ICDIBreakpointHit; @@ -55,6 +56,7 @@ import org.eclipse.cdt.debug.internal.core.CSourceLocator; import org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint; import org.eclipse.core.resources.IMarkerDelta; import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.DebugException; @@ -82,6 +84,7 @@ public class CDebugTarget extends CDebugElement implements IDebugTarget, ICDIEventListener, IRestart, + IRunToLine, IFormattedMemoryRetrieval, IState, ILaunchListener, @@ -1789,4 +1792,26 @@ public class CDebugTarget extends CDebugElement targetRequestFailed( e.getMessage(), null ); } } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.IRunToLine#canRunToLine(IResource, int) + */ + public boolean canRunToLine( IResource resource, int lineNumber ) + { + // check if supports run to line + return canResume(); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.IRunToLine#runToLine(IResource, int) + */ + public void runToLine( IResource resource, int lineNumber ) throws DebugException + { + if ( !canRunToLine( resource, lineNumber ) ) + { + return; + } + setInternalTemporaryBreakpoint( getCDISession().getBreakpointManager().createLocation( resource.getLocation().lastSegment(), null, lineNumber ) ); + resume(); + } } diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/runtoline_co.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/runtoline_co.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5a56e36a2eef159431ff83dfe3acb6733137e25 GIT binary patch literal 138 zcmZ?wbhEHb6krfw*v!CSZy*2v|NQ^=?f>t$pI>iZA8$V&i002{U|{(F|38pK1ByRc z7#SEi8FWD6ATtX>$)pV=ln*M)(>8UUeCEHMB8 literal 0 HcmV?d00001 diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/runtoline_co.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/runtoline_co.gif new file mode 100644 index 0000000000000000000000000000000000000000..786a24535a277770f7663581f3b35efddc97c65c GIT binary patch literal 104 zcmZ?wbhEHb6krfwSj50!Zy!H@{``i91_lO(|Ns93NeEE<$->CMz`~#d;)2vNFzb5k zy7P{i#XxS$`db&iaNk+fsN&gjq=WNR#H^fd){Qw=&5l)6-CMqYN{dj83Il^R0OSoJ AbN~PV literal 0 HcmV?d00001 diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/runtoline_co.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/runtoline_co.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ec717803ccaf62aae1d1712b194c2cd5c7cabdd GIT binary patch literal 109 zcmZ?wbhEHb6krfwSj50!Zy*2v|Ns5__s^d{zoDTaK0cm-fdMF@_>+Z^fq|Vt2gn7g z6kuRrHmcZl=N%hQg4~w%Q5U`_-&rJ>;>q>UkjwEk+lob^CBDav!j@ + + + + + + + + + + + + + + + +