Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Implementation of the 'Run To Line' action for disassembly

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/ChangeLog,v
retrieving revision 1.71
diff -u -r1.71 ChangeLog
--- ChangeLog 13 Jan 2003 15:55:40 -0000 1.71
+++ ChangeLog 13 Jan 2003 22:28:07 -0000
@@ -1,3 +1,7 @@
+2003-01-10 Mikhail Khodjaiants
+ Implementation of the 'Run To Line' action for disassembly.
+ * RunToLineActionDelegate.java
+
 2003-01-13 Alain Magloire
 
  * src/org/eclipse/cdt/debug/internal/ui/editors/DebugTextHover.java (getHoverInfo):
Index: src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineActionDelegate.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineActionDelegate.java,v
retrieving revision 1.4
diff -u -r1.4 RunToLineActionDelegate.java
--- src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineActionDelegate.java 2 Dec 2002 23:22:19 -0000 1.4
+++ src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineActionDelegate.java 13 Jan 2003 22:28:08 -0000
@@ -5,10 +5,14 @@
  */
 package org.eclipse.cdt.debug.internal.ui.actions;
 
+import org.eclipse.cdt.debug.core.model.IRunToAddress;
 import org.eclipse.cdt.debug.core.model.IRunToLine;
+import org.eclipse.cdt.debug.core.sourcelookup.IDisassemblyStorage;
 import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.model.IDebugElement;
@@ -21,6 +25,7 @@
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IStorageEditorInput;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.texteditor.ITextEditor;
 
@@ -52,11 +57,30 @@
     IFile file = ((IFileEditorInput)input).getFile();
     if ( file != null )
     {
-     ITextSelection selection= (ITextSelection)((ITextEditor)getTargetPart()).getSelectionProvider().getSelection();
+     ITextSelection selection = (ITextSelection)((ITextEditor)getTargetPart()).getSelectionProvider().getSelection();
      int lineNumber = selection.getStartLine() + 1;
      runToLine( file, lineNumber );
     }
    }
+   else if ( input != null && input instanceof IStorageEditorInput )
+   {
+    try
+    {
+     IStorage storage = ((IStorageEditorInput)input).getStorage();
+     if ( storage != null && storage.getAdapter( IDisassemblyStorage.class ) != null )
+     {
+      IDisassemblyStorage disassemblyStorage = (IDisassemblyStorage)storage.getAdapter( IDisassemblyStorage.class );
+      ITextSelection selection = (ITextSelection)((ITextEditor)getTargetPart()).getSelectionProvider().getSelection();
+      int lineNumber = selection.getStartLine();
+      long address = disassemblyStorage.getAddress( lineNumber );
+      if ( address > 0 )
+       runToAddress( address );
+     }
+    }
+    catch( CoreException e )
+    {
+    }
+   }
   }
  }
 
@@ -115,6 +139,27 @@
    try
    {
     target.runToLine( resource, lineNumber );
+   }
+   catch( DebugException e )
+   {
+    CDebugUIPlugin.errorDialog( e.getMessage(), e );
+   }
+  }
+ }
+
+ protected void runToAddress( long address )
+ {
+  IRunToAddress target = (IRunToAddress)getDebugTarget().getAdapter( IRunToAddress.class );
+  if ( target != null )
+  {
+   if ( !target.canRunToAddress( address ) )
+   {
+    getTargetPart().getSite().getShell().getDisplay().beep();
+    return;
+   }
+   try
+   {
+    target.runToAddress( address );
    }
    catch( DebugException e )
    {

Back to the top