debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/TRKLaunchDelegate.java
author Ed Swartz <ed.swartz@nokia.com>
Tue, 20 Apr 2010 15:36:01 -0500
branchRCL_2_4
changeset 1254 0e45b6356eac
parent 857 d66843399035
permissions -rw-r--r--
Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
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
package com.nokia.cdt.internal.debug.launch;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    18
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    19
import java.io.File;
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
    20
import java.util.ArrayList;
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
    21
import java.util.List;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    22
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    23
import org.eclipse.cdt.core.IBinaryParser.IBinaryObject;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    24
import org.eclipse.cdt.core.model.ICProject;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    25
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    26
import org.eclipse.cdt.debug.core.ICDebugConfiguration;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    27
import org.eclipse.cdt.debug.core.cdi.ICDISession;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    28
import org.eclipse.cdt.ui.CUIPlugin;
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    29
import org.eclipse.core.runtime.CoreException;
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
    30
import org.eclipse.core.runtime.IConfigurationElement;
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    31
import org.eclipse.core.runtime.IPath;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    32
import org.eclipse.core.runtime.IProgressMonitor;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    33
import org.eclipse.core.runtime.IStatus;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    34
import org.eclipse.core.runtime.NullProgressMonitor;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    35
import org.eclipse.core.runtime.Path;
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
    36
import org.eclipse.core.runtime.Platform;
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    37
import org.eclipse.core.runtime.Status;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    38
import org.eclipse.core.runtime.SubProgressMonitor;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    39
import org.eclipse.debug.core.DebugException;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    40
import org.eclipse.debug.core.ILaunch;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    41
import org.eclipse.debug.core.ILaunchConfiguration;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    42
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    43
import org.eclipse.debug.core.ILaunchManager;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    44
import org.eclipse.jface.dialogs.MessageDialog;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    45
import org.eclipse.swt.widgets.Display;
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
import com.freescale.cdt.debug.cw.CWException;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    48
import com.freescale.cdt.debug.cw.core.RemoteConnectionsTRKHelper;
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    49
import com.freescale.cdt.debug.cw.core.cdi.ISessionListener;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    50
import com.freescale.cdt.debug.cw.core.cdi.Session;
94
d74b720418db Test framework support: Ask debugger to remember DebugTarget so test framework can use it to setup test framework related utility. With this we can use the DebugUI way of launching while keeping test framework functionality
tzelaw
parents: 0
diff changeset
    51
