debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/CarbideExecutablesProvider.java
author timkelly
Thu, 11 Mar 2010 14:50:13 -0600
changeset 1099 88ab187cbeb8
parent 994 1ffe668575e7
permissions -rw-r--r--
Refactor source mapping to com.nokia.cdt.debug.common plugin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     1
/*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     3
* All rights reserved.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     8
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    11
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    12
* Contributors:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    13
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    14
* Description: 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    15
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    16
*/
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    17
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    18
package com.nokia.cdt.debug.cw.symbian;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    19
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    20
import java.io.File;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    21
import java.util.ArrayList;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    22
import java.util.List;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    23
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    24
import org.eclipse.cdt.core.CCProjectNature;
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    25
import org.eclipse.cdt.core.CProjectNature;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    26
import org.eclipse.cdt.debug.core.executables.Executable;
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    27
import org.eclipse.cdt.debug.core.executables.IProjectExecutablesProvider;
994
1ffe668575e7 update to work with Helios and CDT 7.0.
wpaul
parents: 438
diff changeset
    28
import org.eclipse.cdt.debug.core.executables.ISourceFileRemapping;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    29
import org.eclipse.core.resources.IProject;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    30
import org.eclipse.core.runtime.IPath;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    31
import org.eclipse.core.runtime.IProgressMonitor;
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    32
import org.eclipse.core.runtime.IStatus;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    33
import org.eclipse.core.runtime.Path;
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    34
import org.eclipse.core.runtime.Status;
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    35
import org.eclipse.core.runtime.SubMonitor;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    36
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    37
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    38
import com.nokia.carbide.cdt.builder.EpocEngineHelper;
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    39
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    40
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
994
1ffe668575e7 update to work with Helios and CDT 7.0.
wpaul
parents: 438
diff changeset
    41
import com.nokia.cdt.debug.cw.symbian.ui.executables.SymbianSourceFileRemapping;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    42
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    43
public class CarbideExecutablesProvider implements IProjectExecutablesProvider {
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    44
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    45
	List<String> supportedNatureIds = new ArrayList<String>();
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    46
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    47
	public CarbideExecutablesProvider() {
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    48
		supportedNatureIds.add(CProjectNature.C_NATURE_ID);
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    49
		supportedNatureIds.add(CCProjectNature.CC_NATURE_ID);
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    50
		supportedNatureIds.add(CarbideBuilderPlugin.CARBIDE_PROJECT_NATURE_ID);
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    51
		supportedNatureIds.add(CarbideBuilderPlugin.CARBIDE_SBSV2_PROJECT_NATURE_ID);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    52
	}
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    53
	
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    54
	public List<String> getProjectNatures() {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    55
		return supportedNatureIds;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    56
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    57
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    58
	public List<Executable> getExecutables(IProject project, IProgressMonitor monitor) {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    59
		List<Executable> executables = new ArrayList<Executable>();
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    60
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    61
		if (CarbideBuilderPlugin.getBuildManager().isCarbideProject(project)) {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    62
			ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    63
			if (cpi != null) {
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    64
				ICarbideBuildConfiguration config = cpi.getDefaultConfiguration();
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    65
				if (config != null) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    66
					List<IPath> mmps = EpocEngineHelper.getMMPFilesForBuildConfiguration(config);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    67
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    68
					SubMonitor progress = SubMonitor.convert(monitor, mmps.size());
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    69
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    70
					for (IPath mmp : mmps) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    71
						if (progress.isCanceled()) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    72
							break;
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    73
						}
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    74
						
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    75
						progress.subTask("Parsing " + mmp.lastSegment());
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    76
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    77
	 					IPath hp = EpocEngineHelper.getHostPathForExecutable(config, mmp);
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    78
						if (hp != null) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    79
							File hpFile = hp.toFile();
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    80
							if (hpFile.exists()) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    81
								try {
994
1ffe668575e7 update to work with Helios and CDT 7.0.
wpaul
parents: 438
diff changeset
    82
									Executable exe = new Executable(new Path(hpFile.getCanonicalPath()),
1ffe668575e7 update to work with Helios and CDT 7.0.
wpaul
parents: 438
diff changeset
    83
											project, null, new ISourceFileRemapping[] {new SymbianSourceFileRemapping()});
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    84
									executables.add(exe);
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    85
								} catch (Exception e) {
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    86
								}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    87
							}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    88
						}
438
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    89
						
1137da10d4e5 fixed bug #9283.
wpaul
parents: 194
diff changeset
    90
						progress.worked(1);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    91
					}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    92
				}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    93
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    94
		}
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    95
		
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    96
		return executables;
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    97
	}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    98
194
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
    99
	public IStatus removeExecutable(Executable executable, IProgressMonitor monitor) {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
   100
		try {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
   101
			executable.getPath().toFile().delete();
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
   102
		} catch (Exception e) {
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
   103
			return new Status(IStatus.WARNING, SymbianPlugin.PLUGIN_ID, "An error occured trying to delete " + executable.getPath().toOSString());
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
   104
		}
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
   105
		return Status.OK_STATUS;
5dd39ff8dbd0 executables view changes
wpaul
parents: 0
diff changeset
   106
	}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   107
}