diff -r 80696164153b -r 220e51cc31de debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/ui/StopModeMainTab.java --- 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 connections = RemoteConnectionsActivator.getConnectionsManager().getConnections(); - IConnection matchingConnection = null; - for (IConnection connection : connections) { - String connectionTypeId = connection.getConnectionType().getIdentifier(); - if (connectionTypeId.equals(PLATSIM_CONNECTION_TYPE)) { - Map 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 settings = new HashMap(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; - } - - -}