Refactor executables view support extension from com.nokia.carbide.cpp.edc to com.nokia.cdt.debug.common.
authortimkelly
Fri, 12 Mar 2010 12:26:03 -0600
changeset 1102 fc2867001a80
parent 1101 664feec309ff
child 1103 a5d7a2345c4a
Refactor executables view support extension from com.nokia.carbide.cpp.edc to com.nokia.cdt.debug.common.
debuggercdi/com.nokia.cdt.debug.common/META-INF/MANIFEST.MF
debuggercdi/com.nokia.cdt.debug.common/plugin.xml
debuggercdi/com.nokia.cdt.debug.common/src/com/nokia/cdt/debug/common/internal/executables/CarbideExecutablesProvider.java
debuggercdi/com.nokia.cdt.debug.common/src/com/nokia/cdt/debug/common/internal/executables/SymbianSourceFileRemapping.java
debuggercdi/com.nokia.cdt.debug.common/src/com/nokia/cdt/debug/common/internal/executables/SymbianSourceFileRemappingFactory.java
debuggercdi/com.nokia.cdt.debug.launch/META-INF/MANIFEST.MF
debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/AbstractSymbianLaunchShortcut.java
--- a/debuggercdi/com.nokia.cdt.debug.common/META-INF/MANIFEST.MF	Thu Mar 11 20:24:32 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.common/META-INF/MANIFEST.MF	Fri Mar 12 12:26:03 2010 -0600
@@ -6,8 +6,12 @@
 Bundle-Activator: com.nokia.cdt.debug.common.CarbideCommonDebuggerPlugin
 Bundle-Vendor: Nokia
 Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.cdt.core,
  org.eclipse.cdt.debug.core;bundle-version="7.0.0",
- org.eclipse.debug.core;bundle-version="3.6.0"
+ org.eclipse.debug.core;bundle-version="3.6.0",
+ com.nokia.carbide.cdt.builder;bundle-version="2.0.0",
+ org.eclipse.cdt.debug.edc
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
-Export-Package: com.nokia.cdt.debug.common.internal.source.lookup
+Export-Package: com.nokia.cdt.debug.common.internal.source.lookup, 
+ com.nokia.cdt.debug.common.internal.executables
--- a/debuggercdi/com.nokia.cdt.debug.common/plugin.xml	Thu Mar 11 20:24:32 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.common/plugin.xml	Fri Mar 12 12:26:03 2010 -0600
@@ -20,4 +20,21 @@
             name="Symbian OS SDK Mapping"/>
     </extension>
 
+    <!-- Executables view -->
+    
+   <extension
+       point="org.eclipse.cdt.debug.core.ExecutablesProvider">
+      <provider class="com.nokia.cdt.debug.common.internal.executables.CarbideExecutablesProvider"/>
+   </extension>
+  
+   <extension
+       point="org.eclipse.cdt.debug.core.SourceFilesProvider">
+      <provider class="org.eclipse.cdt.debug.edc.internal.symbols.EDCSourceFilesProvider"/>
+   </extension>
+
+	<extension
+       point="org.eclipse.cdt.debug.core.SourceRemappingProvider">
+      <provider class="com.nokia.cdt.debug.common.internal.executables.SymbianSourceFileRemappingFactory"/>
+   </extension>
+
 </plugin>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.common/src/com/nokia/cdt/debug/common/internal/executables/CarbideExecutablesProvider.java	Fri Mar 12 12:26:03 2010 -0600