import com.freescale.cdt.debug.cw.core.cdi.model.Target;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    52
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    53
import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    54
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    55
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    56
import com.nokia.carbide.remoteconnections.interfaces.IConnection;
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    57
import com.nokia.carbide.remoteconnections.internal.api.IConnection2;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    58
import com.nokia.carbide.remoteconnections.internal.api.IConnection2.IConnectionStatus;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    59
import com.nokia.carbide.remoteconnections.internal.api.IConnection2.IConnectionStatusChangedListener;
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    60
import com.nokia.carbide.remoteconnections.internal.api.IConnection2.IConnectionStatus.EConnectionStatus;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    61
import com.nokia.cdt.debug.cw.symbian.SettingsData;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    62
import com.nokia.cdt.debug.cw.symbian.SymbianPlugin;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    63
import com.nokia.cdt.internal.debug.launch.ui.PartialUpgradeAlertDialog;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    64
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    65
import cwdbg.PreferenceConstants;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    66
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    67
public class TRKLaunchDelegate extends NokiaAbstractLaunchDelegate {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    68
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    69
	private static final String DONT_ASK_ABOUT_PARTIAL_UPGRADE_OPTION = "DONT_ASK_ABOUT_PARTIAL_UPGRADE_OPTION"; //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    70
	private static final int LARGE_SIS_THRESHOLD = 250 * 1024; // 250K
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    71
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    72
	protected Session cwDebugSession;
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
    73
	protected IConnection connection;
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
    74
	private IConnectionStatusChangedListener connectionStatusChangedListener;
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
    75
	private List<ILaunchDelegateConnectionExtension> connectionExtensions;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    76
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    77
	public void launch(
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    78
			ILaunchConfiguration 	config, 
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
    79
			final String 					mode, 
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
    80
			final ILaunch 				launch, 
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    81
			IProgressMonitor monitor) throws CoreException 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    82
	{
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    83
	// See comment at definition of the "mutex" for why this "synchronized".		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    84
	synchronized(Session.sessionStartStopMutex()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    85
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    86
		cwDebugSession = null;
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
		if (monitor == null) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    89
            monitor = new NullProgressMonitor();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    90
        }
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    91
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
    92
        monitor.beginTask(LaunchMessages.getString("LocalRunLaunchDelegate.Launching_Local_C_Application"), 30); //$NON-NLS-1$
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    93
        // check for cancellation
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    94
        if (monitor.isCanceled()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    95
            return;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    96
        }
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    97
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    98
        if (!RemoteConnectionsTRKHelper.configUsesConnectionAttribute(config)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    99
        	config = RemoteConnectionsTRKHelper.attemptUpdateLaunchConfiguration(config.getWorkingCopy());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   100
        }
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   101
        
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   102
        connection = RemoteConnectionsTRKHelper.ensureConnectionFromConfig(config);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   103
		if (connection == null) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   104
			IStatus status = new Status(Status.ERROR, LaunchPlugin.PLUGIN_ID, 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   105
				LaunchMessages.getString("TRKLaunchDelegate.NoConnectionErrorMsg")); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   106
			throw new DebugException(status);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   107
		}
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   108
		
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   109
		invokeConnectionSpecificSetup(launch, new SubProgressMonitor(monitor, 5));
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   110
		
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   111
		connection.useConnection(true);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   112
        try {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   113
        	addBeingLaunched(config); // indicating the LC is being launched
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   114
        	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   115
            monitor.worked(1);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   116
            IPath exePath = verifyProgramPath(config);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   117
            ICProject project = verifyCProject(config);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   118
            IBinaryObject exeFile = verifyBinary(project, exePath);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   119
            String arguments[] = getProgramArgumentsArray(config);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   120
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   121
            // See comment for this method for more.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   122
            SettingsData.setInternalPreferences(config, SettingsData.LaunchConfig_AppTRK);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   123
            
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   124
            // set the partial upgrade pref value
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   125
            ILaunchConfigurationWorkingCopy workingCopy = config.getWorkingCopy();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   126
            workingCopy.setAttribute(PreferenceConstants.J_PN_PUSisFileHostPath, ""); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   127
            
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   128
            String sisHostPath = config.getAttribute(PreferenceConstants.J_PN_SisFileHostPath, ""); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   129
            if (sisHostPath.length() > 0) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   130
            	// app trk launch - see if there's a partial upgrade sis file
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   131
            	IPath sisPath = new Path(sisHostPath);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   132
            	String buildConfigName = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_BUILD_CONFIG_ID, ""); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   133
				if (buildConfigName.length() > 0) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   134
			        ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project.getProject());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   135
			        if (cpi != null) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   136
			        	for (ICarbideBuildConfiguration buildConfig : cpi.getBuildConfigurations()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   137
			        		if (buildConfig.getDisplayString().equals(buildConfigName)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   138
								IPath puSisPath = CarbideCPPBuilder.getPartialUpgradeSisPath(buildConfig, sisPath);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   139
								if (puSisPath != null && puSisPath.toFile().exists()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   140
									workingCopy.setAttribute(PreferenceConstants.J_PN_PUSisFileHostPath, puSisPath.toOSString());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   141
								}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   142
								break;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   143
			        		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   144
			        	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   145
			        }
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   146
				}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   147
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   148
            
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   149
            // save the changes
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   150
            workingCopy.doSave();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   151
                        
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   152
            // set the default source locator if required
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   153
            setDefaultSourceLocator(launch, config);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   154
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   155
            if (mode.equals(ILaunchManager.DEBUG_MODE)) {
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   156
        		hookConnectionStatus();
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   157
               // debug mode
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   158
                ICDebugConfiguration debugConfig = getDebugConfig(config);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   159
                ICDISession dsession = null;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   160
                String debugMode = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_START_MODE,
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   161
                        ICDTLaunchConfigurationConstants.DEBUGGER_MODE_RUN);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   162
                if (debugMode.equals(ICDTLaunchConfigurationConstants.DEBUGGER_MODE_RUN)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   163
                    dsession = debugConfig.createDebugger().createDebuggerSession(launch, exeFile,
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   164
                            new SubProgressMonitor(monitor, 8));
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   165
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   166
					assert(dsession instanceof Session);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   167
					cwDebugSession = (Session)dsession;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   168
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   169
					doAdditionalSessionSetup(cwDebugSession);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   170
					
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   171
					IPath[] otherExecutables = getOtherExecutables(project, exePath, config, new SubProgressMonitor(monitor, 1));					
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   172
					{
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   173
						try {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   174
							monitor.worked(1);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   175
							
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   176
							// if enabled in the prefs, show the console view(s)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   177
							if (config.getAttribute(PreferenceConstants.J_PN_ViewUnframedData, false)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   178
								SymbianPlugin.getDefault().openUnframedDataConsole(true);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   179
							}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   180
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   181
							if (config.getAttribute(PreferenceConstants.J_PN_ViewCommMessages, false)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   182
								SymbianPlugin.getDefault().openTRKCommLogConsole(true);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   183
							}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   184
							
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   185
							config = synchronizeWithProjectAccessPaths(project, config);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   186
							
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   187
							File wd = getWorkingDirectory(config);
94
d74b720418db Test framework support: Ask debugger to remember DebugTarget so test framework can use it to setup test framework related utility. With this we can use the DebugUI way of launching while keeping test framework functionality
tzelaw
parents: 0
diff changeset
   188
							Target target = cwDebugSession.launchExecutable(launch, config, exeFile, otherExecutables, arguments, wd, getEnvironmentAsProperty(config), monitor, project, getTargetLabel(exeFile.getName()), true);
d74b720418db Test framework support: Ask debugger to remember DebugTarget so test framework can use it to setup test framework related utility. With this we can use the DebugUI way of launching while keeping test framework functionality
tzelaw
parents: 0
diff changeset
   189
							ATFLaunchSupport.saveDebugTargetFromLaunchDelegate(target.getCoreModelTarget());
d74b720418db Test framework support: Ask debugger to remember DebugTarget so test framework can use it to setup test framework related utility. With this we can use the DebugUI way of launching while keeping test framework functionality
tzelaw
parents: 0
diff changeset
   190
							
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   191
						} catch (CoreException e) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   192
							Session session = (Session)dsession;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   193
							session.cleanupAfterLaunchFailure();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   194
							throw e;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   195
						} catch (Exception e) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   196
							Session session = (Session)dsession;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   197
							session.debuggingStopped(null);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   198
							this.abort(e.getLocalizedMessage(), null, 0);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   199
						}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   200
					}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   201
                }
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   202
                hookSessionEnded(launch);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   203
            }
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   204
            else if (mode.equals(ILaunchManager.RUN_MODE)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   205
                // Run the program.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   206
            	// Connect to DE, download and launch the program, close debug session.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   207
                ICDebugConfiguration debugConfig = getDebugConfig(config);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   208
                ICDISession dsession = null;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   209
                
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   210
                // Set up communication with DE.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   211
                dsession = debugConfig.createDebugger().createDebuggerSession(launch, exeFile,
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   212
                            new SubProgressMonitor(monitor, 8));
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   213
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   214
                // Launch the program through the DE.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   215
                cwDebugSession = (Session)dsession;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   216
				cwDebugSession.launchExecutable(
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   217
										launch, 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   218
										config, 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   219
										exeFile, 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   220
										new IPath[0], 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   221
										arguments, 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   222
										null, 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   223
										getEnvironmentAsProperty(config), 
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   224
										new SubProgressMonitor(monitor, 8), 
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   225
										project, 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   226
										"",  //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   227
										false  /* run instead of debug */);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   228
				
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   229
				// The above call would throw exception on error. So it must have succeeded 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   230
				// if control gets here. Show success message in a dialog.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   231
	    		//
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   232
	    		// get the name of the executable that's launched instead of, say, the DLL name if
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   233
	    		// exeFile is a DLL.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   234
	    		final String exeLaunched = config.getAttribute(PreferenceConstants.J_PN_RemoteProcessToLaunch, exeFile.toString());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   235
				Display display = Display.getCurrent();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   236
				if (display == null) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   237
					display = Display.getDefault();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   238
				}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   239
				
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   240
				display.syncExec(new Runnable() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   241
					public void run() {
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   242
						try {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   243
							invokeConnectionSpecificShutdown(launch, new NullProgressMonitor());
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   244
						} catch (CoreException e) {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   245
							LaunchPlugin.log(e);
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   246
						} finally {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   247
							connection.useConnection(false);
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   248
						}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   249
						MessageDialog.openInformation(
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   250
							CUIPlugin.getActiveWorkbenchShell(),
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   251
							LaunchMessages.getString("CarbideCPPLaunchDelegate.DebuggerName"),  //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   252
							LaunchMessages.getString("TRKLaunchDelegate.runSucceed") + //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   253
						           "\n\t\"" + exeLaunched + "\""); //$NON-NLS-1$ //$NON-NLS-2$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   254
					}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   255
				});
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   256
            }
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   257
            
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   258
            invokeConnectionSpecificPostLaunch(launch, new SubProgressMonitor(monitor, 5));
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   259
        } catch (CWException e) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   260
       		connection.useConnection(false);
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   261
       		unhookConnectionStatus();
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   262
        	if (! monitor.isCanceled()) // don't throw on user cancellation
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   263
        		e.printStackTrace();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   264
		} catch (CoreException e) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   265
			connection.useConnection(false);
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   266
			unhookConnectionStatus();
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   267
        	if (! monitor.isCanceled()) // don't throw on user cancellation
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   268
        		throw e;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   269
		} finally {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   270
            monitor.done();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   271
            removeBeingLaunched(config);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   272
        }
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   273
	} // end of synchronized.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   274
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   275
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   276
	/** Create the extensions every session, in case they hold state. */
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   277
	protected List<ILaunchDelegateConnectionExtension> getLaunchDelegateConnectionExtensions() {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   278
		if (connectionExtensions == null) {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   279
			connectionExtensions = new ArrayList<ILaunchDelegateConnectionExtension>();
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   280
			IConfigurationElement[] elements =
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   281
				Platform.getExtensionRegistry().getConfigurationElementsFor(ILaunchDelegateConnectionExtension.ID);
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   282
			for (IConfigurationElement element : elements) {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   283
				try {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   284
					connectionExtensions.add((ILaunchDelegateConnectionExtension) element.createExecutableExtension("class"));
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   285
				} catch (CoreException e) {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   286
					LaunchPlugin.log(e);
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   287
				}
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   288
			}
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   289
		}
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   290
		return connectionExtensions;
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   291
	}
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   292
	
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   293
	protected void invokeConnectionSpecificSetup(ILaunch launch,
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   294
			IProgressMonitor monitor) throws CoreException {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   295
		List<ILaunchDelegateConnectionExtension> extensions = getLaunchDelegateConnectionExtensions();
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   296
		monitor.beginTask("", extensions.size());
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   297
		for (ILaunchDelegateConnectionExtension extension : extensions) {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   298
			extension.initializeConnection(launch, connection, new SubProgressMonitor(monitor, 1));
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   299
		}
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   300
		monitor.done();
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   301
	}
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   302
	
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   303
	protected void invokeConnectionSpecificPostLaunch(ILaunch launch,
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   304
			IProgressMonitor monitor) throws CoreException {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   305
		List<ILaunchDelegateConnectionExtension> extensions = getLaunchDelegateConnectionExtensions();
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   306
		monitor.beginTask("", extensions.size());
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   307
		for (ILaunchDelegateConnectionExtension extension : extensions) {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   308
			extension.launchStarted(launch, connection, new SubProgressMonitor(monitor, 1));
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   309
		}
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   310
		monitor.done();
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   311
	}
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   312
	
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   313
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   314
	protected void invokeConnectionSpecificShutdown(
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   315
			ILaunch launch, IProgressMonitor monitor) throws CoreException {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   316
		List<ILaunchDelegateConnectionExtension> extensions = getLaunchDelegateConnectionExtensions();
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   317
		monitor.beginTask("", extensions.size());
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   318
		for (ILaunchDelegateConnectionExtension extension : extensions) {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   319
			extension.terminateConnection(launch, connection, new SubProgressMonitor(monitor, 1));
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   320
		}
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   321
		monitor.done();
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   322
	}
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   323
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   324
	protected void hookSessionEnded(final ILaunch launch) {
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   325
		if (cwDebugSession != null) {
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   326
			cwDebugSession.addListener(new ISessionListener() {
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   327
				public void sessionEnded() {
1254
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   328
					try {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   329
						invokeConnectionSpecificShutdown(launch, new NullProgressMonitor());
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   330
					} catch (CoreException e) {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   331
						LaunchPlugin.log(e);
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   332
					} finally {
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   333
						connection.useConnection(false);
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   334
						unhookConnectionStatus();
0e45b6356eac Initial pass getting PlatSim connections to work in App/Sys TRK configurations. Add extension for TRK launch delegate for PlatSim-specific behavior.
Ed Swartz <ed.swartz@nokia.com>
parents: 857
diff changeset
   335
					}
857
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   336
				}
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   337
			});
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   338
		}
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   339
	}
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   340
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   341
	protected void hookConnectionStatus() {
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   342
		if (connection instanceof IConnection2) {
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   343
			connectionStatusChangedListener = new IConnectionStatusChangedListener() {
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   344
				public void statusChanged(IConnectionStatus status) {
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   345
					if (status.getEConnectionStatus().equals(EConnectionStatus.IN_USE_DISCONNECTED)) {
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   346
						try {
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   347
							cwDebugSession.getLaunch().terminate();
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   348
						} catch (Exception e) {
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   349
							LaunchPlugin.log(e);
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   350
						}
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   351
					}
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   352
				}
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   353
			};
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   354
			((IConnection2) connection).addStatusChangedListener(connectionStatusChangedListener);
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   355
		}
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   356
	}
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   357
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   358
	protected void unhookConnectionStatus() {
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   359
		if (connection instanceof IConnection2 && connectionStatusChangedListener != null) {
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   360
			((IConnection2) connection).removeStatusChangedListener(connectionStatusChangedListener);
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   361
		}
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   362
	}
