debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/CommandRunLaunchWizard2.java
author dadubrow
Tue, 09 Feb 2010 15:35:02 -0600
branchRCL_2_4
changeset 911 81a2e70a37d7
child 953 68b6a294ab01
permissions -rw-r--r--
new wizard initial commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
911
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     1
package com.nokia.cdt.internal.debug.launch.newwizard;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     2
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     3
import java.util.ArrayList;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     4
import java.util.List;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     5
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     6
import org.eclipse.core.commands.AbstractHandler;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     7
import org.eclipse.core.commands.ExecutionEvent;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     8
import org.eclipse.core.commands.ExecutionException;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     9
import org.eclipse.core.resources.IProject;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    10
import org.eclipse.core.resources.IResource;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    11
import org.eclipse.core.runtime.IAdaptable;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    12
import org.eclipse.core.runtime.IPath;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    13
import org.eclipse.debug.core.ILaunchManager;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    14
import org.eclipse.jface.viewers.ISelection;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    15
import org.eclipse.jface.viewers.IStructuredSelection;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    16
import org.eclipse.jface.wizard.WizardDialog;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    17
import org.eclipse.ui.handlers.HandlerUtil;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    18
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    19
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    20
import com.nokia.carbide.cdt.builder.EpocEngineHelper;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    21
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    22
import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    23
import com.nokia.carbide.remoteconnections.interfaces.IService;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    24
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    25
/**
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    26
 * Our sample handler extends AbstractHandler, an IHandler base class.
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    27
 * @see org.eclipse.core.commands.IHandler
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    28
 * @see org.eclipse.core.commands.AbstractHandler
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    29
 */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    30
public class CommandRunLaunchWizard2 extends AbstractHandler {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    31
	/**
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    32
	 * The constructor.
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    33
	 */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    34
	public CommandRunLaunchWizard2() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    35
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    36
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    37
	/**
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    38
	 * the command has been executed, so extract extract the needed information
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    39
	 * from the application context.
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    40
	 */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    41
	public Object execute(ExecutionEvent event) throws ExecutionException {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    42
		ISelection sel = HandlerUtil.getCurrentSelection(event);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    43
		IProject project = null;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    44
		if (sel instanceof IStructuredSelection) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    45
			Object obj = ((IStructuredSelection) sel).getFirstElement();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    46
			if (obj instanceof IResource)
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    47
				project = ((IResource) obj).getProject();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    48
			else if (obj instanceof IAdaptable) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    49
				IResource rsrc = (IResource)((IAdaptable) obj).getAdapter(IResource.class);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    50
				if (rsrc != null)
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    51
					project = rsrc.getProject();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    52
			}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    53
			if (project == null)
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    54
				throw new ExecutionException("No project in selection");
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    55
			
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    56
			ICarbideProjectInfo info = CarbideBuilderPlugin.getBuildManager()
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    57
				.getProjectInfo(project);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    58
			if (info == null) 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    59
				throw new ExecutionException("Not a Carbide project");
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    60
			List<IPath> mmpFiles = EpocEngineHelper.getMMPFilesForProject(info);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    61
			IService trkService = RemoteConnectionsActivator.getConnectionTypeProvider().
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    62
				findServiceByID("com.nokia.carbide.trk.support.service.TRKService"); //$NON-NLS-1$
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    63
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    64
			List<IPath> allExePaths = new ArrayList<IPath>();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    65
			List<IPath> currBuiltExePaths = new ArrayList<IPath>();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    66
			List<IPath> allMMPPaths = new ArrayList<IPath>();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    67
			List<IPath> currBuiltMMPPaths = new ArrayList<IPath>(); 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    68
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    69
			EpocEngineHelper.getPathToAllExecutables(info.getDefaultConfiguration(),
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    70
					allExePaths,
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    71
					currBuiltExePaths,
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    72
					allMMPPaths,
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    73
					currBuiltMMPPaths); 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    74
					
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    75
			LaunchWizard wiz = new LaunchWizard(project, 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    76
					info.getDefaultBuildConfigName(),
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    77
					mmpFiles,
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    78
					currBuiltExePaths,
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    79
					EpocEngineHelper.getHostPathForExecutable(info.getDefaultConfiguration(), mmpFiles.get(0)),
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    80
					false, false, 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    81
					ILaunchManager.DEBUG_MODE,
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    82
					trkService
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    83
					);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    84
			WizardDialog dialog = new WizardDialog(HandlerUtil.getActiveShell(event), wiz);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    85
			dialog.setPageSize(500, 300);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    86
			dialog.open();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    87
		}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    88
				
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    89
		return null;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    90
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    91
}