@@ -0,0 +1,107 @@
+/*
+* 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.common.internal.executables;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.core.CCProjectNature;
+import org.eclipse.cdt.core.CProjectNature;
+import org.eclipse.cdt.debug.core.executables.Executable;
+import org.eclipse.cdt.debug.core.executables.IProjectExecutablesProvider;
+import org.eclipse.cdt.debug.core.executables.ISourceFileRemapping;
+import org.eclipse.core.resources.IProject;
+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.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+
+import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.EpocEngineHelper;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.cdt.debug.common.CarbideCommonDebuggerPlugin;
+
+public class CarbideExecutablesProvider implements IProjectExecutablesProvider {
+
+	List<String> supportedNatureIds = new ArrayList<String>();
+
+	public CarbideExecutablesProvider() {
+		supportedNatureIds.add(CProjectNature.C_NATURE_ID);
+		supportedNatureIds.add(CCProjectNature.CC_NATURE_ID);
+		supportedNatureIds.add(CarbideBuilderPlugin.CARBIDE_PROJECT_NATURE_ID);
+		supportedNatureIds.add(CarbideBuilderPlugin.CARBIDE_SBSV2_PROJECT_NATURE_ID);
+	}
+	
+	public List<String> getProjectNatures() {
+		return supportedNatureIds;
+	}
+
+	public List<Executable> getExecutables(IProject project, IProgressMonitor monitor) {
+		List<Executable> executables = new ArrayList<Executable>();
+
+		if (CarbideBuilderPlugin.getBuildManager().isCarbideProject(project)) {
+			ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
+			if (cpi != null) {
+				ICarbideBuildConfiguration config = cpi.getDefaultConfiguration();
+				if (config != null) {
+					List<IPath> mmps = EpocEngineHelper.getMMPFilesForBuildConfiguration(config);
+
+					SubMonitor progress = SubMonitor.convert(monitor, mmps.size());
+
+					for (IPath mmp : mmps) {
+						if (progress.isCanceled()) {
+							break;
+						}
+						
+						progress.subTask("Parsing " + mmp.lastSegment());
+
+	 					IPath hp = EpocEngineHelper.getHostPathForExecutable(config, mmp);
+						if (hp != null) {
+							File hpFile = hp.toFile();
+							if (hpFile.exists()) {
+								try {
+									Executable exe = new Executable(new Path(hpFile.getCanonicalPath()),
+											project, null, new ISourceFileRemapping[] {new SymbianSourceFileRemapping()});
+									executables.add(exe);
+								} catch (Exception e) {
+								}
+							}
+						}
+						
+						progress.worked(1);
+					}
+				}
+			}
+		}
+		
+		return executables;
+	}
+
+	public IStatus removeExecutable(Executable executable, IProgressMonitor monitor) {
+		try {
+			executable.getPath().toFile().delete();
+		} catch (Exception e) {
+			return new Status(IStatus.WARNING, CarbideCommonDebuggerPlugin.PLUGIN_ID, "An error occured trying to delete " + executable.getPath().toOSString());
+		}
+		return Status.OK_STATUS;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.common/src/com/nokia/cdt/debug/common/internal/executables/SymbianSourceFileRemapping.java	Fri Mar 12 12:26:03 2010 -0600
@@ -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.common.internal.executables;
+
+import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.debug.core.executables.ISourceFileRemapping;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.debug.core.sourcelookup.containers.LocalFileStorage;
+
+import com.nokia.cdt.debug.common.internal.source.lookup.SymbianSourceContainer;
+
+public class SymbianSourceFileRemapping implements ISourceFileRemapping {
+
+	public String remapSourceFile(IPath executable, String filePath) {
+
+		try {
+			// handle the case where the common lookup finds the file in the workspace
+			Object[] foundElements = CDebugCorePlugin.getDefault().getCommonSourceLookupDirector().findSourceElements(filePath);
+			if (foundElements.length == 1 && foundElements[0] instanceof IFile) {
+				IFile newLocation = (IFile) foundElements[0];
+				return newLocation.getLocation().toOSString();
+			}
+		} catch (CoreException e1) {
+		}
+		
+		String epocRoot = "";
+		String[] segs = executable.segments();
+		for (int i = 0; i < segs.length; i++) {
+			if (segs[i].equalsIgnoreCase("epoc32"))
+				epocRoot = executable.removeLastSegments(segs.length - i).toOSString();				
+		}
+		if (epocRoot.length() > 0)
+		{
+			SymbianSourceContainer symbianSourceContainer = new SymbianSourceContainer(new Path(epocRoot));
+			try {
+				Object[] foundElements = symbianSourceContainer.findSourceElements(filePath);
+				if (foundElements.length == 1)
+				{
+					if (foundElements[0] instanceof LocalFileStorage)
+					{
+						LocalFileStorage newLocation = (LocalFileStorage) foundElements[0];
+						filePath = newLocation.getFullPath().toOSString();
+					}
+					else
+					if (foundElements[0] instanceof IResource)
+					{
+						IResource newResource = (IResource) foundElements[0];
+						filePath = newResource.getLocation().toOSString();
+					}
+				}
+
+			} catch (CoreException e) {}
+		}
+		
+		return filePath;
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.common/src/com/nokia/cdt/debug/common/internal/executables/SymbianSourceFileRemappingFactory.java	Fri Mar 12 12:26:03 2010 -0600
@@ -0,0 +1,29 @@
+/*
+* 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.common.internal.executables;
+
+import org.eclipse.cdt.core.model.IBinary;
+import org.eclipse.cdt.debug.core.executables.ISourceFileRemapping;
+import org.eclipse.cdt.debug.core.executables.ISourceFileRemappingFactory;
+
+public class SymbianSourceFileRemappingFactory implements ISourceFileRemappingFactory {
+
+	public ISourceFileRemapping createRemapper(IBinary binary) {
+		return new SymbianSourceFileRemapping();
+	}
+
+}
--- a/debuggercdi/com.nokia.cdt.debug.launch/META-INF/MANIFEST.MF	Thu Mar 11 20:24:32 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/META-INF/MANIFEST.MF	Fri Mar 12 12:26:03 2010 -0600
@@ -7,7 +7,6 @@
 Bundle-Vendor: Nokia
 Bundle-Localization: plugin
 Require-Bundle: com.nokia.cdt.debug.common,
- org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.cdt.launch,
  org.eclipse.cdt.debug.core,
@@ -20,7 +19,6 @@
  org.eclipse.ui.console,
  com.freescale.swt,
  org.eclipse.ui.forms,
- com.nokia.carbide.cpp.support,
  org.eclipse.ui.ide,
  com.nokia.carbide.cpp.debug.kernelaware,
  com.nokia.carbide.cdt.builder,
@@ -29,8 +27,7 @@
  com.nokia.cpp.utils.core,
  com.freescale.cdt.debug.cw.core.ui,
  com.nokia.carbide.remoteConnections,
- com.nokia.cpp.utils.ui,
- com.nokia.carbide.cpp.edc;bundle-version="1.0.0"
+ com.nokia.cpp.utils.ui
 Bundle-ActivationPolicy: lazy
 Export-Package: com.nokia.cdt.internal.debug.launch,
  com.nokia.cdt.internal.debug.launch.ui,
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/AbstractSymbianLaunchShortcut.java	Thu Mar 11 20:24:32 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/AbstractSymbianLaunchShortcut.java	Fri Mar 12 12:26:03 2010 -0600
@@ -20,7 +20,7 @@
 import org.eclipse.ui.IFileEditorInput;
 
 import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
-import com.nokia.carbide.cpp.edc.executables.SymbianSourceFileRemapping;
+import com.nokia.cdt.debug.common.internal.executables.SymbianSourceFileRemapping;
 
 public abstract class AbstractSymbianLaunchShortcut implements ILaunchShortcut2 {