debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/ui/StopModeMainTab.java
changeset 1711 220e51cc31de
parent 1708 80696164153b
child 1712 f126271125ff
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/ui/StopModeMainTab.java	Wed Jul 28 10:10:48 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,238 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-package com.nokia.cdt.internal.debug.launch.ui;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-
-import com.freescale.cdt.debug.cw.core.RemoteConnectionsTRKHelper;
-import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
-import com.nokia.carbide.remoteconnections.interfaces.IClientServiceSiteUI2;
-import com.nokia.carbide.remoteconnections.interfaces.IClientServiceSiteUI2.IListener;
-import com.nokia.carbide.remoteconnections.interfaces.IConnection;
-import com.nokia.carbide.remoteconnections.interfaces.IConnectionFactory;
-import com.nokia.carbide.remoteconnections.interfaces.IConnectionType;
-import com.nokia.cdt.internal.debug.launch.LaunchPlugin;
-
-public class StopModeMainTab extends CarbideMainTab {
-
-	protected IClientServiceSiteUI2 clientSiteUI;
-	protected String connection;
-
-	// PlatSim settings keys
-	private final static String SETTING_LOCATION = "location"; //$NON-NLS-1$
-	private final static String SETTING_INSTANCE = "instance"; //$NON-NLS-1$
-
-	private static String PLATSIM_CONNECTION_TYPE = "com.nokia.carbide.trk.support.connection.PlatSimConnectionType"; //$NON-NLS-1$
-
-	public void createControl(Composite parent) {
-		Composite comp = new Composite(parent, SWT.NONE);
-		setControl(comp);
-		
-		LaunchPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(), LaunchTabHelpIds.STOP_MODE_MAIN);
-		
-		GridLayout topLayout = new GridLayout();
-		comp.setLayout(topLayout);
-
-		createVerticalSpacer(comp, 1);
-		createProjectGroup(comp, 1);
-		createExeFileGroup(comp, 1);
-		
-		fProgLabel.setText(Messages.getString("StopModeMainTab.0")); //$NON-NLS-1$
-		fProgLabel.setToolTipText(Messages.getString("StopModeMainTab.1")); //$NON-NLS-1$
-		fProgText.setToolTipText(Messages.getString("StopModeMainTab.1")); //$NON-NLS-1$
-
-		fProjLabel.setToolTipText(Messages.getString("StopModeMainTab.2")); //$NON-NLS-1$
-		fProjText.setToolTipText(Messages.getString("StopModeMainTab.2")); //$NON-NLS-1$
-
-		clientSiteUI = RemoteConnectionsActivator.getConnectionsManager().getClientSiteUI2(LaunchPlugin.getPlatSimService());
-		clientSiteUI.createComposite(comp);
-		clientSiteUI.addListener(new IListener() {
-			public void connectionSelected() {
-				connection = clientSiteUI.getSelectedConnection();
-				updateLaunchConfigurationDialog();
-			}
-		});
-
-		createVerticalSpacer(comp, 1);
-		if (wantsTerminalOption() /*&& ProcessFactory.supportesTerminal()*/) {
-			createTerminalOption(comp, 1);
-			createVerticalSpacer(comp, 1);
-		}
-		createBuildOptionGroup(comp, 1);
-	}
-
-	public void setDefaults(ILaunchConfigurationWorkingCopy config) {
-	}
-
-	public void initializeFrom(ILaunchConfiguration config) {
-		super.initializeFrom(config);
-
-		// if a PlatSim stop mode launch does not have a connection,
-		// it may need to be converted to have a connection
-		try {
-			connection = RemoteConnectionsTRKHelper.getConnectionIdFromConfig(config);
-		} catch (CoreException e) {
-		}
-		
-		if (connection == null && config instanceof ILaunchConfigurationWorkingCopy) {
-			String location = null;
-			String instanceId = null;
-			try {
-				// for new launches, the remote connection holds the location and instance
-				// we can use "1" as the default PlatSim instanceId, but we won't create a new
-				// connection if we do not have a PlatSim_Location attribute
-				location = config.getAttribute("com.nokia.cdt.debug.launch.PlatSim_Location", (String) null);
-				instanceId = config.getAttribute("com.nokia.cdt.debug.launch.PlatSim_Instance_Id", "1");
-			} catch (CoreException ce) {
-				LaunchPlugin.log(ce);
-			}
-
-			if (location != null && location.length() > 0) {
-
-				ILaunchConfigurationWorkingCopy wcConfig = (ILaunchConfigurationWorkingCopy)config;
-				
-				// if an existing PlatSim connection matches, then use it
-				// if no connection matches, then create a new one
-				IConnection connectionToUse = findOrCreatePlatSimConnection(location, instanceId);
-				connection = connectionToUse.getIdentifier();
-				if (connection != null) {
-					wcConfig.setAttribute(RemoteConnectionsTRKHelper.CONNECTION_ATTRIBUTE, connection);
-				}		
-			}
-		}
-		 
-		if (clientSiteUI != null)
-		{
-			if (connection != null)
-				clientSiteUI.selectConnection(connection);
-			else {
-				connection = clientSiteUI.getSelectedConnection();
-			}
-		}
-	}
-
-	public void performApply(ILaunchConfigurationWorkingCopy config) {
-		super.performApply(config);
-		if (connection != null) {
-			config.setAttribute(RemoteConnectionsTRKHelper.CONNECTION_ATTRIBUTE, connection);
-		}		
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.debug.ui.ILaunchConfigurationTab#isValid(org.eclipse.debug.core.ILaunchConfiguration)
-	 */
-	public boolean isValid(ILaunchConfiguration config) {
-		boolean result = super.isValid(config);
-		return result;
-	}
-	
-
-	/**
-	 * Find a PlatSim connection with the given location and instance, or create one
-	 * 
-	 * @param locationToFind path to PlatSim executable
-	 * @param instanceToFind PlatSim instance number
-	 * @return
-	 */
-	private IConnection findOrCreatePlatSimConnection(String locationToFind, String instanceToFind) {
-		Collection<IConnection> connections = RemoteConnectionsActivator.getConnectionsManager().getConnections();
-		IConnection matchingConnection = null;
-		for (IConnection connection : connections) {
-			String connectionTypeId = connection.getConnectionType().getIdentifier();
-			if (connectionTypeId.equals(PLATSIM_CONNECTION_TYPE)) {
-				Map<String, String> settings = connection.getSettings(); 
-				String instance = settings.get(SETTING_INSTANCE);
-				String location = settings.get(SETTING_LOCATION);
-				if (instanceToFind.equals(instance) && locationToFind.equals(location)) {
-					matchingConnection = connection;
-					break;
-				}
-			}
-		}
-		
-		if (matchingConnection == null) {
-			// create a new one
-			IConnectionType connectionType = RemoteConnectionsActivator.getConnectionTypeProvider().getConnectionType(PLATSIM_CONNECTION_TYPE);
-			if (connectionType == null)
-				return null;
-			IConnectionFactory factory = connectionType.getConnectionFactory();
-			Map<String, String> settings = new HashMap<String, String>(factory.getSettingsFromUI());
-			settings.put(SETTING_LOCATION, locationToFind);
-			settings.put(SETTING_INSTANCE, instanceToFind);
-			matchingConnection = factory.createConnection(settings);
-
-			// if location is non-null, see if you can find the brief SDK name
-			// TODO: if we could access PlatSimManager from here, use the following
-//			String preferredName = null;
-//			try {
-//				IPlatSimInstance theInstance = PlatSimManager.INSTANCE.getInstallationInstance(
-//						new Path(locationToFind), Integer.parseInt(instanceToFind));
-//				preferredName = PlatSimManager.INSTANCE.getPreferredConnectionName(theInstance);
-//			} catch (Exception e) {
-//				// no luck: suggest nothing
-//			}
-//
-//			if (preferredName == null) {
-//				if (locationToFind.charAt(1) == ':') // Windows drive indicator
-//					preferredName = "PlatSim " + locationToFind.substring(0, 2) +
-//									", Instance " + instanceToFind;
-//				else
-//					preferredName = "PlatSim Instance " + instanceToFind;
-//			}
-
-			String preferredName;
-			if (locationToFind.charAt(1) == ':') // Windows drive indicator
-				preferredName = "PlatSim " + locationToFind.substring(0, 2) +
-									", Instance " + instanceToFind;
-			else
-				preferredName = "PlatSim Instance " + instanceToFind;
-
-			String newName = preferredName;
-			boolean isUnique = true;
-			long i = 1;
-			do {
-				for (IConnection connection : connections) {
-					if (preferredName.equals(connection.getDisplayName())) {
-						isUnique = false;
-						break;
-					}
-				}
-				
-				if (!isUnique)
-					newName = preferredName + i;
-			} while (!isUnique);
-
-			matchingConnection.setDisplayName(newName);
-			RemoteConnectionsActivator.getConnectionsManager().addConnection(matchingConnection);
-		}
-		
-		return matchingConnection;
-	}
-
-
-}