diff -r 000000000000 -r fb279309251b debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/CarbideSourcePathComputerDelegate.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/CarbideSourcePathComputerDelegate.java Fri Apr 03 23:33:03 2009 +0100 @@ -0,0 +1,76 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +package com.nokia.cdt.debug.cw.symbian; + +import java.util.ArrayList; + +import org.eclipse.cdt.debug.core.CDebugCorePlugin; +import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants; +import org.eclipse.cdt.debug.core.sourcelookup.AbsolutePathSourceContainer; +import org.eclipse.cdt.debug.core.sourcelookup.MappingSourceContainer; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.debug.core.ILaunchConfiguration; +import org.eclipse.debug.core.sourcelookup.ISourceContainer; +import org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate; +import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer; +import org.eclipse.core.runtime.Path; + +import com.freescale.cdt.debug.cw.core.CWPlugin; + +import cwdbg.PreferenceConstants; + +/** + * Computes the default source lookup path for a launch configuration. + */ +public class CarbideSourcePathComputerDelegate implements ISourcePathComputerDelegate { + + /** + * Constructor for CSourcePathComputerDelegate. + */ + public CarbideSourcePathComputerDelegate() { + super(); + } + + /* (non-Javadoc) + * @see org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate#computeSourceContainers(org.eclipse.debug.core.ILaunchConfiguration, org.eclipse.core.runtime.IProgressMonitor) + */ + public ISourceContainer[] computeSourceContainers( ILaunchConfiguration configuration, IProgressMonitor monitor ) throws CoreException { + ISourceContainer[] common = CDebugCorePlugin.getDefault().getCommonSourceLookupDirector().getSourceContainers(); + ArrayList containers = new ArrayList( common.length + 1 ); + for ( int i = 0; i < common.length; ++i ) { + ISourceContainer sc = common[i]; + if ( sc.getType().getId().equals( MappingSourceContainer.TYPE_ID ) ) + sc = ((MappingSourceContainer)sc).copy(); + containers.add( sc ); + } + String projectName = configuration.getAttribute( ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, (String)null ); + if (projectName != null && projectName.length() > 0) { + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject( projectName ); + if ( project.exists() ) { + containers.add( 0, new ProjectSourceContainer( project, true ) ); + } + } + if (CWPlugin.getDefault().getPluginPreferences().getBoolean( + CWPlugin.PSC_FindSourceOutsideWorkspace)) + containers.add( 0, new AbsolutePathSourceContainer() ); + return (ISourceContainer[])containers.toArray( new ISourceContainer[containers.size()] ); + } +}