diff --git a/debug/org.eclipse.cdt.debug.ui/.classpath b/debug/org.eclipse.cdt.debug.ui/.classpath
index 3ca60357b63..badc63c6a0a 100644
--- a/debug/org.eclipse.cdt.debug.ui/.classpath
+++ b/debug/org.eclipse.cdt.debug.ui/.classpath
@@ -8,6 +8,7 @@
+
diff --git a/debug/org.eclipse.cdt.debug.ui/.project b/debug/org.eclipse.cdt.debug.ui/.project
index 3c1535e67bd..c541fb48a55 100644
--- a/debug/org.eclipse.cdt.debug.ui/.project
+++ b/debug/org.eclipse.cdt.debug.ui/.project
@@ -4,6 +4,7 @@
org.eclipse.cdt.core
+ org.eclipse.cdt.core.win32
org.eclipse.cdt.debug.core
org.eclipse.cdt.ui
org.eclipse.core.boot
diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog
index 9f3f904e5b2..1a8a3b6f269 100644
--- a/debug/org.eclipse.cdt.debug.ui/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog
@@ -1,3 +1,14 @@
+2003-02-21 Mikhail Khodjaiants
+ Implementing the 'Attach Source' editor.
+ * plugin.properties
+ * plugin.xml
+ * icons/full/obj16/filenotfound_obj.gif: new
+ * CDTDebugModelPresentation.java
+ * AttachSourceEditor.java: new
+ * AttachSourceEditorInput.java: new
+ * FileNotFoundElement.java: new
+ * CUISourceLocator.java
+
2003-02-20 Mikhail Khodjaiants
Added the 'Association' column and the 'Restore Defaults' button to the SourceLookupBlock.
* SourceLookupBlock.java
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/filenotfound_obj.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/filenotfound_obj.gif
new file mode 100644
index 00000000000..1bb68c2d649
Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/filenotfound_obj.gif differ
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties
index f3634ca4b11..64628f274e1 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.properties
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties
@@ -55,6 +55,7 @@ CDebugActionGroup.name=C/C++ Debug
SourcePropertyPage.name=Source Lookup
DisassemblyEditor.name=Disassembly Editor
+AttachSourceEditor.name= Attach Source Editor
LoadSymbolsAction.label=Load Symbols
SignalAction.label=Resume With Signal
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml
index 6ac242e1617..5662a2ef913 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.xml
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml
@@ -1090,6 +1090,12 @@
class="org.eclipse.cdt.debug.internal.ui.editors.DisassemblyEditor"
id="org.eclipse.cdt.debug.ui.DisassemblyEditor">
+
+
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
index b34cdd34c37..db52925843f 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
@@ -34,7 +34,10 @@ import org.eclipse.cdt.debug.core.model.IState;
import org.eclipse.cdt.debug.core.sourcelookup.IDisassemblyStorage;
import org.eclipse.cdt.debug.internal.core.CDebugUtils;
import org.eclipse.cdt.debug.internal.core.sourcelookup.DisassemblyManager;
+import org.eclipse.cdt.debug.internal.ui.editors.AttachSourceEditor;
+import org.eclipse.cdt.debug.internal.ui.editors.AttachSourceEditorInput;
import org.eclipse.cdt.debug.internal.ui.editors.DisassemblyEditorInput;
+import org.eclipse.cdt.debug.internal.ui.editors.FileNotFoundElement;
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
import org.eclipse.cdt.internal.ui.util.ExternalEditorInput;
import org.eclipse.cdt.ui.CUIPlugin;
@@ -159,6 +162,10 @@ public class CDTDebugModelPresentation extends LabelProvider
{
return new DisassemblyEditorInput( (IStorage)element );
}
+ if ( element instanceof FileNotFoundElement )
+ {
+ return new AttachSourceEditorInput( (FileNotFoundElement)element );
+ }
return null;
}
@@ -169,6 +176,10 @@ public class CDTDebugModelPresentation extends LabelProvider
{
if ( input != null )
{
+ if ( input instanceof AttachSourceEditorInput )
+ {
+ return AttachSourceEditor.EDITOR_ID;
+ }
IEditorRegistry registry = PlatformUI.getWorkbench().getEditorRegistry();
IEditorDescriptor descriptor = registry.getDefaultEditor( input.getName() );
if ( descriptor != null )
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/AttachSourceEditor.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/AttachSourceEditor.java
new file mode 100644
index 00000000000..0461e38a29e
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/AttachSourceEditor.java
@@ -0,0 +1,382 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.editors;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation;
+import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator;
+import org.eclipse.cdt.debug.internal.ui.wizards.AddDirectorySourceLocationWizard;
+import org.eclipse.cdt.debug.internal.ui.wizards.AddSourceLocationWizard;
+import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.cdt.debug.ui.sourcelookup.INewSourceLocationWizard;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.model.IPersistableSourceLocator;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.ControlListener;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.ScrollBar;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.EditorPart;
+
+/**
+ * Enter type comment.
+ *
+ * @since: Feb 21, 2003
+ */
+public class AttachSourceEditor extends EditorPart
+ implements IPropertyChangeListener
+{
+ public static final String EDITOR_ID = CDebugUIPlugin.getUniqueIdentifier() + ".editor.AttachSourceEditor";
+
+ /** The horizontal scroll increment. */
+ private static final int HORIZONTAL_SCROLL_INCREMENT = 10;
+ /** The vertical scroll increment. */
+ private static final int VERTICAL_SCROLL_INCREMENT = 10;
+
+ private ScrolledComposite fScrolledComposite;
+ private Color fBackgroundColor;
+ private Color fForegroundColor;
+ private Color fSeparatorColor;
+ private List fBannerLabels= new ArrayList();
+ private List fHeaderLabels= new ArrayList();
+ private Font fFont;
+ private Button fAttachButton;
+ private Label fInputLabel;
+
+ /**
+ * Constructor for AttachSourceEditor.
+ */
+ public AttachSourceEditor()
+ {
+ super();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void doSave( IProgressMonitor monitor )
+ {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorPart#doSaveAs()
+ */
+ public void doSaveAs()
+ {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorPart#gotoMarker(org.eclipse.core.resources.IMarker)
+ */
+ public void gotoMarker( IMarker marker )
+ {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
+ */
+ public void init( IEditorSite site, IEditorInput input ) throws PartInitException
+ {
+ setInput( input );
+ setSite( site );
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorPart#isDirty()
+ */
+ public boolean isDirty()
+ {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorPart#isSaveAsAllowed()
+ */
+ public boolean isSaveAsAllowed()
+ {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createPartControl( Composite parent )
+ {
+ Display display = parent.getDisplay();
+ fBackgroundColor = display.getSystemColor( SWT.COLOR_LIST_BACKGROUND );
+ fForegroundColor = display.getSystemColor( SWT.COLOR_LIST_FOREGROUND );
+ fSeparatorColor = new Color( display, 152, 170, 203 );
+
+ JFaceResources.getFontRegistry().addListener( this );
+
+ fScrolledComposite = new ScrolledComposite( parent, SWT.H_SCROLL | SWT.V_SCROLL );
+ fScrolledComposite.setAlwaysShowScrollBars( false );
+ fScrolledComposite.setExpandHorizontal( true );
+ fScrolledComposite.setExpandVertical( true );
+ fScrolledComposite.addDisposeListener(
+ new DisposeListener()
+ {
+ public void widgetDisposed( DisposeEvent e )
+ {
+ JFaceResources.getFontRegistry().removeListener( AttachSourceEditor.this );
+ fScrolledComposite = null;
+ fSeparatorColor.dispose();
+ fSeparatorColor = null;
+ fBannerLabels.clear();
+ fHeaderLabels.clear();
+ if ( fFont != null )
+ {
+ fFont.dispose();
+ fFont = null;
+ }
+ }
+ } );
+
+ fScrolledComposite.addControlListener(
+ new ControlListener()
+ {
+ public void controlMoved( ControlEvent e )
+ {
+ }
+
+ public void controlResized( ControlEvent e )
+ {
+ Rectangle clientArea = fScrolledComposite.getClientArea();
+
+ ScrollBar verticalBar = fScrolledComposite.getVerticalBar();
+ verticalBar.setIncrement( VERTICAL_SCROLL_INCREMENT );
+ verticalBar.setPageIncrement( clientArea.height - verticalBar.getIncrement() );
+
+ ScrollBar horizontalBar = fScrolledComposite.getHorizontalBar();
+ horizontalBar.setIncrement( HORIZONTAL_SCROLL_INCREMENT );
+ horizontalBar.setPageIncrement( clientArea.width - horizontalBar.getIncrement() );
+ }
+ });
+
+ Composite composite = createComposite( fScrolledComposite );
+ composite.setLayout( new GridLayout() );
+
+ createTitleLabel( composite, "C/C++ File Editor" );
+ createLabel( composite, null );
+ createLabel( composite, null );
+
+ createHeadingLabel( composite, "Source not found" );
+
+ Composite separator = createCompositeSeparator( composite );
+ GridData data = new GridData( GridData.FILL_HORIZONTAL );
+ data.heightHint = 2;
+ separator.setLayoutData( data );
+
+ fInputLabel = createLabel( composite, "" );
+ createLabel( composite, "You can attach the source location by pressing the button below:" );
+ createLabel( composite, null );
+
+ fAttachButton = createButton( composite, "&Attach Source..." );
+ fAttachButton.addSelectionListener(
+ new SelectionListener()
+ {
+ public void widgetSelected( SelectionEvent event )
+ {
+ AttachSourceEditor.this.attachSourceLocation();
+ }
+
+ public void widgetDefaultSelected( SelectionEvent e )
+ {
+ }
+ } );
+
+ separator = createCompositeSeparator( composite );
+ data = new GridData( GridData.FILL_HORIZONTAL );
+ data.heightHint = 2;
+ separator.setLayoutData( data );
+
+ fScrolledComposite.setContent( composite );
+ fScrolledComposite.setMinSize( composite.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
+
+ if ( getEditorInput() != null )
+ {
+ setInputLabelText( getEditorInput().getName() );
+ }
+ }
+
+ private Composite createComposite( Composite parent )
+ {
+ Composite composite = new Composite( parent, SWT.NONE );
+ composite.setBackground( fBackgroundColor );
+ return composite;
+ }
+
+ private Label createLabel( Composite parent, String text )
+ {
+ Label label = new Label( parent, SWT.NONE );
+ if ( text != null )
+ label.setText( text );
+ label.setBackground( fBackgroundColor );
+ label.setForeground( fForegroundColor );
+ return label;
+ }
+
+ private Label createTitleLabel( Composite parent, String text )
+ {
+ Label label = new Label( parent, SWT.NONE );
+ if ( text != null )
+ label.setText( text );
+ label.setBackground( fBackgroundColor );
+ label.setForeground( fForegroundColor );
+ label.setFont( JFaceResources.getHeaderFont() );
+ fHeaderLabels.add( label );
+ return label;
+ }
+
+ private Label createHeadingLabel( Composite parent, String text )
+ {
+ Label label = new Label( parent, SWT.NONE );
+ if ( text != null )
+ label.setText( text );
+ label.setBackground( fBackgroundColor );
+ label.setForeground( fForegroundColor );
+ label.setFont( JFaceResources.getBannerFont() );
+ fBannerLabels.add( label );
+ return label;
+ }
+
+ private Composite createCompositeSeparator( Composite parent )
+ {
+ Composite composite = new Composite( parent, SWT.NONE );
+ composite.setBackground( fSeparatorColor );
+ return composite;
+ }
+
+ private Button createButton( Composite parent, String text )
+ {
+ Button button = new Button( parent, SWT.FLAT );
+ button.setBackground( fBackgroundColor );
+ button.setForeground( fForegroundColor );
+ if ( text != null )
+ button.setText( text );
+ return button;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IWorkbenchPart#setFocus()
+ */
+ public void setFocus()
+ {
+ if ( fAttachButton != null )
+ fAttachButton.setFocus();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+ */
+ public void propertyChange( PropertyChangeEvent event )
+ {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.EditorPart#setInput(org.eclipse.ui.IEditorInput)
+ */
+ protected void setInput( IEditorInput input )
+ {
+ super.setInput( input );
+ if ( input != null && fInputLabel != null )
+ setInputLabelText( getEditorInput().getName() );
+ }
+
+ private void setInputLabelText( String inputName )
+ {
+ fInputLabel.setText( MessageFormat.format( "There is no source for the file {0}", new String[] { inputName } ) );
+ }
+
+ protected void attachSourceLocation()
+ {
+ if ( getEditorInput() != null && getEditorInput().getAdapter( FileNotFoundElement.class ) != null )
+ {
+ FileNotFoundElement element = (FileNotFoundElement)getEditorInput().getAdapter( FileNotFoundElement.class );
+ if ( element.getLaunch() != null && element.getLaunch().getSourceLocator() instanceof IAdaptable )
+ {
+ ILaunch launch = element.getLaunch();
+ ICSourceLocator locator = (ICSourceLocator)((IAdaptable)element.getLaunch().getSourceLocator()).getAdapter( ICSourceLocator.class );
+ if ( locator != null )
+ {
+ IPath path = new Path( element.getName() );
+ INewSourceLocationWizard wizard = null;
+ if ( path.isAbsolute() )
+ {
+ path = path.removeLastSegments( 1 );
+ wizard = new AddDirectorySourceLocationWizard( path );
+ }
+ else
+ {
+ wizard = new AddSourceLocationWizard( locator.getSourceLocations() );
+ }
+ WizardDialog dialog = new WizardDialog( CDebugUIPlugin.getActiveWorkbenchShell(), wizard );
+ if ( dialog.open() == Window.OK )
+ {
+ ICSourceLocation[] locations = locator.getSourceLocations();
+ ArrayList list = new ArrayList( Arrays.asList( locations ) );
+ list.add( wizard.getSourceLocation() );
+ locator.setSourceLocations( (ICSourceLocation[])list.toArray( new ICSourceLocation[list.size()] ) );
+
+ if ( locator instanceof IPersistableSourceLocator )
+ {
+ ILaunchConfiguration configuration = launch.getLaunchConfiguration();
+ saveChanges( configuration, (IPersistableSourceLocator)launch.getSourceLocator() );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ protected void saveChanges( ILaunchConfiguration configuration, IPersistableSourceLocator locator )
+ {
+ try
+ {
+ ILaunchConfigurationWorkingCopy copy = configuration.copy( configuration.getName() );
+ copy.setAttribute( ILaunchConfiguration.ATTR_SOURCE_LOCATOR_MEMENTO, locator.getMemento() );
+ copy.doSave();
+ }
+ catch( CoreException e )
+ {
+ CDebugUIPlugin.errorDialog( e.getMessage(), (IStatus)null );
+ }
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/AttachSourceEditorInput.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/AttachSourceEditorInput.java
new file mode 100644
index 00000000000..09487ba7740
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/AttachSourceEditorInput.java
@@ -0,0 +1,78 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.editors;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPersistableElement;
+
+/**
+ * Enter type comment.
+ *
+ * @since: Feb 21, 2003
+ */
+public class AttachSourceEditorInput implements IEditorInput
+{
+ private FileNotFoundElement fElement = null;
+
+ /**
+ * Constructor for AttachSourceEditorInput.
+ */
+ public AttachSourceEditorInput( FileNotFoundElement element )
+ {
+ fElement = element;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#exists()
+ */
+ public boolean exists()
+ {
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
+ */
+ public ImageDescriptor getImageDescriptor()
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getName()
+ */
+ public String getName()
+ {
+ return ( fElement != null ) ? fElement.getName() : "";
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getPersistable()
+ */
+ public IPersistableElement getPersistable()
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getToolTipText()
+ */
+ public String getToolTipText()
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+ */
+ public Object getAdapter( Class adapter )
+ {
+ if ( adapter.equals( FileNotFoundElement.class ) )
+ return fElement;
+ return null;
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/FileNotFoundElement.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/FileNotFoundElement.java
new file mode 100644
index 00000000000..f6a760ffac9
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/FileNotFoundElement.java
@@ -0,0 +1,48 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui.editors;
+
+import org.eclipse.cdt.debug.core.model.IStackFrameInfo;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.model.IStackFrame;
+
+/**
+ * Enter type comment.
+ *
+ * @since: Feb 21, 2003
+ */
+public class FileNotFoundElement
+{
+ private IStackFrame fStackFrame;
+
+ /**
+ * Constructor for FileNotFoundElement.
+ */
+ public FileNotFoundElement( IStackFrame stackFrame )
+ {
+ fStackFrame = stackFrame;
+ }
+
+ public String getName()
+ {
+ IStackFrameInfo frameInfo = (IStackFrameInfo)fStackFrame.getAdapter( IStackFrameInfo.class );
+ if ( frameInfo != null && frameInfo.getFile() != null && frameInfo.getFile().length() > 0 )
+ {
+ return frameInfo.getFile();
+ }
+ return "";
+ }
+
+ public IStackFrame getStackFrame()
+ {
+ return fStackFrame;
+ }
+
+ public ILaunch getLaunch()
+ {
+ return ( fStackFrame != null ) ? fStackFrame.getLaunch() : null;
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/CUISourceLocator.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/CUISourceLocator.java
index a817ac209dc..7360d3198b2 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/CUISourceLocator.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/CUISourceLocator.java
@@ -12,6 +12,7 @@ import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator;
import org.eclipse.cdt.debug.core.sourcelookup.ISourceMode;
import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceLocator;
import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceManager;
+import org.eclipse.cdt.debug.internal.ui.editors.FileNotFoundElement;
import org.eclipse.cdt.debug.internal.ui.wizards.AddDirectorySourceLocationWizard;
import org.eclipse.cdt.debug.internal.ui.wizards.AddSourceLocationWizard;
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
@@ -219,11 +220,14 @@ public class CUISourceLocator implements IAdaptable
IStackFrameInfo frameInfo = (IStackFrameInfo)stackFrame.getAdapter( IStackFrameInfo.class );
if ( frameInfo != null && frameInfo.getFile() != null && frameInfo.getFile().length() > 0 )
{
+/*
showDebugSourcePage( stackFrame.getLaunch(), frameInfo.getFile() );
if ( fNewLocationAttached )
{
res = fSourceLocator.getSourceElement( stackFrame );
}
+*/
+ res = new FileNotFoundElement( stackFrame );
}
}
return res;