mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 14:42:11 +02:00
Bug 279473: Custom C/C++ Debuggers need a way to add their source containers to the preference page "C/C++, Debug, Common Source Lookup Path".
This commit is contained in:
parent
3d7ad1a899
commit
d76cfab002
4 changed files with 151 additions and 12 deletions
|
@ -11,6 +11,7 @@
|
||||||
# Ken Ryall (Nokia) - Added support for breakpoint problems( 170027 )
|
# Ken Ryall (Nokia) - Added support for breakpoint problems( 170027 )
|
||||||
# Ken Ryall (Nokia) - Added support for Breakpoint Actions ( 118308 )
|
# Ken Ryall (Nokia) - Added support for Breakpoint Actions ( 118308 )
|
||||||
# IBM Corporation
|
# IBM Corporation
|
||||||
|
# Texas Instruments - added extension point for source container type (279473)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
pluginName=C/C++ Development Tools Debug Model
|
pluginName=C/C++ Development Tools Debug Model
|
||||||
providerName=Eclipse CDT
|
providerName=Eclipse CDT
|
||||||
|
@ -21,6 +22,7 @@ PostMortemLaunch.name=C/C++ Postmortem Debugger
|
||||||
|
|
||||||
CDebugger.name=C/C++ Development Tools Core Debugger Extension
|
CDebugger.name=C/C++ Development Tools Core Debugger Extension
|
||||||
BreakpointAction.name=Breakpoint Action Extension
|
BreakpointAction.name=Breakpoint Action Extension
|
||||||
|
SupportedSourceContainerTypes.name=C/C++ Supported Source Container Types Extension
|
||||||
|
|
||||||
cLineBreakpoints.name=C/C++ Line Breakpoints
|
cLineBreakpoints.name=C/C++ Line Breakpoints
|
||||||
cAddressBreakpoints.name=C/C++ Address Breakpoints
|
cAddressBreakpoints.name=C/C++ Address Breakpoints
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
<extension-point id="CDebugger" name="%CDebugger.name" schema="schema/CDebugger.exsd"/>
|
<extension-point id="CDebugger" name="%CDebugger.name" schema="schema/CDebugger.exsd"/>
|
||||||
<extension-point id="BreakpointActionType" name="%BreakpointAction" schema="schema/BreakpointAction.exsd"/>
|
<extension-point id="BreakpointActionType" name="%BreakpointAction" schema="schema/BreakpointAction.exsd"/>
|
||||||
<extension-point id="BreakpointExtension" name="%BreakpointAction" schema="schema/BreakpointExtension.exsd"/>
|
<extension-point id="BreakpointExtension" name="%BreakpointAction" schema="schema/BreakpointExtension.exsd"/>
|
||||||
|
<extension-point id="supportedSourceContainerTypes" name="%SupportedSourceContainerTypes.name" schema="schema/SupportedSourceContainerTypes.exsd"/>
|
||||||
|
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.debug.core.launchConfigurationTypes">
|
point="org.eclipse.debug.core.launchConfigurationTypes">
|
||||||
|
@ -256,5 +257,20 @@
|
||||||
markerType="org.eclipse.cdt.debug.core.cBreakpointMarker">
|
markerType="org.eclipse.cdt.debug.core.cBreakpointMarker">
|
||||||
</breakpointExtension>
|
</breakpointExtension>
|
||||||
</extension>
|
</extension>
|
||||||
|
<extension
|
||||||
|
point="org.eclipse.cdt.debug.core.supportedSourceContainerTypes">
|
||||||
|
<sourceContainer
|
||||||
|
id="org.eclipse.cdt.debug.core.containerType.absolutePath"/>
|
||||||
|
<sourceContainer
|
||||||
|
id="org.eclipse.cdt.debug.core.containerType.mapping"/>
|
||||||
|
<sourceContainer
|
||||||
|
id="org.eclipse.debug.core.containerType.folder"/>
|
||||||
|
<sourceContainer
|
||||||
|
id="org.eclipse.debug.core.containerType.workspace"/>
|
||||||
|
<sourceContainer
|
||||||
|
id="org.eclipse.debug.core.containerType.directory"/>
|
||||||
|
<sourceContainer
|
||||||
|
id="org.eclipse.debug.core.containerType.project"/>
|
||||||
|
</extension>
|
||||||
|
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
|
@ -0,0 +1,105 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Schema file written by PDE -->
|
||||||
|
<schema targetNamespace="org.eclipse.cdt.debug.core" xmlns="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<annotation>
|
||||||
|
<appInfo>
|
||||||
|
<meta.schema plugin="org.eclipse.cdt.debug.core" id="supportedSourceContainerTypes" name="C/C++ Supported Source Container Types Extension"/>
|
||||||
|
</appInfo>
|
||||||
|
<documentation>
|
||||||
|
The extension point provides a mechanism for contributing source container types to the preference page "C/C++, Debug,Common Source Lookup Path".
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
|
||||||
|
<element name="extension">
|
||||||
|
<annotation>
|
||||||
|
<appInfo>
|
||||||
|
<meta.element />
|
||||||
|
</appInfo>
|
||||||
|
</annotation>
|
||||||
|
<complexType>
|
||||||
|
<sequence minOccurs="1" maxOccurs="unbounded">
|
||||||
|
<element ref="sourceContainer" minOccurs="1" maxOccurs="unbounded"/>
|
||||||
|
</sequence>
|
||||||
|
<attribute name="point" type="string" use="required">
|
||||||
|
<annotation>
|
||||||
|
<documentation>
|
||||||
|
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="id" type="string">
|
||||||
|
<annotation>
|
||||||
|
<documentation>
|
||||||
|
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="name" type="string">
|
||||||
|
<annotation>
|
||||||
|
<documentation>
|
||||||
|
|
||||||
|
</documentation>
|
||||||
|
<appInfo>
|
||||||
|
<meta.attribute translatable="true"/>
|
||||||
|
</appInfo>
|
||||||
|
</annotation>
|
||||||
|
</attribute>
|
||||||
|
</complexType>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="sourceContainer">
|
||||||
|
<complexType>
|
||||||
|
<attribute name="id" type="string" use="required">
|
||||||
|
<annotation>
|
||||||
|
<documentation>
|
||||||
|
Value of this attribute must be a contribution to the extension point "org.eclipse.debug.core.sourceContainerTypes".
|
||||||
|
</documentation>
|
||||||
|
<appInfo>
|
||||||
|
<meta.attribute kind="identifier"/>
|
||||||
|
</appInfo>
|
||||||
|
</annotation>
|
||||||
|
</attribute>
|
||||||
|
</complexType>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
|
||||||
|
<annotation>
|
||||||
|
<appInfo>
|
||||||
|
<meta.section type="examples"/>
|
||||||
|
</appInfo>
|
||||||
|
<documentation>
|
||||||
|
In the above example, C debugger specifies that it supports absolutePath contaner type.
|
||||||
|
<pre>
|
||||||
|
<extension
|
||||||
|
point="org.eclipse.cdt.debug.core.supportedSourceContainerTypes">
|
||||||
|
<sourceContainer
|
||||||
|
id="org.eclipse.cdt.debug.core.containerType.absolutePath"/>
|
||||||
|
</extension>
|
||||||
|
</pre>
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
|
||||||
|
<annotation>
|
||||||
|
<appInfo>
|
||||||
|
<meta.section type="apiinfo"/>
|
||||||
|
</appInfo>
|
||||||
|
<documentation>
|
||||||
|
Value of the attribute id must be a contribution to the extension point "org.eclipse.debug.core.sourceContainerTypes".
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
|
||||||
|
|
||||||
|
<annotation>
|
||||||
|
<appInfo>
|
||||||
|
<meta.section type="copyright"/>
|
||||||
|
</appInfo>
|
||||||
|
<documentation>
|
||||||
|
Copyright (c) 2009 Texas Instruments and others
|
||||||
|
All rights reserved. This program and the accompanying materials
|
||||||
|
are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
which accompanies this distribution, and is available at
|
||||||
|
http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
|
||||||
|
</schema>
|
|
@ -7,7 +7,8 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
* Nokia - Added support for AbsoluteSourceContainer( 159833 )
|
* Nokia - Added support for AbsoluteSourceContainer( 159833 )
|
||||||
|
* Texas Instruments - added extension point for source container type (279473)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.internal.core.sourcelookup;
|
package org.eclipse.cdt.debug.internal.core.sourcelookup;
|
||||||
|
|
||||||
|
@ -15,6 +16,7 @@ import java.io.File;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
||||||
import org.eclipse.cdt.debug.core.model.ICBreakpoint;
|
import org.eclipse.cdt.debug.core.model.ICBreakpoint;
|
||||||
import org.eclipse.cdt.debug.core.sourcelookup.AbsolutePathSourceContainer;
|
import org.eclipse.cdt.debug.core.sourcelookup.AbsolutePathSourceContainer;
|
||||||
import org.eclipse.cdt.debug.core.sourcelookup.MappingSourceContainer;
|
import org.eclipse.cdt.debug.core.sourcelookup.MappingSourceContainer;
|
||||||
|
@ -22,8 +24,12 @@ import org.eclipse.core.resources.IContainer;
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.core.runtime.IConfigurationElement;
|
||||||
|
import org.eclipse.core.runtime.IExtension;
|
||||||
|
import org.eclipse.core.runtime.IExtensionPoint;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
|
import org.eclipse.core.runtime.Platform;
|
||||||
import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
|
import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
|
||||||
import org.eclipse.debug.core.sourcelookup.ISourceContainer;
|
import org.eclipse.debug.core.sourcelookup.ISourceContainer;
|
||||||
import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
|
import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
|
||||||
|
@ -31,7 +37,6 @@ import org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant;
|
||||||
import org.eclipse.debug.core.sourcelookup.containers.DirectorySourceContainer;
|
import org.eclipse.debug.core.sourcelookup.containers.DirectorySourceContainer;
|
||||||
import org.eclipse.debug.core.sourcelookup.containers.FolderSourceContainer;
|
import org.eclipse.debug.core.sourcelookup.containers.FolderSourceContainer;
|
||||||
import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer;
|
import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer;
|
||||||
import org.eclipse.debug.core.sourcelookup.containers.WorkspaceSourceContainer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* C/C++ source lookup director.
|
* C/C++ source lookup director.
|
||||||
|
@ -39,16 +44,7 @@ import org.eclipse.debug.core.sourcelookup.containers.WorkspaceSourceContainer;
|
||||||
public class CSourceLookupDirector extends AbstractSourceLookupDirector {
|
public class CSourceLookupDirector extends AbstractSourceLookupDirector {
|
||||||
|
|
||||||
private static Set<String> fSupportedTypes;
|
private static Set<String> fSupportedTypes;
|
||||||
|
private static Object fSupportedTypesLock = new Object();
|
||||||
static {
|
|
||||||
fSupportedTypes = new HashSet<String>();
|
|
||||||
fSupportedTypes.add( WorkspaceSourceContainer.TYPE_ID );
|
|
||||||
fSupportedTypes.add( ProjectSourceContainer.TYPE_ID );
|
|
||||||
fSupportedTypes.add( FolderSourceContainer.TYPE_ID );
|
|
||||||
fSupportedTypes.add( DirectorySourceContainer.TYPE_ID );
|
|
||||||
fSupportedTypes.add( MappingSourceContainer.TYPE_ID );
|
|
||||||
fSupportedTypes.add( AbsolutePathSourceContainer.TYPE_ID );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#initializeParticipants()
|
* @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#initializeParticipants()
|
||||||
|
@ -60,6 +56,7 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
|
||||||
* @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#supportsSourceContainerType(org.eclipse.debug.core.sourcelookup.ISourceContainerType)
|
* @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#supportsSourceContainerType(org.eclipse.debug.core.sourcelookup.ISourceContainerType)
|
||||||
*/
|
*/
|
||||||
public boolean supportsSourceContainerType( ISourceContainerType type ) {
|
public boolean supportsSourceContainerType( ISourceContainerType type ) {
|
||||||
|
readSupportedContainerTypes();
|
||||||
return fSupportedTypes.contains( type.getId() );
|
return fSupportedTypes.contains( type.getId() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,4 +189,23 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
|
||||||
}
|
}
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// >> Bugzilla 279473
|
||||||
|
private void readSupportedContainerTypes() {
|
||||||
|
synchronized (fSupportedTypesLock) {
|
||||||
|
if( fSupportedTypes == null) {
|
||||||
|
fSupportedTypes = new HashSet<String>();
|
||||||
|
String name = CDebugCorePlugin.PLUGIN_ID+".supportedSourceContainerTypes"; //$NON-NLS-1$;
|
||||||
|
IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint( name);
|
||||||
|
if( extensionPoint != null)
|
||||||
|
for( IExtension extension : extensionPoint.getExtensions())
|
||||||
|
for( IConfigurationElement configurationElements : extension.getConfigurationElements()) {
|
||||||
|
String id = configurationElements.getAttribute("id");//$NON-NLS-1$;
|
||||||
|
if( id != null)
|
||||||
|
fSupportedTypes.add(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// << Bugzilla 279473
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue