debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/ConnectToDeviceDialog.java
author dadubrow
Mon, 15 Feb 2010 13:20:03 -0600
branchRCL_2_4
changeset 953 68b6a294ab01
parent 911 81a2e70a37d7
child 963 ed38f30e9216
permissions -rw-r--r--
new launch wizard implementation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
911
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     1
/*
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     3
* All rights reserved.
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     4
* This component and the accompanying materials are made available
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     6
* which accompanies this distribution, and is available
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     8
*
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     9
* Initial Contributors:
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    11
*
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    12
* Contributors:
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    13
*
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    14
* Description: 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    15
*
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    16
*/
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    17
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    18
package com.nokia.cdt.internal.debug.launch.newwizard;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    19
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    20
import java.text.MessageFormat;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    21
import java.util.ArrayList;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    22
import java.util.Collection;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    23
import java.util.HashSet;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    24
import java.util.List;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    25
import java.util.Set;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    26
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    27
import org.eclipse.core.runtime.IStatus;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    28
import org.eclipse.jface.layout.GridDataFactory;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    29
import org.eclipse.jface.layout.GridLayoutFactory;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    30
import org.eclipse.jface.viewers.ArrayContentProvider;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    31
import org.eclipse.jface.viewers.ComboViewer;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    32
import org.eclipse.jface.viewers.ISelection;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    33
import org.eclipse.jface.viewers.ISelectionChangedListener;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    34
import org.eclipse.jface.viewers.IStructuredSelection;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    35
import org.eclipse.jface.viewers.LabelProvider;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    36
import org.eclipse.jface.viewers.SelectionChangedEvent;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    37
import org.eclipse.jface.viewers.StructuredSelection;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    38
import org.eclipse.swt.SWT;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    39
import org.eclipse.swt.events.ControlAdapter;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    40
import org.eclipse.swt.events.ControlEvent;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    41
import org.eclipse.swt.events.SelectionAdapter;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    42
import org.eclipse.swt.events.SelectionEvent;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    43
import org.eclipse.swt.widgets.Button;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    44
import org.eclipse.swt.widgets.Combo;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    45
import org.eclipse.swt.widgets.Composite;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    46
import org.eclipse.swt.widgets.Control;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    47
import org.eclipse.swt.widgets.Display;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    48
import org.eclipse.swt.widgets.Label;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    49
import org.eclipse.swt.widgets.Shell;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    50
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    51
import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    52
import com.nokia.carbide.remoteconnections.interfaces.IConnectedService;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    53
import com.nokia.carbide.remoteconnections.interfaces.IConnection;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    54
import com.nokia.carbide.remoteconnections.interfaces.IConnectionType;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    55
import com.nokia.carbide.remoteconnections.interfaces.IConnectionTypeProvider;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    56
import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    57
import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    58
import com.nokia.carbide.remoteconnections.settings.ui.SettingsWizard;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    59
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    60
/**
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    61
 *	This dialog allows in-depth configuration of the connection settings.
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    62
 */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    63
@SuppressWarnings("restriction")
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    64
public class ConnectToDeviceDialog extends AbstractLaunchSettingsDialog implements IConnectionListener {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    65
	private IConnectionsManager manager;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    66
	private IConnectionTypeProvider typeProvider;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    67
	private ComboViewer viewer;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    68
	private Button editButton;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    69
	private Label descriptionLabel;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    70
953
68b6a294ab01 new launch wizard implementation
dadubrow
parents: 911
diff changeset
    71
	protected ConnectToDeviceDialog(Shell shell, LaunchWizardData data) {
911
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    72
		super(shell, data);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    73
		manager = RemoteConnectionsActivator.getConnectionsManager();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    74
		typeProvider = RemoteConnectionsActivator.getConnectionTypeProvider();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    75
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    76
	
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    77
	@Override
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    78
	protected Control createDialogArea(Composite parent) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    79
		final Composite composite = initDialogArea(parent, 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    80
				"Change connection",
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    81
				LaunchWizardHelpIds.WIZARD_DIALOG_CHANGE_CONNECTION);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    82
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    83
		Composite viewerGroup = new Composite(composite, SWT.NONE);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    84
		GridDataFactory.fillDefaults().applyTo(viewerGroup);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    85
		GridLayoutFactory.swtDefaults().numColumns(3).applyTo(viewerGroup);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    86
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    87
		Label label = new Label(viewerGroup, SWT.NONE);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    88
		label.setText("Current connection");
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    89
		GridDataFactory.defaultsFor(label).applyTo(label);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    90
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    91
		viewer = new ComboViewer(viewerGroup, SWT.READ_ONLY);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    92
		viewer.setLabelProvider(new LabelProvider() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    93
			@Override
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    94
			public String getText(Object element) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    95
				if (element instanceof IConnection)
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    96
					return ((IConnection) element).getDisplayName();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    97
				
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    98
				return "No Current connection";
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    99
			}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   100
		});
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   101
		viewer.setContentProvider(new ArrayContentProvider());
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   102
		Combo combo = viewer.getCombo();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   103
		GridDataFactory.defaultsFor(combo).grab(true, false).applyTo(combo);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   104
		viewer.getControl().setData(UID, "combo_viewer"); //$NON-NLS-1$
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   105
		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   106
			public void selectionChanged(SelectionChangedEvent event) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   107
				if (getDialogArea() != null)
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   108
					connectionSelected(getConnectionFromSelection(event.getSelection()));
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   109
			}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   110
		});
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   111
		manager.addConnectionListener(this);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   112
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   113
		editButton = new Button(viewerGroup, SWT.PUSH);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   114
		editButton.setText("Edit...");
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   115
		GridDataFactory.defaultsFor(editButton).applyTo(editButton);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   116
		editButton.setData(UID, "edit_button"); //$NON-NLS-1$
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   117
		editButton.addSelectionListener(new SelectionAdapter() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   118
			@Override
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   119
			public void widgetSelected(SelectionEvent e) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   120
				IConnection connection = getConnectionFromSelection(viewer.getSelection()); 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   121
				if (connection != null) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   122
					SettingsWizard wizard = new SettingsWizard(connection, data.getService());
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   123
					wizard.open(composite.getShell());
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   124
				}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   125
			}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   126
		});
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   127
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   128
		descriptionLabel = new Label(composite, SWT.WRAP);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   129
		GridDataFactory.defaultsFor(descriptionLabel).grab(false, true).applyTo(descriptionLabel);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   130
		composite.addControlListener(new ControlAdapter() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   131
			@Override
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   132
			public void controlResized(ControlEvent e) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   133
				descriptionLabel.pack();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   134
			}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   135
		});
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   136
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   137
		setViewerInput(data.getConnection());
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   138
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   139
		return composite;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   140
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   141
	
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   142
	protected void validate() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   143
		IStatus status = ConnectToDeviceSection.revalidate(data);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   144
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   145
		if (status.isOK()) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   146
			IConnection connection = data.getConnection();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   147
			if (connection != null) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   148
				IConnectedService connectedService = null;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   149
				Collection<IConnectedService> services = manager.getConnectedServices(connection);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   150
				if (services != null) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   151
					for (IConnectedService service : services) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   152
						if (service != null && service.getService().getIdentifier().equals(data.getService().getIdentifier())) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   153
							connectedService = service;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   154
						}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   155
					}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   156
				}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   157
				
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   158
				if (connectedService == null) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   159
					status = error(MessageFormat.format(
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   160
							"The selected connection does not support {0}",
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   161
							data.getService().getDisplayName()));
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   162
				}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   163
				else {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   164
					com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus serviceStatus = 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   165
						connectedService.getStatus();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   166
					if (!serviceStatus.getEStatus().equals(
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   167
							com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus.EStatus.UP)) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   168
						status = warning("The selected connection may not be usable for debugging:\n {0}", 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   169
								serviceStatus.getLongDescription());
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   170
					}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   171
				}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   172
			}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   173
		}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   174
		updateStatus(status);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   175
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   176
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   177
	/**
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   178
	 *	Update for a change in the connection.  We will attempt to connect to the
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   179
	 *  device (once) to detect what TRK it is running.
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   180
	 */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   181
	private void updateConnection(IConnection connection) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   182
		String standardPNPMessage = ConnectToDeviceSection.getStandardPNPMessage();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   183
		data.setConnection(connection);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   184
		if (connection != null) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   185
			descriptionLabel.setText(standardPNPMessage);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   186
		} else {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   187
			descriptionLabel.setText("No connections are detected or defined.  " + standardPNPMessage);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   188
		}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   189
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   190
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   191
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   192
	public void connectionSelected(IConnection connection) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   193
		updateConnection(connection);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   194
		validate();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   195
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   196
	
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   197
	public void connectionAdded(IConnection connection) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   198
		refreshUI();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   199
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   200
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   201
	public void connectionRemoved(IConnection connection) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   202
		refreshUI();		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   203
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   204
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   205
	public void currentConnectionSet(IConnection connection) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   206
		refreshUI();		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   207
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   208
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   209
	private Set<IConnectionType> getCompatibleConnectionTypes() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   210
		HashSet<IConnectionType> types = new HashSet<IConnectionType>();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   211
		Collection<String> compatibleTypeIds =
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   212
			typeProvider.getCompatibleConnectionTypeIds(data.getService());
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   213
		for (String typeId : compatibleTypeIds) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   214
			types.add(typeProvider.getConnectionType(typeId));
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   215
		}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   216
		return types;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   217
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   218
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   219
	private List<IConnection> getCompatibleConnections() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   220
		Set<IConnectionType> types = getCompatibleConnectionTypes();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   221
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   222
		List<IConnection> compatibleConnections = new ArrayList<IConnection>();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   223
		for (IConnection connection : manager.getConnections()) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   224
			if (types.contains(connection.getConnectionType()))
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   225
				compatibleConnections.add(connection);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   226
		}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   227
		return compatibleConnections;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   228
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   229
	
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   230
	private void setViewerInput(IConnection connection) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   231
		List<IConnection> connections = getCompatibleConnections();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   232
		viewer.setInput(connections);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   233
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   234
		if (connections.isEmpty())
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   235
			viewer.getCombo().setEnabled(false);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   236
		else {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   237
			viewer.getCombo().setEnabled(true);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   238
			if (connection == null) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   239
				viewer.getCombo().select(0);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   240
				ISelection selection = viewer.getSelection();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   241
				connection = getConnectionFromSelection(selection);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   242
				viewer.setSelection(selection);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   243
			}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   244
			else
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   245
				viewer.setSelection(new StructuredSelection(connection));
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   246
		}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   247
		editButton.setEnabled(!viewer.getSelection().isEmpty());
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   248
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   249
		// fire listener in case we selected anew or the current connection changed
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   250
		connectionSelected(connection);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   251
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   252
	
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   253
	private IConnection getConnectionFromSelection(ISelection selection) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   254
		return (IConnection) ((IStructuredSelection) selection).getFirstElement();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   255
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   256
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   257
	private void refreshUI() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   258
		Display.getDefault().syncExec(new Runnable() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   259
			public void run() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   260
				if (viewer != null && viewer.getContentProvider() != null) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   261
					setViewerInput(getConnectionFromSelection(viewer.getSelection()));
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   262
				}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   263
			}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   264
		});
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   265
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   266
	
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   267
	@Override
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   268
	public boolean close() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   269
		manager.addConnectionListener(this);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   270
		return super.close();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   271
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   272
}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   273