d66843399035 backport hostside pnp
dadubrow
parents: 94
diff changeset
   363
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   364
	@Override
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   365
	public boolean buildForLaunch(final ILaunchConfiguration configuration,
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   366
			String mode, IProgressMonitor monitor) throws CoreException {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   367
		// for app trk, check to see if we need to ask the user if they want to enable
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   368
		// partial upgrade builds
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   369
        String sisHostPath = configuration.getAttribute(PreferenceConstants.J_PN_SisFileHostPath, ""); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   370
        if (sisHostPath.length() > 0) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   371
        	// app trk launch - see if the partial upgrade option is enabled
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   372
        	IPath sisPath = new Path(sisHostPath);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   373
        	String buildConfigName = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_BUILD_CONFIG_ID, ""); //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   374
			if (buildConfigName.length() > 0) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   375
	            final ICProject project = verifyCProject(configuration);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   376
		        ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project.getProject());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   377
		        if (cpi != null) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   378
		        	for (ICarbideBuildConfiguration buildConfig : cpi.getBuildConfigurations()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   379
		        		if (buildConfig.getDisplayString().equals(buildConfigName)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   380
							if (null == CarbideCPPBuilder.getPartialUpgradeSisPath(buildConfig, sisPath)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   381
								if (!configuration.getAttribute(DONT_ASK_ABOUT_PARTIAL_UPGRADE_OPTION, false)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   382
									// get the size of the sis file if it exists
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   383
									File sisFile = sisPath.toFile();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   384
									if (sisFile.exists() && sisFile.length() > LARGE_SIS_THRESHOLD) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   385
										// it's larger than the threshold so present dialog.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   386
										
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   387
										Display.getDefault().syncExec(new Runnable() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   388
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   389
											public void run() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   390
												PartialUpgradeAlertDialog dlg = new PartialUpgradeAlertDialog(CUIPlugin.getActiveWorkbenchShell(), project.getProject());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   391
												dlg.open();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   392
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   393
												// if they check the option then remember it
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   394
												if (dlg.dontAskAgain()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   395
										            try {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   396
										            	ILaunchConfigurationWorkingCopy workingCopy = configuration.getWorkingCopy();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   397
														workingCopy.setAttribute(DONT_ASK_ABOUT_PARTIAL_UPGRADE_OPTION, true);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   398
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   399
														// save the changes
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   400
											            workingCopy.doSave();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   401
													} catch (CoreException e) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   402
														e.printStackTrace();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   403
														LaunchPlugin.log(e);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   404
													}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   405
												}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   406
											}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   407
										});
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   408
									}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   409
								}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   410
							}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   411
							break;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   412
		        		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   413
		        	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   414
		        }
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   415
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   416
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   417
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   418
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   419
		return super.buildForLaunch(configuration, mode, monitor);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   420
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   421
}