debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/ConnectToDeviceSection.java
changeset 1265 f90f47d3882f
parent 993 df87e2d581e4
child 2160 3a82092877ea
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/ConnectToDeviceSection.java	Fri Apr 23 08:22:24 2010 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/ConnectToDeviceSection.java	Fri Apr 23 08:25:11 2010 -0500
@@ -1,137 +1,148 @@
-/*
-* Copyright (c) 2010 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.newwizard;
-
-import java.text.MessageFormat;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
-import com.nokia.carbide.remoteconnections.interfaces.IConnection;
-import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager;
-import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener;
-
-/**
- * Present the "Connect to device" section with a short description.
- */
-public class ConnectToDeviceSection extends AbstractLaunchWizardSection implements IConnectionListener {
-
-	private static final String NO_CURRENT_CONNECTION_MSG = Messages.getString("ConnectToDeviceSection.NoConnectionMsg"); //$NON-NLS-1$
-	private final IConnectionsManager manager;
-
-	/**
-	 * @param unifiedLaunchOptionsPage 
-	 * 
-	 */
-	public ConnectToDeviceSection(LaunchWizardData data, UnifiedLaunchOptionsPage launchOptionsPage) {
-		super(data, Messages.getString("ConnectToDeviceSection.Title"), launchOptionsPage); //$NON-NLS-1$
-		manager = RemoteConnectionsActivator.getConnectionsManager();
-	}
-	
-	public void createControl(Composite parent) {
-		createSection(parent, 0);
-		manager.addConnectionListener(this);
-	}
-	
-	@Override
-	protected void dispose() {
-		manager.removeConnectionListener(this);
-	}
-	
-	public void initializeSettings() {
-		data.setConnection(manager.getCurrentConnection());
-	}
-
-	@Override
-	protected void validate() {
-		status = revalidate(data);
-	}
-
-	/** Get the simple status for the connection state */
-	static IStatus revalidate(LaunchWizardData data) {
-		IStatus status = Status.OK_STATUS;
-		
-		if (data.getConnection() == null) {
-			status = error(NO_CURRENT_CONNECTION_MSG);
-		}
-		
-		return status;
-	}
-	
-	static String getStandardPNPMessage() {
-		return Messages.getString("ConnectToDeviceSection.StdPNPMsg"); //$NON-NLS-1$
-	}
-
-	@Override
-	protected void updateUI() {
-		if (control == null || control.isDisposed())
-			return;
-		
-		String msg;
-		if (data.getConnection() != null)
-			msg = MessageFormat.format(Messages.getString("ConnectToDeviceSection.CurrentConnectionLabel"), data.getConnectionName()); //$NON-NLS-1$
-		else
-			msg = MessageFormat.format("{0} {1}", NO_CURRENT_CONNECTION_MSG, getStandardPNPMessage()); //$NON-NLS-1$
-			
-		descriptionLabel.setText(msg);
-		launchOptionsPage.changed();
-	}
-	
-	@Override
-	protected AbstractLaunchSettingsDialog createChangeSettingsDialog(Shell shell, LaunchWizardData dialogData) {
-		return new ConnectToDeviceDialog(shell, dialogData);
-	}
-	
-	protected void refresh() {
-		Display.getDefault().syncExec(new Runnable() {
-			public void run() {
-				validate();
-				updateUI();
-			}
-		});
-	}
-	
-	private void doConnectionsChanged() {
-		data.setConnection(manager.getCurrentConnection());
-		refresh();
-	}
-	
-	public void connectionAdded(IConnection connection) {
-		doConnectionsChanged();
-	}
-	
-	public void connectionRemoved(IConnection connection) {
-		doConnectionsChanged();
-	}
-	
-	public void currentConnectionSet(IConnection connection) {
-		doConnectionsChanged();
-	}
-	
-	@Override
-	protected void doChange() {
-		super.doChange();
-		IConnection connection = data.getConnection();
-		if (connection != null && !connection.equals(manager.getCurrentConnection()))
-			manager.setCurrentConnection(connection);
-	}
-}
+/*
+* Copyright (c) 2010 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.newwizard;
+
+import java.text.MessageFormat;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
+import com.nokia.carbide.remoteconnections.interfaces.IConnection;
+import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager;
+import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener;
+import com.nokia.carbide.remoteconnections.settings.ui.SettingsWizard;
+
+/**
+ * Present the "Connect to device" section with a short description.
+ */
+public class ConnectToDeviceSection extends AbstractLaunchWizardSection implements IConnectionListener {
+
+	private static final String NO_CURRENT_CONNECTION_MSG = Messages.getString("ConnectToDeviceSection.NoConnectionMsg"); //$NON-NLS-1$
+	private final IConnectionsManager manager;
+
+	/**
+	 * @param unifiedLaunchOptionsPage 
+	 * 
+	 */
+	public ConnectToDeviceSection(LaunchWizardData data, UnifiedLaunchOptionsPage launchOptionsPage) {
+		super(data, Messages.getString("ConnectToDeviceSection.Title"), launchOptionsPage); //$NON-NLS-1$
+		manager = RemoteConnectionsActivator.getConnectionsManager();
+	}
+	
+	public void createControl(Composite parent) {
+		createSection(parent, 0);
+		manager.addConnectionListener(this);
+	}
+	
+	@Override
+	protected void dispose() {
+		manager.removeConnectionListener(this);
+	}
+	
+	public void initializeSettings() {
+		data.setConnection(manager.getCurrentConnection());
+	}
+
+	@Override
+	protected void validate() {
+		status = revalidate(data);
+	}
+
+	/** Get the simple status for the connection state */
+	static IStatus revalidate(LaunchWizardData data) {
+		IStatus status = Status.OK_STATUS;
+		
+		if (data.getConnection() == null) {
+			status = error(NO_CURRENT_CONNECTION_MSG);
+		}
+		
+		return status;
+	}
+	
+	static String getStandardPNPMessage() {
+		return Messages.getString("ConnectToDeviceSection.StdPNPMsg"); //$NON-NLS-1$
+	}
+
+	@Override
+	protected void updateUI() {
+		if (control == null || control.isDisposed())
+			return;
+		
+		String msg;
+		if (data.getConnection() != null)
+			msg = MessageFormat.format(Messages.getString("ConnectToDeviceSection.CurrentConnectionLabel"), data.getConnectionName()); //$NON-NLS-1$
+		else
+			msg = MessageFormat.format("{0} {1}", NO_CURRENT_CONNECTION_MSG, getStandardPNPMessage()); //$NON-NLS-1$
+			
+		descriptionLabel.setText(msg);
+		launchOptionsPage.changed();
+	}
+	
+	@Override
+	protected AbstractLaunchSettingsDialog createChangeSettingsDialog(Shell shell, LaunchWizardData dialogData) {
+		return new ConnectToDeviceDialog(shell, dialogData);
+	}
+	
+	protected void refresh() {
+		Display.getDefault().syncExec(new Runnable() {
+			public void run() {
+				validate();
+				updateUI();
+			}
+		});
+	}
+	
+	private void doConnectionsChanged() {
+		data.setConnection(manager.getCurrentConnection());
+		refresh();
+	}
+	
+	public void connectionAdded(IConnection connection) {
+		doConnectionsChanged();
+	}
+	
+	public void connectionRemoved(IConnection connection) {
+		doConnectionsChanged();
+	}
+	
+	public void currentConnectionSet(IConnection connection) {
+		doConnectionsChanged();
+	}
+	
+	@Override
+	protected void doChange() {
+		// if no connections are available, immediately offer to create a connection
+		
+		if (manager.getConnections().isEmpty()) {
+			SettingsWizard wizard = new SettingsWizard(null, data.getService());
+			wizard.open(getControl().getShell());
+			IConnection newConnection = wizard.getConnectionToEdit();
+			data.setConnection(newConnection);
+		} else {
+			super.doChange();
+		}
+		
+		IConnection connection = data.getConnection();
+		if (connection != null && !connection.equals(manager.getCurrentConnection()))
+			manager.setCurrentConnection(connection);
+	}
+}