cdt/cdt_6_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableProvider.java
author stechong
Thu, 25 Feb 2010 23:33:10 -0600
branchRCL_2_4
changeset 136 c488f61fb898
parent 134 e4dfdbcc0926
permissions -rw-r--r--
(no commit message)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
     1
/*******************************************************************************
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
     2
 * Copyright (c) 2008 Nokia and others.
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
     3
 * All rights reserved. This program and the accompanying materials
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
     4
 * are made available under the terms of the Eclipse Public License v1.0
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
     5
 * which accompanies this distribution, and is available at
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
     6
 * http://www.eclipse.org/legal/epl-v10.html
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
     7
 *
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
     8
 * Contributors:
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
     9
 * Nokia - Initial API and implementation
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    10
 *******************************************************************************/
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    11
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    12
package org.eclipse.cdt.debug.core.executables;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    13
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    14
import java.util.ArrayList;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    15
import java.util.List;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    16
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    17
import org.eclipse.cdt.core.CCProjectNature;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    18
import org.eclipse.cdt.core.CProjectNature;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    19
import org.eclipse.cdt.core.model.CModelException;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    20
import org.eclipse.cdt.core.model.IBinary;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    21
import org.eclipse.cdt.core.model.ICProject;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    22
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    23
import org.eclipse.cdt.internal.core.model.CModelManager;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    24
import org.eclipse.core.resources.IProject;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    25
import org.eclipse.core.resources.IResource;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    26
import org.eclipse.core.runtime.CoreException;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    27
import org.eclipse.core.runtime.IPath;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    28
import org.eclipse.core.runtime.IProgressMonitor;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    29
import org.eclipse.core.runtime.IStatus;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    30
import org.eclipse.core.runtime.Status;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    31
import org.eclipse.core.runtime.SubMonitor;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    32
import org.eclipse.debug.core.DebugPlugin;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    33
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    34
public class StandardExecutableProvider implements IProjectExecutablesProvider {
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    35
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    36
	List<String> supportedNatureIds = new ArrayList<String>();
60
3982fab6369e fixed executables view merge problems - bug #'s 9562, 9568, 9571.
wpaul
parents: 52
diff changeset
    37
	
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    38
	public StandardExecutableProvider() {
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    39
		supportedNatureIds.add(CProjectNature.C_NATURE_ID);
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    40
		supportedNatureIds.add(CCProjectNature.CC_NATURE_ID);
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    41
	}
60
3982fab6369e fixed executables view merge problems - bug #'s 9562, 9568, 9571.
wpaul
parents: 52
diff changeset
    42
	
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    43
	public List<String> getProjectNatures() {
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    44
		return supportedNatureIds;
60
3982fab6369e fixed executables view merge problems - bug #'s 9562, 9568, 9571.
wpaul
parents: 52
diff changeset
    45
	}
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    46
60
3982fab6369e fixed executables view merge problems - bug #'s 9562, 9568, 9571.
wpaul
parents: 52
diff changeset
    47
	public List<Executable> getExecutables(IProject project, IProgressMonitor monitor) {
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    48
		List<Executable> executables = new ArrayList<Executable>();
60
3982fab6369e fixed executables view merge problems - bug #'s 9562, 9568, 9571.
wpaul
parents: 52
diff changeset
    49
		
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    50
		ICProject cproject = CModelManager.getDefault().create(project);
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    51
		try {
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    52
			IBinary[] binaries = cproject.getBinaryContainer().getBinaries();
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    53
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    54
			SubMonitor progress = SubMonitor.convert(monitor, binaries.length);
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    55
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    56
			for (IBinary binary : binaries) {
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    57
				if (progress.isCanceled()) {
136
c488f61fb898 (no commit message)
stechong
parents: 134
diff changeset
    58
					break;
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    59
				}
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    60
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    61
				if (binary.isExecutable() || binary.isSharedLib()) {
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    62
					IPath exePath = binary.getResource().getLocation();
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    63
					if (exePath == null)
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    64
						exePath = binary.getPath();
60
3982fab6369e fixed executables view merge problems - bug #'s 9562, 9568, 9571.
wpaul
parents: 52
diff changeset
    65
					executables.add(new Executable(exePath, project, binary.getResource()));
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    66
				}
60
3982fab6369e fixed executables view merge problems - bug #'s 9562, 9568, 9571.
wpaul
parents: 52
diff changeset
    67
				
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    68
				progress.worked(1);
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    69
			}
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    70
		} catch (CModelException e) {
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    71
		}
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    72
		
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    73
		return executables;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    74
	}
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    75
60
3982fab6369e fixed executables view merge problems - bug #'s 9562, 9568, 9571.
wpaul
parents: 52
diff changeset
    76
	public IStatus removeExecutable(Executable executable, IProgressMonitor monitor) {
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    77
		IResource exeResource = executable.getResource();
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    78
		if (exeResource != null) {
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    79
			try {
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    80
				exeResource.delete(true, monitor);
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    81
			} catch (CoreException e) {
60
3982fab6369e fixed executables view merge problems - bug #'s 9562, 9568, 9571.
wpaul
parents: 52
diff changeset
    82
				DebugPlugin.log( e );
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    83
			}
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    84
			return Status.OK_STATUS;
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    85
		}
60
3982fab6369e fixed executables view merge problems - bug #'s 9562, 9568, 9571.
wpaul
parents: 52
diff changeset
    86
		return new Status(IStatus.WARNING, CDebugCorePlugin.PLUGIN_ID, "Can't remove " + executable.getName() + ": it is built by project \"" + executable.getProject().getName() + "\"");
52
42077b7eab6e Second merge to proper cdt_6_0 branch for CDT bugs 181020, 279844, & Carbide bugs 6152 & 9031.
timkelly
parents:
diff changeset
    87
	}
60
3982fab6369e fixed executables view merge problems - bug #'s 9562, 9568, 9571.
wpaul
parents: 52
diff changeset
    88
}