Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikhail Khodjaiants2005-01-21 18:54:55 +0000
committerMikhail Khodjaiants2005-01-21 18:54:55 +0000
commitd26cf662e5866d7de215920d88d87df511d2b9c0 (patch)
treed9d9d0fd0bbaa5d0ef7ee89217c6779657ee51c4
parentb64d1a5b1c07f3b84c8002ee89c8eef4fefaa068 (diff)
downloadorg.eclipse.cdt-d26cf662e5866d7de215920d88d87df511d2b9c0.tar.gz
org.eclipse.cdt-d26cf662e5866d7de215920d88d87df511d2b9c0.tar.xz
org.eclipse.cdt-d26cf662e5866d7de215920d88d87df511d2b9c0.zip
Fix for bug 83412: Run to line and resume at line should run in the background.
-rw-r--r--debug/org.eclipse.cdt.debug.ui/ChangeLog6
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ActionMessages.properties1
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ResumeAtLineActionDelegate.java57
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineAdapter.java65
4 files changed, 103 insertions, 26 deletions
diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog
index 48c326275af..305b840b49d 100644
--- a/debug/org.eclipse.cdt.debug.ui/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog
@@ -1,4 +1,10 @@
2005-01-20 Mikhail Khodjaiants
+ Fix for bug 83412: Run to line and resume at line should run in the background.
+ * ResumeAtLineActionDelegate.java
+ * RunToLineAdapter.java
+ * ActionMessages.properties
+
+2005-01-20 Mikhail Khodjaiants
Bug 83330: Inconsistent in the label for Add expression.
* plugin.properties
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ActionMessages.properties b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ActionMessages.properties
index d33ed908c01..6f6fe38f857 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ActionMessages.properties
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ActionMessages.properties
@@ -46,6 +46,7 @@ ToggleBreakpointRulerAction.Error_1=Error
ToggleBreakpointRulerAction.Operation_failed_1=Operation failed
CBreakpointPropertiesRulerAction.Breakpoint_Properties=Breakpoint &Properties...
ResumeAtLineActionDelegate.Error_1=Error
+ResumeAtLineActionDelegate.0=Resume At Line failed.
RestoreDefaultTypeActionDelegate.0=Unable to restore the default type.
ResumeAtLineActionDelegate.Operation_failed_1=Operation failed.
ResumeAtLineActionDelegate.Missing_document=Missing document
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ResumeAtLineActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ResumeAtLineActionDelegate.java
index e75ed8d39cf..c791b243574 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ResumeAtLineActionDelegate.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ResumeAtLineActionDelegate.java
@@ -12,8 +12,10 @@ package org.eclipse.cdt.debug.internal.ui.actions;
import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.CDIDebugModel;
+import org.eclipse.cdt.debug.core.CDebugUtils;
import org.eclipse.cdt.debug.core.model.IJumpToAddress;
import org.eclipse.cdt.debug.core.model.IJumpToLine;
+import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
import org.eclipse.cdt.debug.internal.ui.views.disassembly.DisassemblyEditorInput;
import org.eclipse.cdt.debug.internal.ui.views.disassembly.DisassemblyView;
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
@@ -21,7 +23,10 @@ import org.eclipse.cdt.debug.ui.ICDebugUIConstants;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.model.IDebugElement;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.internal.ui.DebugUIPlugin;
@@ -273,12 +278,24 @@ public class ResumeAtLineActionDelegate implements IWorkbenchWindowActionDelegat
errorMessage = ActionMessages.getString( "ResumeAtLineActionDelegate.Missing_document" ); //$NON-NLS-1$
}
else {
- String fileName = getFileName( input );
+ final String fileName = getFileName( input );
ITextSelection textSelection = (ITextSelection)selection;
- int lineNumber = textSelection.getStartLine() + 1;
- IJumpToLine jumpToLine = (IJumpToLine)((IAdaptable)debugTarget).getAdapter( IJumpToLine.class );
- if ( jumpToLine != null )
- jumpToLine.jumpToLine( fileName, lineNumber );
+ final int lineNumber = textSelection.getStartLine() + 1;
+ final IJumpToLine jumpToLine = (IJumpToLine)((IAdaptable)debugTarget).getAdapter( IJumpToLine.class );
+ if ( jumpToLine != null ) {
+ Runnable r = new Runnable() {
+
+ public void run() {
+ try {
+ jumpToLine.jumpToLine( fileName, lineNumber );
+ }
+ catch( DebugException e ) {
+ failed( e );
+ }
+ }
+ };
+ runInBackground( r );
+ }
return;
}
}
@@ -291,10 +308,22 @@ public class ResumeAtLineActionDelegate implements IWorkbenchWindowActionDelegat
else {
ITextSelection textSelection = (ITextSelection)selection;
int lineNumber = textSelection.getStartLine() + 1;
- IAddress address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
- IJumpToAddress jumpToAddress = (IJumpToAddress)((IAdaptable)debugTarget).getAdapter( IJumpToAddress.class );
- if ( jumpToAddress != null )
- jumpToAddress.jumpToAddress( address );
+ final IAddress address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
+ final IJumpToAddress jumpToAddress = (IJumpToAddress)((IAdaptable)debugTarget).getAdapter( IJumpToAddress.class );
+ if ( jumpToAddress != null ) {
+ Runnable r = new Runnable() {
+
+ public void run() {
+ try {
+ jumpToAddress.jumpToAddress( address );
+ }
+ catch( DebugException e ) {
+ failed( e );
+ }
+ }
+ };
+ runInBackground( r );
+ }
return;
}
}
@@ -313,4 +342,14 @@ public class ResumeAtLineActionDelegate implements IWorkbenchWindowActionDelegat
}
return null;
}
+
+ private void runInBackground( Runnable r ) {
+ DebugPlugin.getDefault().asyncExec( r );
+ }
+
+ protected void failed( Throwable e ) {
+ MultiStatus ms = new MultiStatus( CDIDebugModel.getPluginIdentifier(), ICDebugInternalConstants.STATUS_CODE_ERROR, ActionMessages.getString( "ResumeAtLineActionDelegate.0" ), null ); //$NON-NLS-1$
+ ms.add( new Status( IStatus.ERROR, CDIDebugModel.getPluginIdentifier(), ICDebugInternalConstants.STATUS_CODE_ERROR, e.getMessage(), e ) );
+ CDebugUtils.error( ms, this );
+ }
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineAdapter.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineAdapter.java
index 90f7e3a90b0..7ae3ce15cf5 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineAdapter.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineAdapter.java
@@ -12,8 +12,10 @@ package org.eclipse.cdt.debug.internal.ui.actions;
import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.CDIDebugModel;
+import org.eclipse.cdt.debug.core.CDebugUtils;
import org.eclipse.cdt.debug.core.model.IRunToAddress;
import org.eclipse.cdt.debug.core.model.IRunToLine;
+import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
import org.eclipse.cdt.debug.internal.ui.views.disassembly.DisassemblyEditorInput;
import org.eclipse.cdt.debug.internal.ui.views.disassembly.DisassemblyView;
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
@@ -21,7 +23,10 @@ import org.eclipse.cdt.debug.ui.ICDebugUIConstants;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.model.IDebugElement;
import org.eclipse.debug.core.model.ISuspendResume;
import org.eclipse.debug.internal.ui.DebugUIPlugin;
@@ -41,11 +46,8 @@ import org.eclipse.ui.texteditor.ITextEditor;
*/
public class RunToLineAdapter implements IRunToLineTarget {
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.debug.ui.actions.IRunToLineTarget#runToLine(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection,
- * org.eclipse.debug.core.model.ISuspendResume)
+ /* (non-Javadoc)
+ * @see org.eclipse.debug.ui.actions.IRunToLineTarget#runToLine(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection, org.eclipse.debug.core.model.ISuspendResume)
*/
public void runToLine( IWorkbenchPart part, ISelection selection, ISuspendResume target ) throws CoreException {
String errorMessage = null;
@@ -61,13 +63,24 @@ public class RunToLineAdapter implements IRunToLineTarget {
errorMessage = ActionMessages.getString( "RunToLineAdapter.Missing_document_1" ); //$NON-NLS-1$
}
else {
- String fileName = getFileName( input );
+ final String fileName = getFileName( input );
ITextSelection textSelection = (ITextSelection)selection;
- int lineNumber = textSelection.getStartLine() + 1;
+ final int lineNumber = textSelection.getStartLine() + 1;
if ( target instanceof IAdaptable ) {
- IRunToLine runToLine = (IRunToLine)((IAdaptable)target).getAdapter( IRunToLine.class );
+ final IRunToLine runToLine = (IRunToLine)((IAdaptable)target).getAdapter( IRunToLine.class );
if ( runToLine != null && runToLine.canRunToLine( fileName, lineNumber ) ) {
- runToLine.runToLine( fileName, lineNumber, DebugUIPlugin.getDefault().getPluginPreferences().getBoolean( IDebugUIConstants.PREF_SKIP_BREAKPOINTS_DURING_RUN_TO_LINE ) );
+ Runnable r = new Runnable() {
+
+ public void run() {
+ try {
+ runToLine.runToLine( fileName, lineNumber, DebugUIPlugin.getDefault().getPluginPreferences().getBoolean( IDebugUIConstants.PREF_SKIP_BREAKPOINTS_DURING_RUN_TO_LINE ) );
+ }
+ catch( DebugException e ) {
+ failed( e );
+ }
+ }
+ };
+ runInBackground( r );
}
}
return;
@@ -82,11 +95,22 @@ public class RunToLineAdapter implements IRunToLineTarget {
else {
ITextSelection textSelection = (ITextSelection)selection;
int lineNumber = textSelection.getStartLine() + 1;
- IAddress address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
+ final IAddress address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
if ( target instanceof IAdaptable ) {
- IRunToAddress runToAddress = (IRunToAddress)((IAdaptable)target).getAdapter( IRunToAddress.class );
+ final IRunToAddress runToAddress = (IRunToAddress)((IAdaptable)target).getAdapter( IRunToAddress.class );
if ( runToAddress != null && runToAddress.canRunToAddress( address ) ) {
- runToAddress.runToAddress( address, DebugUIPlugin.getDefault().getPluginPreferences().getBoolean( IDebugUIConstants.PREF_SKIP_BREAKPOINTS_DURING_RUN_TO_LINE ) );
+ Runnable r = new Runnable() {
+
+ public void run() {
+ try {
+ runToAddress.runToAddress( address, DebugUIPlugin.getDefault().getPluginPreferences().getBoolean( IDebugUIConstants.PREF_SKIP_BREAKPOINTS_DURING_RUN_TO_LINE ) );
+ }
+ catch( DebugException e ) {
+ failed( e );
+ }
+ }
+ };
+ runInBackground( r );
}
}
return;
@@ -98,11 +122,8 @@ public class RunToLineAdapter implements IRunToLineTarget {
throw new CoreException( new Status( IStatus.ERROR, CDebugUIPlugin.getUniqueIdentifier(), ICDebugUIConstants.INTERNAL_ERROR, errorMessage, null ) );
}
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.debug.ui.actions.IRunToLineTarget#canRunToLine(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection,
- * org.eclipse.debug.core.model.ISuspendResume)
+ /* (non-Javadoc)
+ * @see org.eclipse.debug.ui.actions.IRunToLineTarget#canRunToLine(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection, org.eclipse.debug.core.model.ISuspendResume)
*/
public boolean canRunToLine( IWorkbenchPart part, ISelection selection, ISuspendResume target ) {
if ( part instanceof DisassemblyView || part instanceof ITextEditor )
@@ -119,4 +140,14 @@ public class RunToLineAdapter implements IRunToLineTarget {
}
return null;
}
+
+ private void runInBackground( Runnable r ) {
+ DebugPlugin.getDefault().asyncExec( r );
+ }
+
+ protected void failed( Throwable e ) {
+ MultiStatus ms = new MultiStatus( CDIDebugModel.getPluginIdentifier(), ICDebugInternalConstants.STATUS_CODE_ERROR, ActionMessages.getString( "RunToLineAdapter.0" ), null ); //$NON-NLS-1$
+ ms.add( new Status( IStatus.ERROR, CDIDebugModel.getPluginIdentifier(), ICDebugInternalConstants.STATUS_CODE_ERROR, e.getMessage(), e ) );
+ CDebugUtils.error( ms, this );
+ }
} \ No newline at end of file

Back to the top