mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
The extension of CEditor that displays the 'Source Not Found' form.
This commit is contained in:
parent
a895d01561
commit
2ef508ee7f
12 changed files with 850 additions and 480 deletions
|
@ -1,3 +1,16 @@
|
||||||
|
2003-03-05 Mikhail Khodjaiants
|
||||||
|
The extension of CEditor that displays the 'Source Not Found' form.
|
||||||
|
* plugin.properties
|
||||||
|
* plugin.xml
|
||||||
|
* CDTDebugModelPresentation.java
|
||||||
|
* AttachSourceEditor.java: removed
|
||||||
|
* AttachSourceEditorInput.java: removed
|
||||||
|
* FileNotFoundElement.java: new
|
||||||
|
* CDebugDocumentProvider.java: new
|
||||||
|
* CDebugEditor.java: new
|
||||||
|
* EditorInputDelegate.java: new
|
||||||
|
* ManageBreakpointRulerActionDelegate.java
|
||||||
|
|
||||||
2003-02-28 Mikhail Khodjaiants
|
2003-02-28 Mikhail Khodjaiants
|
||||||
Check if part is not null when set the selection.
|
Check if part is not null when set the selection.
|
||||||
* AddExpressionActionDelegate.java
|
* AddExpressionActionDelegate.java
|
||||||
|
|
|
@ -56,6 +56,7 @@ SourcePropertyPage.name=Source Lookup
|
||||||
|
|
||||||
DisassemblyEditor.name=Disassembly Editor
|
DisassemblyEditor.name=Disassembly Editor
|
||||||
AttachSourceEditor.name= Attach Source Editor
|
AttachSourceEditor.name= Attach Source Editor
|
||||||
|
CDebugEditor.name= C/C++ Debug Editor
|
||||||
|
|
||||||
LoadSymbolsAction.label=Load Symbols
|
LoadSymbolsAction.label=Load Symbols
|
||||||
SignalAction.label=Resume With Signal
|
SignalAction.label=Resume With Signal
|
||||||
|
|
|
@ -964,6 +964,22 @@
|
||||||
</enablement>
|
</enablement>
|
||||||
</action>
|
</action>
|
||||||
</editorContribution>
|
</editorContribution>
|
||||||
|
<editorContribution
|
||||||
|
targetID="org.eclipse.cdt.debug.ui.editor.CDebugEditor"
|
||||||
|
id="org.eclipse.cdt.debug.ui.CEditor.BreakpointRulerActions">
|
||||||
|
<action
|
||||||
|
label="%Dummy.label"
|
||||||
|
class="org.eclipse.cdt.debug.internal.ui.actions.ManageBreakpointRulerActionDelegate"
|
||||||
|
actionID="RulerDoubleClick"
|
||||||
|
id="org.eclipse.cdt.debug.ui.CEditor.ManageBreakpointRulerAction">
|
||||||
|
<enablement>
|
||||||
|
<pluginState
|
||||||
|
value="activated"
|
||||||
|
id="org.eclipse.cdt.debug.ui">
|
||||||
|
</pluginState>
|
||||||
|
</enablement>
|
||||||
|
</action>
|
||||||
|
</editorContribution>
|
||||||
<editorContribution
|
<editorContribution
|
||||||
targetID="org.eclipse.cdt.ui.editor.asm.AsmEditor"
|
targetID="org.eclipse.cdt.ui.editor.asm.AsmEditor"
|
||||||
id="org.eclipse.cdt.ui.editor.asm.AsmEditor.BreakpointRulerActions">
|
id="org.eclipse.cdt.ui.editor.asm.AsmEditor.BreakpointRulerActions">
|
||||||
|
@ -1091,10 +1107,10 @@
|
||||||
id="org.eclipse.cdt.debug.ui.DisassemblyEditor">
|
id="org.eclipse.cdt.debug.ui.DisassemblyEditor">
|
||||||
</editor>
|
</editor>
|
||||||
<editor
|
<editor
|
||||||
name="%AttachSourceEditor.name"
|
name="%CDebugEditor.name"
|
||||||
icon="icons/full/obj16/filenotfound_obj.gif"
|
icon="icons/full/obj16/filenotfound_obj.gif"
|
||||||
class="org.eclipse.cdt.debug.internal.ui.editors.AttachSourceEditor"
|
class="org.eclipse.cdt.debug.internal.ui.editors.CDebugEditor"
|
||||||
id="org.eclipse.cdt.debug.ui.editor.AttachSourceEditor">
|
id="org.eclipse.cdt.debug.ui.editor.CDebugEditor">
|
||||||
</editor>
|
</editor>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
||||||
|
|
|
@ -34,9 +34,9 @@ import org.eclipse.cdt.debug.core.model.IState;
|
||||||
import org.eclipse.cdt.debug.core.sourcelookup.IDisassemblyStorage;
|
import org.eclipse.cdt.debug.core.sourcelookup.IDisassemblyStorage;
|
||||||
import org.eclipse.cdt.debug.internal.core.CDebugUtils;
|
import org.eclipse.cdt.debug.internal.core.CDebugUtils;
|
||||||
import org.eclipse.cdt.debug.internal.core.sourcelookup.DisassemblyManager;
|
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.CDebugEditor;
|
||||||
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.DisassemblyEditorInput;
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.editors.EditorInputDelegate;
|
||||||
import org.eclipse.cdt.debug.internal.ui.editors.FileNotFoundElement;
|
import org.eclipse.cdt.debug.internal.ui.editors.FileNotFoundElement;
|
||||||
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
|
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
|
||||||
import org.eclipse.cdt.internal.ui.util.ExternalEditorInput;
|
import org.eclipse.cdt.internal.ui.util.ExternalEditorInput;
|
||||||
|
@ -164,7 +164,7 @@ public class CDTDebugModelPresentation extends LabelProvider
|
||||||
}
|
}
|
||||||
if ( element instanceof FileNotFoundElement )
|
if ( element instanceof FileNotFoundElement )
|
||||||
{
|
{
|
||||||
return new AttachSourceEditorInput( (FileNotFoundElement)element );
|
return new EditorInputDelegate( (FileNotFoundElement)element );
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -174,17 +174,24 @@ public class CDTDebugModelPresentation extends LabelProvider
|
||||||
*/
|
*/
|
||||||
public String getEditorId( IEditorInput input, Object element )
|
public String getEditorId( IEditorInput input, Object element )
|
||||||
{
|
{
|
||||||
|
if ( input instanceof EditorInputDelegate )
|
||||||
|
{
|
||||||
|
if ( ((EditorInputDelegate)input).getDelegate() == null )
|
||||||
|
return CDebugEditor.EDITOR_ID;
|
||||||
|
else
|
||||||
|
return getEditorId( ((EditorInputDelegate)input).getDelegate(), element );
|
||||||
|
}
|
||||||
|
|
||||||
|
String id = null;
|
||||||
if ( input != null )
|
if ( input != null )
|
||||||
{
|
{
|
||||||
if ( input instanceof AttachSourceEditorInput )
|
|
||||||
{
|
|
||||||
return AttachSourceEditor.EDITOR_ID;
|
|
||||||
}
|
|
||||||
IEditorRegistry registry = PlatformUI.getWorkbench().getEditorRegistry();
|
IEditorRegistry registry = PlatformUI.getWorkbench().getEditorRegistry();
|
||||||
IEditorDescriptor descriptor = registry.getDefaultEditor( input.getName() );
|
IEditorDescriptor descriptor = registry.getDefaultEditor( input.getName() );
|
||||||
if ( descriptor != null )
|
id = ( descriptor != null ) ? descriptor.getId() : CUIPlugin.EDITOR_ID;
|
||||||
return descriptor.getId();
|
}
|
||||||
return CUIPlugin.EDITOR_ID;
|
if ( CUIPlugin.EDITOR_ID.equals( id ) )
|
||||||
|
{
|
||||||
|
return CDebugEditor.EDITOR_ID;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
|
|
||||||
package org.eclipse.cdt.debug.internal.ui.actions;
|
package org.eclipse.cdt.debug.internal.ui.actions;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.editors.CDebugEditor;
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.editors.DisassemblyEditor;
|
||||||
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
import org.eclipse.jface.action.IAction;
|
import org.eclipse.jface.action.IAction;
|
||||||
import org.eclipse.jface.text.source.IVerticalRulerInfo;
|
import org.eclipse.jface.text.source.IVerticalRulerInfo;
|
||||||
import org.eclipse.ui.IEditorPart;
|
import org.eclipse.ui.IEditorPart;
|
||||||
|
@ -20,9 +23,7 @@ import org.eclipse.ui.texteditor.ITextEditor;
|
||||||
*/
|
*/
|
||||||
public class ManageBreakpointRulerActionDelegate extends AbstractRulerActionDelegate
|
public class ManageBreakpointRulerActionDelegate extends AbstractRulerActionDelegate
|
||||||
{
|
{
|
||||||
static final private String C_EDITOR_ID = "org.eclipse.cdt.ui.editor.CEditor"; //$NON-NLS-1$
|
|
||||||
static final private String ASM_EDITOR_ID = "org.eclipse.cdt.ui.editor.asm.AsmEditor"; //$NON-NLS-1$
|
static final private String ASM_EDITOR_ID = "org.eclipse.cdt.ui.editor.asm.AsmEditor"; //$NON-NLS-1$
|
||||||
static final private String DISASSEMBLY_EDITOR_ID = "org.eclipse.cdt.debug.ui.DisassemblyEditor"; //$NON-NLS-1$
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see IEditorActionDelegate#setActiveEditor(IAction, IEditorPart)
|
* @see IEditorActionDelegate#setActiveEditor(IAction, IEditorPart)
|
||||||
|
@ -32,7 +33,10 @@ public class ManageBreakpointRulerActionDelegate extends AbstractRulerActionDele
|
||||||
if ( targetEditor != null )
|
if ( targetEditor != null )
|
||||||
{
|
{
|
||||||
String id = targetEditor.getSite().getId();
|
String id = targetEditor.getSite().getId();
|
||||||
if ( !id.equals( C_EDITOR_ID ) && !id.equals( ASM_EDITOR_ID ) && !id.equals( DISASSEMBLY_EDITOR_ID ) )
|
if ( !id.equals( CDebugEditor.EDITOR_ID ) &&
|
||||||
|
!id.equals( CUIPlugin.EDITOR_ID ) &&
|
||||||
|
!id.equals( ASM_EDITOR_ID ) &&
|
||||||
|
!id.equals( DisassemblyEditor.DISASSEMBLY_EDITOR_ID ) )
|
||||||
targetEditor = null;
|
targetEditor = null;
|
||||||
}
|
}
|
||||||
super.setActiveEditor( callerAction, targetEditor );
|
super.setActiveEditor( callerAction, targetEditor );
|
||||||
|
|
|
@ -1,382 +0,0 @@
|
||||||
/*
|
|
||||||
*(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 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,78 +0,0 @@
|
||||||
/*
|
|
||||||
*(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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
/*
|
||||||
|
*(c) Copyright QNX Software Systems Ltd. 2002.
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.eclipse.cdt.debug.internal.ui.editors;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
|
||||||
|
import org.eclipse.cdt.internal.ui.editor.CDocumentProvider;
|
||||||
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
|
import org.eclipse.core.resources.IStorage;
|
||||||
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.core.runtime.IStatus;
|
||||||
|
import org.eclipse.core.runtime.Status;
|
||||||
|
import org.eclipse.jface.text.IDocument;
|
||||||
|
import org.eclipse.jface.text.IDocumentPartitioner;
|
||||||
|
import org.eclipse.jface.text.source.IAnnotationModel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Enter type comment.
|
||||||
|
*
|
||||||
|
* @since Mar 4, 2003
|
||||||
|
*/
|
||||||
|
public class CDebugDocumentProvider extends CDocumentProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @see org.eclipse.ui.texteditor.AbstractDocumentProvider#createDocument(Object)
|
||||||
|
*/
|
||||||
|
protected IDocument createDocument( Object element ) throws CoreException
|
||||||
|
{
|
||||||
|
if ( element instanceof EditorInputDelegate )
|
||||||
|
{
|
||||||
|
if ( ((EditorInputDelegate)element).getDelegate() != null )
|
||||||
|
{
|
||||||
|
return super.createDocument( ((EditorInputDelegate)element).getDelegate() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
IDocument document = null;
|
||||||
|
IStorage storage = ((EditorInputDelegate)element).getStorage();
|
||||||
|
if ( storage != null )
|
||||||
|
{
|
||||||
|
document = new CDocument();
|
||||||
|
setDocumentContent( document, storage.getContents(), getDefaultEncoding() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ( document != null)
|
||||||
|
{
|
||||||
|
IDocumentPartitioner partitioner= CUIPlugin.getDefault().getTextTools().createDocumentPartitioner();
|
||||||
|
partitioner.connect( document );
|
||||||
|
document.setDocumentPartitioner( partitioner );
|
||||||
|
}
|
||||||
|
return document;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.createDocument( element );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.eclipse.ui.texteditor.IDocumentProviderExtension#getStatus(Object)
|
||||||
|
*/
|
||||||
|
public IStatus getStatus( Object element )
|
||||||
|
{
|
||||||
|
if ( element instanceof EditorInputDelegate )
|
||||||
|
{
|
||||||
|
if ( ((EditorInputDelegate)element).getDelegate() != null )
|
||||||
|
{
|
||||||
|
return super.getStatus( ((EditorInputDelegate)element).getDelegate() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return createFileNotFoundStatus( ((EditorInputDelegate)element).getElement() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.getStatus( element );
|
||||||
|
}
|
||||||
|
|
||||||
|
private IStatus createFileNotFoundStatus( FileNotFoundElement element )
|
||||||
|
{
|
||||||
|
return new Status( IStatus.INFO, CDebugUIPlugin.getUniqueIdentifier(), 0, "", null );
|
||||||
|
}
|
||||||
|
|
||||||
|
protected IAnnotationModel createAnnotationModel( Object element ) throws CoreException
|
||||||
|
{
|
||||||
|
if ( element instanceof EditorInputDelegate && ((EditorInputDelegate)element).getDelegate() != null )
|
||||||
|
return super.createAnnotationModel( ((EditorInputDelegate)element).getDelegate() );
|
||||||
|
return super.createAnnotationModel( element );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,495 @@
|
||||||
|
/*
|
||||||
|
*(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.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.resources.FileStorage;
|
||||||
|
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.cdt.internal.ui.editor.CEditor;
|
||||||
|
import org.eclipse.cdt.internal.ui.util.ExternalEditorInput;
|
||||||
|
import org.eclipse.core.resources.IFile;
|
||||||
|
import org.eclipse.core.resources.IStorage;
|
||||||
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.core.runtime.IAdaptable;
|
||||||
|
import org.eclipse.core.runtime.IPath;
|
||||||
|
import org.eclipse.core.runtime.IStatus;
|
||||||
|
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.debug.core.model.IStackFrame;
|
||||||
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
import org.eclipse.debug.ui.IDebugView;
|
||||||
|
import org.eclipse.jface.resource.JFaceResources;
|
||||||
|
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||||
|
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||||
|
import org.eclipse.jface.viewers.StructuredSelection;
|
||||||
|
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.Control;
|
||||||
|
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.IViewPart;
|
||||||
|
import org.eclipse.ui.part.FileEditorInput;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enter type comment.
|
||||||
|
*
|
||||||
|
* @since: Feb 26, 2003
|
||||||
|
*/
|
||||||
|
public class CDebugEditor extends CEditor
|
||||||
|
{
|
||||||
|
public class AttachSourceForm implements IPropertyChangeListener
|
||||||
|
{
|
||||||
|
/** The horizontal scroll increment. */
|
||||||
|
private static final int HORIZONTAL_SCROLL_INCREMENT = 10;
|
||||||
|
/** The vertical scroll increment. */
|
||||||
|
private static final int VERTICAL_SCROLL_INCREMENT = 10;
|
||||||
|
/** The form's root widget */
|
||||||
|
private Font fFont;
|
||||||
|
/** The form's root widget */
|
||||||
|
private ScrolledComposite fScrolledComposite;
|
||||||
|
/** The background color */
|
||||||
|
private Color fBackgroundColor;
|
||||||
|
/** The foreground color */
|
||||||
|
private Color fForegroundColor;
|
||||||
|
/** The separator's color */
|
||||||
|
private Color fSeparatorColor;
|
||||||
|
/** The form headers */
|
||||||
|
private List fHeaderLabels = new ArrayList();
|
||||||
|
/** The form banners */
|
||||||
|
private List fBannerLabels = new ArrayList();
|
||||||
|
/** The form text */
|
||||||
|
private Label fInputLabel;
|
||||||
|
/** The attach source button */
|
||||||
|
private Button fAttachButton = null;
|
||||||
|
/** The preference change listener */
|
||||||
|
private IPropertyChangeListener fPropertyChangeListener;
|
||||||
|
|
||||||
|
private IEditorInput fInput = null;
|
||||||
|
|
||||||
|
public AttachSourceForm( Composite parent, IEditorInput input )
|
||||||
|
{
|
||||||
|
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( AttachSourceForm.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( AttachSourceForm.this );
|
||||||
|
setScrolledComposite( null );
|
||||||
|
getSeparatorColor().dispose();
|
||||||
|
setSeparatorColor( null );
|
||||||
|
getBannerLabels().clear();
|
||||||
|
getHeaderLabels().clear();
|
||||||
|
if ( getFont() != null )
|
||||||
|
{
|
||||||
|
getFont().dispose();
|
||||||
|
setFont( null );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
|
||||||
|
fScrolledComposite.addControlListener(
|
||||||
|
new ControlListener()
|
||||||
|
{
|
||||||
|
public void controlMoved( ControlEvent e )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void controlResized(ControlEvent e)
|
||||||
|
{
|
||||||
|
Rectangle clientArea = getScrolledComposite().getClientArea();
|
||||||
|
|
||||||
|
ScrollBar verticalBar = getScrolledComposite().getVerticalBar();
|
||||||
|
verticalBar.setIncrement( VERTICAL_SCROLL_INCREMENT );
|
||||||
|
verticalBar.setPageIncrement( clientArea.height - verticalBar.getIncrement() );
|
||||||
|
|
||||||
|
ScrollBar horizontalBar = getScrolledComposite().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 a new source location by pressing the button below:" );
|
||||||
|
createLabel( composite, null );
|
||||||
|
|
||||||
|
fAttachButton = createButton( composite, "&Attach Source..." );
|
||||||
|
fAttachButton.addSelectionListener(
|
||||||
|
new SelectionListener()
|
||||||
|
{
|
||||||
|
public void widgetSelected( SelectionEvent event )
|
||||||
|
{
|
||||||
|
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() );
|
||||||
|
}
|
||||||
|
|
||||||
|
fInput = input;
|
||||||
|
}
|
||||||
|
|
||||||
|
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.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
|
||||||
|
*/
|
||||||
|
public void propertyChange( PropertyChangeEvent event )
|
||||||
|
{
|
||||||
|
for ( Iterator iterator = fBannerLabels.iterator(); iterator.hasNext(); )
|
||||||
|
{
|
||||||
|
Label label = (Label)iterator.next();
|
||||||
|
label.setFont( JFaceResources.getBannerFont() );
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( Iterator iterator = fHeaderLabels.iterator(); iterator.hasNext(); )
|
||||||
|
{
|
||||||
|
Label label = (Label)iterator.next();
|
||||||
|
label.setFont( JFaceResources.getHeaderFont() );
|
||||||
|
}
|
||||||
|
|
||||||
|
Control control = fScrolledComposite.getContent();
|
||||||
|
fScrolledComposite.setMinSize( control.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
|
||||||
|
fScrolledComposite.setContent( control );
|
||||||
|
|
||||||
|
fScrolledComposite.layout( true );
|
||||||
|
fScrolledComposite.redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setInputLabelText( IEditorInput input )
|
||||||
|
{
|
||||||
|
FileNotFoundElement element = (FileNotFoundElement)input.getAdapter( FileNotFoundElement.class );
|
||||||
|
if ( element != null )
|
||||||
|
{
|
||||||
|
IPath path = element.getFullPath();
|
||||||
|
String message = "";
|
||||||
|
if ( path.isAbsolute() )
|
||||||
|
message = MessageFormat.format( "The file ''{0}'' does not exist.", new String[] { element.getFullPath().toOSString() } );
|
||||||
|
else
|
||||||
|
message = MessageFormat.format( "The file ''{0}'' not found.", new String[] { element.getFullPath().toOSString() } );
|
||||||
|
fInputLabel.setText( message );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ScrolledComposite getScrolledComposite()
|
||||||
|
{
|
||||||
|
return fScrolledComposite;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setScrolledComposite( ScrolledComposite scrolledComposite )
|
||||||
|
{
|
||||||
|
fScrolledComposite = scrolledComposite;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Color getSeparatorColor()
|
||||||
|
{
|
||||||
|
return fSeparatorColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setSeparatorColor( Color separatorColor )
|
||||||
|
{
|
||||||
|
fSeparatorColor = separatorColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List getBannerLabels()
|
||||||
|
{
|
||||||
|
return fBannerLabels;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setBannerLabels( List bannerLabels )
|
||||||
|
{
|
||||||
|
fBannerLabels = bannerLabels;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List getHeaderLabels()
|
||||||
|
{
|
||||||
|
return fHeaderLabels;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setHeaderLabels( List headerLabels )
|
||||||
|
{
|
||||||
|
fHeaderLabels = headerLabels;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Font getFont()
|
||||||
|
{
|
||||||
|
return fFont;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setFont( Font font )
|
||||||
|
{
|
||||||
|
fFont = font;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Control getControl()
|
||||||
|
{
|
||||||
|
return fScrolledComposite;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEditorInput getInput()
|
||||||
|
{
|
||||||
|
return fInput;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final String EDITOR_ID = CDebugUIPlugin.getUniqueIdentifier() + ".editor.CDebugEditor";
|
||||||
|
|
||||||
|
private AttachSourceForm fAttachSourceForm = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for CDebugEditor.
|
||||||
|
*/
|
||||||
|
public CDebugEditor()
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
setDocumentProvider( CDebugUIPlugin.getDefault().getDocumentProvider() );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
|
||||||
|
*/
|
||||||
|
public void createPartControl( Composite parent )
|
||||||
|
{
|
||||||
|
super.createPartControl( parent );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.ui.texteditor.AbstractTextEditor#doSetInput(org.eclipse.ui.IEditorInput)
|
||||||
|
*/
|
||||||
|
protected void doSetInput( IEditorInput input ) throws CoreException
|
||||||
|
{
|
||||||
|
IEditorInput newInput = input;
|
||||||
|
if ( input instanceof EditorInputDelegate && ((EditorInputDelegate)input).getDelegate() != null )
|
||||||
|
newInput = ((EditorInputDelegate)input).getDelegate();
|
||||||
|
super.doSetInput( newInput );
|
||||||
|
}
|
||||||
|
|
||||||
|
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 = element.getFullPath();
|
||||||
|
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() );
|
||||||
|
}
|
||||||
|
Object newElement = locator.getSourceElement( element.getStackFrame() );
|
||||||
|
IEditorInput newInput = null;
|
||||||
|
if ( newElement instanceof IFile )
|
||||||
|
{
|
||||||
|
newInput = new FileEditorInput( (IFile)newElement );
|
||||||
|
}
|
||||||
|
else if ( newElement instanceof FileStorage )
|
||||||
|
{
|
||||||
|
newInput = new ExternalEditorInput( (IStorage)newElement );
|
||||||
|
}
|
||||||
|
((EditorInputDelegate)getEditorInput()).setDelegate( newInput );
|
||||||
|
resetInput( element.getStackFrame() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetInput( IStackFrame frame )
|
||||||
|
{
|
||||||
|
setInput( getEditorInput() );
|
||||||
|
IViewPart view = CDebugUIPlugin.getActivePage().findView( IDebugUIConstants.ID_DEBUG_VIEW );
|
||||||
|
if ( view instanceof IDebugView )
|
||||||
|
{
|
||||||
|
((IDebugView)view).getViewer().setSelection( new StructuredSelection( frame ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.eclipse.ui.texteditor.StatusTextEditor#createStatusControl(Composite, IStatus)
|
||||||
|
*/
|
||||||
|
protected Control createStatusControl( Composite parent, IStatus status )
|
||||||
|
{
|
||||||
|
fAttachSourceForm = new AttachSourceForm( parent, getEditorInput() );
|
||||||
|
return fAttachSourceForm.getControl();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.eclipse.ui.texteditor.StatusTextEditor#updatePartControl(IEditorInput)
|
||||||
|
*/
|
||||||
|
public void updatePartControl( IEditorInput input )
|
||||||
|
{
|
||||||
|
if ( fAttachSourceForm != null )
|
||||||
|
{
|
||||||
|
if ( fAttachSourceForm.getInput() != null && !fAttachSourceForm.getInput().equals( input ) )
|
||||||
|
{
|
||||||
|
fAttachSourceForm = null;
|
||||||
|
super.updatePartControl( input );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
super.updatePartControl( input );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,173 @@
|
||||||
|
/*
|
||||||
|
*(c) Copyright QNX Software Systems Ltd. 2002.
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.eclipse.cdt.debug.internal.ui.editors;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
import org.eclipse.core.resources.IStorage;
|
||||||
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.core.runtime.IPath;
|
||||||
|
import org.eclipse.jface.resource.ImageDescriptor;
|
||||||
|
import org.eclipse.ui.IEditorInput;
|
||||||
|
import org.eclipse.ui.IPersistableElement;
|
||||||
|
import org.eclipse.ui.IStorageEditorInput;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Enter type comment.
|
||||||
|
*
|
||||||
|
* @since Mar 4, 2003
|
||||||
|
*/
|
||||||
|
public class EditorInputDelegate implements IEditorInput
|
||||||
|
{
|
||||||
|
public static final int TYPE_ATTACH_SOURCE = 0;
|
||||||
|
public static final int TYPE_WORKSPACE_FILE = 1;
|
||||||
|
public static final int TYPE_EXTERNAL_FILE = 2;
|
||||||
|
|
||||||
|
private int fType = TYPE_ATTACH_SOURCE;
|
||||||
|
private IEditorInput fDelegate = null;
|
||||||
|
private FileNotFoundElement fElement = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for EditorInputDelegate.
|
||||||
|
*/
|
||||||
|
public EditorInputDelegate( FileNotFoundElement element )
|
||||||
|
{
|
||||||
|
fElement = element;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.eclipse.ui.IEditorInput#exists()
|
||||||
|
*/
|
||||||
|
public boolean exists()
|
||||||
|
{
|
||||||
|
if ( fDelegate != null )
|
||||||
|
return fDelegate.exists();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.eclipse.ui.IEditorInput#getImageDescriptor()
|
||||||
|
*/
|
||||||
|
public ImageDescriptor getImageDescriptor()
|
||||||
|
{
|
||||||
|
if ( fDelegate != null )
|
||||||
|
return fDelegate.getImageDescriptor();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.eclipse.ui.IEditorInput#getName()
|
||||||
|
*/
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
if ( fDelegate != null )
|
||||||
|
return fDelegate.getName();
|
||||||
|
return ( fElement != null ) ? fElement.getName() : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.eclipse.ui.IEditorInput#getPersistable()
|
||||||
|
*/
|
||||||
|
public IPersistableElement getPersistable()
|
||||||
|
{
|
||||||
|
if ( fDelegate != null )
|
||||||
|
return fDelegate.getPersistable();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.eclipse.ui.IEditorInput#getToolTipText()
|
||||||
|
*/
|
||||||
|
public String getToolTipText()
|
||||||
|
{
|
||||||
|
if ( fDelegate != null )
|
||||||
|
return fDelegate.getToolTipText();
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(Class)
|
||||||
|
*/
|
||||||
|
public Object getAdapter( Class adapter )
|
||||||
|
{
|
||||||
|
if ( adapter.equals( FileNotFoundElement.class ) )
|
||||||
|
return fElement;
|
||||||
|
if ( getDelegate() != null )
|
||||||
|
return getDelegate().getAdapter( adapter );
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getType()
|
||||||
|
{
|
||||||
|
return fType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType( int type )
|
||||||
|
{
|
||||||
|
fType = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEditorInput getDelegate()
|
||||||
|
{
|
||||||
|
return fDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDelegate( IEditorInput input )
|
||||||
|
{
|
||||||
|
fDelegate = input;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IStorage getStorage() throws CoreException
|
||||||
|
{
|
||||||
|
if ( getDelegate() instanceof IStorageEditorInput )
|
||||||
|
return ((IStorageEditorInput)getDelegate()).getStorage();
|
||||||
|
return getDummyStorage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private IStorage getDummyStorage()
|
||||||
|
{
|
||||||
|
return new IStorage()
|
||||||
|
{
|
||||||
|
public InputStream getContents() throws CoreException
|
||||||
|
{
|
||||||
|
return new ByteArrayInputStream( new byte[0] );
|
||||||
|
}
|
||||||
|
|
||||||
|
public IPath getFullPath()
|
||||||
|
{
|
||||||
|
if ( getElement() != null )
|
||||||
|
return getElement().getFullPath();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
if ( getElement() != null )
|
||||||
|
return getElement().getName();
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isReadOnly()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getAdapter( Class adapter )
|
||||||
|
{
|
||||||
|
if ( adapter.equals( IStorage.class ) )
|
||||||
|
return this;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected FileNotFoundElement getElement()
|
||||||
|
{
|
||||||
|
return fElement;
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,11 +6,13 @@
|
||||||
package org.eclipse.cdt.debug.internal.ui.editors;
|
package org.eclipse.cdt.debug.internal.ui.editors;
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.core.model.IStackFrameInfo;
|
import org.eclipse.cdt.debug.core.model.IStackFrameInfo;
|
||||||
|
import org.eclipse.core.runtime.IPath;
|
||||||
|
import org.eclipse.core.runtime.Path;
|
||||||
import org.eclipse.debug.core.ILaunch;
|
import org.eclipse.debug.core.ILaunch;
|
||||||
import org.eclipse.debug.core.model.IStackFrame;
|
import org.eclipse.debug.core.model.IStackFrame;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enter type comment.
|
* The source locator creates an instance of this class if it cannot find the file specified in stack frame.
|
||||||
*
|
*
|
||||||
* @since: Feb 21, 2003
|
* @since: Feb 21, 2003
|
||||||
*/
|
*/
|
||||||
|
@ -26,14 +28,24 @@ public class FileNotFoundElement
|
||||||
fStackFrame = stackFrame;
|
fStackFrame = stackFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName()
|
public IPath getFullPath()
|
||||||
{
|
{
|
||||||
IStackFrameInfo frameInfo = (IStackFrameInfo)fStackFrame.getAdapter( IStackFrameInfo.class );
|
IStackFrameInfo frameInfo = (IStackFrameInfo)fStackFrame.getAdapter( IStackFrameInfo.class );
|
||||||
if ( frameInfo != null && frameInfo.getFile() != null && frameInfo.getFile().length() > 0 )
|
if ( frameInfo != null && frameInfo.getFile() != null && frameInfo.getFile().length() > 0 )
|
||||||
{
|
{
|
||||||
return frameInfo.getFile();
|
Path path = new Path( frameInfo.getFile() );
|
||||||
|
if ( path.isValidPath( frameInfo.getFile() ) )
|
||||||
|
{
|
||||||
|
return path;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return "";
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
IPath path = getFullPath();
|
||||||
|
return ( path != null ) ? path.lastSegment() : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
public IStackFrame getStackFrame()
|
public IStackFrame getStackFrame()
|
||||||
|
|
|
@ -13,6 +13,7 @@ import org.eclipse.cdt.debug.core.sourcelookup.IDisassemblyStorage;
|
||||||
import org.eclipse.cdt.debug.internal.ui.CDTDebugModelPresentation;
|
import org.eclipse.cdt.debug.internal.ui.CDTDebugModelPresentation;
|
||||||
import org.eclipse.cdt.debug.internal.ui.CDebugImageDescriptorRegistry;
|
import org.eclipse.cdt.debug.internal.ui.CDebugImageDescriptorRegistry;
|
||||||
import org.eclipse.cdt.debug.internal.ui.ColorManager;
|
import org.eclipse.cdt.debug.internal.ui.ColorManager;
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.editors.CDebugDocumentProvider;
|
||||||
import org.eclipse.cdt.debug.internal.ui.editors.DisassemblyDocumentProvider;
|
import org.eclipse.cdt.debug.internal.ui.editors.DisassemblyDocumentProvider;
|
||||||
import org.eclipse.cdt.debug.internal.ui.editors.DisassemblyEditorInput;
|
import org.eclipse.cdt.debug.internal.ui.editors.DisassemblyEditorInput;
|
||||||
import org.eclipse.cdt.debug.internal.ui.preferences.CDebugPreferencePage;
|
import org.eclipse.cdt.debug.internal.ui.preferences.CDebugPreferencePage;
|
||||||
|
@ -75,6 +76,9 @@ public class CDebugUIPlugin extends AbstractUIPlugin
|
||||||
// Document provider for disassembly editor
|
// Document provider for disassembly editor
|
||||||
private DisassemblyDocumentProvider fDisassemblyDocumentProvider = null;
|
private DisassemblyDocumentProvider fDisassemblyDocumentProvider = null;
|
||||||
|
|
||||||
|
// Document provider for C/C++ debug editor
|
||||||
|
private CDebugDocumentProvider fDocumentProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The constructor.
|
* The constructor.
|
||||||
*/
|
*/
|
||||||
|
@ -497,4 +501,16 @@ public class CDebugUIPlugin extends AbstractUIPlugin
|
||||||
display.asyncExec( runnable );
|
display.asyncExec( runnable );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the used document provider
|
||||||
|
*/
|
||||||
|
public CDebugDocumentProvider getDocumentProvider()
|
||||||
|
{
|
||||||
|
if (fDocumentProvider == null)
|
||||||
|
{
|
||||||
|
fDocumentProvider = new CDebugDocumentProvider();
|
||||||
|
}
|
||||||
|
return fDocumentProvider;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue