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