connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/internal/ui/ClientServiceSiteUI2.java
author dadubrow
Mon, 01 Feb 2010 13:30:39 -0600
branchRCL_2_4
changeset 858 1ef0dbc67108
child 909 24ba32fc0320
permissions -rw-r--r--
backport hostside pnp
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
858
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
     1
/*
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
     3
* All rights reserved.
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
     4
* This component and the accompanying materials are made available
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
     6
* which accompanies this distribution, and is available
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
     8
*
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
     9
* Initial Contributors:
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    11
*
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    12
* Contributors:
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    13
*
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    14
* Description: 
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    15
*
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    16
*/
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    17
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    18
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    19
package com.nokia.carbide.remoteconnections.internal.ui;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    20
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    21
import com.nokia.carbide.remoteconnections.Messages;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    22
import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    23
import com.nokia.carbide.remoteconnections.interfaces.*;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    24
import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    25
import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionsManagerListener;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    26
import com.nokia.carbide.remoteconnections.internal.registry.Registry;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    27
import com.nokia.carbide.remoteconnections.settings.ui.SettingsWizard;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    28
import com.nokia.cpp.internal.api.utils.core.Check;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    29
import com.nokia.cpp.internal.api.utils.core.ListenerList;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    30
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    31
import org.eclipse.core.runtime.IStatus;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    32
import org.eclipse.core.runtime.Status;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    33
import org.eclipse.jface.dialogs.Dialog;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    34
import org.eclipse.jface.dialogs.IDialogConstants;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    35
import org.eclipse.jface.resource.JFaceResources;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    36
import org.eclipse.jface.viewers.*;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    37
import org.eclipse.swt.SWT;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    38
import org.eclipse.swt.events.DisposeEvent;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    39
import org.eclipse.swt.events.DisposeListener;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    40
import org.eclipse.swt.events.SelectionAdapter;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    41
import org.eclipse.swt.events.SelectionEvent;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    42
import org.eclipse.swt.graphics.*;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    43
import org.eclipse.swt.layout.GridData;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    44
import org.eclipse.swt.layout.GridLayout;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    45
import org.eclipse.swt.widgets.*;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    46
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    47
import java.text.MessageFormat;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    48
import java.util.*;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    49
import java.util.List;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    50
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    51
/**
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    52
 * Implementation of IClientServiceSiteUI2
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    53
 */
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    54
@SuppressWarnings("deprecation")
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    55
public class ClientServiceSiteUI2 implements IClientServiceSiteUI2, IConnectionListener, IConnectionsManagerListener {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    56
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    57
	private IService service;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    58
	private ComboViewer viewer;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    59
	private FontMetrics fm;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    60
	private Set<IConnectionType> compatibleConnectionTypes;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    61
	private Button editButton;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    62
	private Button newButton;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    63
	private String connection;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    64
	private ListenerList<IListener> listenerList;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    65
	private static final String UID = ".uid"; //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    66
	private Map<String, String> connectionNames;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    67
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    68
	public ClientServiceSiteUI2(IService service) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    69
		Check.checkArg(service);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    70
		this.service = service;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    71
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    72
	
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    73
	public void createComposite(Composite parent) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    74
		initializeDialogUnits(parent);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    75
		Group group = new Group(parent, SWT.NONE);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    76
		group.setText(Messages.getString("ClientServiceSiteUI2.UseConnectionGroupLabel")); //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    77
		group.setLayout(new GridLayout());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    78
		group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    79
		group.setData(UID, "useConnectionGroup"); //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    80
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    81
		viewer = new ComboViewer(group, SWT.READ_ONLY);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    82
		viewer.setLabelProvider(new LabelProvider() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    83
			@Override
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    84
			public String getText(Object element) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    85
				Check.checkContract(element instanceof String);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    86
				String id = (String) element;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    87
				return connectionNames.get(id);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    88
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    89
		});
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    90
		viewer.setContentProvider(new ArrayContentProvider());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    91
		GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    92
		viewer.getCombo().setLayoutData(gd);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    93
		viewer.getControl().setData(UID, "viewer"); //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    94
		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    95
			public void selectionChanged(SelectionChangedEvent event) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    96
				IStructuredSelection selection = (IStructuredSelection) event.getSelection();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    97
				String connection = (String) selection.getFirstElement();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    98
				if (!connection.equals(ClientServiceSiteUI2.this.connection)) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
    99
					ClientServiceSiteUI2.this.connection = connection;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   100
					fireConnectionSelected();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   101
				}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   102
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   103
		});
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   104
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   105
		final Composite composite = new Composite(group, SWT.NONE);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   106
		GridLayout layout = new GridLayout();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   107
		layout.numColumns = 2;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   108
		layout.makeColumnsEqualWidth = true;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   109
		layout.marginWidth = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.HORIZONTAL_MARGIN);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   110
		layout.marginHeight = Dialog.convertVerticalDLUsToPixels(fm, IDialogConstants.VERTICAL_MARGIN);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   111
		layout.horizontalSpacing = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.HORIZONTAL_SPACING);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   112
		layout.verticalSpacing = Dialog.convertVerticalDLUsToPixels(fm, IDialogConstants.VERTICAL_SPACING);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   113
		composite.setLayout(layout);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   114
		gd = new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.VERTICAL_ALIGN_CENTER);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   115
		composite.setLayoutData(gd);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   116
		composite.setFont(parent.getFont());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   117
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   118
		newButton = new Button(composite, SWT.PUSH);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   119
		newButton.setText(Messages.getString("ClientServiceSiteUI2.NewButtonLabel")); //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   120
		newButton.setFont(JFaceResources.getDialogFont());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   121
		gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   122
		int widthHint = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.BUTTON_WIDTH);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   123
		Point minSize = newButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   124
		gd.widthHint = Math.max(widthHint, minSize.x);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   125
		newButton.setLayoutData(gd);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   126
		newButton.setData(UID, "newButton"); //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   127
		newButton.addSelectionListener(new SelectionAdapter() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   128
			@Override
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   129
			public void widgetSelected(SelectionEvent e) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   130
				SettingsWizard wizard = new SettingsWizard(null, service);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   131
				wizard.open(composite.getShell());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   132
				IConnection connection = wizard.getConnectionToEdit();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   133
				// note: refresh ASAP so the selection will be valid; but endure a listener event
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   134
				// which will redo this
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   135
				refreshUI();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   136
				setViewerInput(connection);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   137
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   138
		});
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   139
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   140
		editButton = new Button(composite, SWT.PUSH);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   141
		editButton.setText(Messages.getString("ClientServiceSiteUI2.EditButtonLabel")); //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   142
		editButton.setFont(JFaceResources.getDialogFont());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   143
		gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   144
		widthHint = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.BUTTON_WIDTH);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   145
		minSize = editButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   146
		gd.widthHint = Math.max(widthHint, minSize.x);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   147
		editButton.setLayoutData(gd);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   148
		editButton.setData(UID, "editButton"); //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   149
		editButton.addSelectionListener(new SelectionAdapter() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   150
			@Override
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   151
			public void widgetSelected(SelectionEvent e) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   152
				IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   153
				Object value = selection.getFirstElement();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   154
				if (value instanceof String) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   155
					IConnection editConnection = getActualConnection((String) value);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   156
					SettingsWizard wizard = new SettingsWizard(editConnection, service);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   157
					wizard.open(composite.getShell());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   158
					
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   159
					// leave the viewer the same, callback will refresh anything needed
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   160
				}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   161
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   162
		});
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   163
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   164
		// attach listeners
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   165
		RemoteConnectionsActivator.getConnectionsManager().addConnectionListener(this);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   166
		RemoteConnectionsActivator.getConnectionsManager().addConnectionStoreChangedListener(this);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   167
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   168
		// remove listeners on dispose
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   169
		group.addDisposeListener(new DisposeListener() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   170
			
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   171
			public void widgetDisposed(DisposeEvent e) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   172
				RemoteConnectionsActivator.getConnectionsManager().addConnectionListener(ClientServiceSiteUI2.this);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   173
				RemoteConnectionsActivator.getConnectionsManager().addConnectionStoreChangedListener(ClientServiceSiteUI2.this);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   174
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   175
		});
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   176
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   177
		setViewerInput(null);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   178
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   179
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   180
	/**
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   181
	 * Get the actual connection for an identifier.
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   182
	 * This is not {@link IConnectionsManager#ensureConnection(String, IService)} because we don't
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   183
	 * want to actually validate the connection now.
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   184
	 * @param id
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   185
	 * @return {@link IConnection} or <code>null</code>
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   186
	 */
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   187
	protected IConnection getActualConnection(String id) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   188
		if (id == null) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   189
			return null;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   190
		}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   191
		if (id.equals(Registry.CURRENT_CONNECTION_ID)) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   192
			return RemoteConnectionsActivator.getConnectionsManager().getCurrentConnection();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   193
		}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   194
		for (IConnection connection : RemoteConnectionsActivator.getConnectionsManager().getConnections()) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   195
			if (connection.getIdentifier().equals(id)) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   196
				return connection;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   197
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   198
		}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   199
		return null;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   200
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   201
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   202
	/**
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   203
	 * Set the selected input.  
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   204
	 * @param connection existing connection or <code>null</code> for the current   
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   205
	 */
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   206
	private void setViewerInput(IConnection connection) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   207
		List<IConnection> compatible = getCompatibleConnections();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   208
		connectionNames = new LinkedHashMap<String, String>();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   209
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   210
		// update the current
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   211
		IConnection currentConnection = RemoteConnectionsActivator.getConnectionsManager().getCurrentConnection();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   212
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   213
		connectionNames.put(Registry.CURRENT_CONNECTION_ID, createCurrentConnectionName(currentConnection));
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   214
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   215
		for (IConnection conn : compatible) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   216
			connectionNames.put(conn.getIdentifier(), conn.getDisplayName());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   217
		}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   218
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   219
		viewer.setInput(connectionNames.keySet());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   220
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   221
		if (connectionNames.isEmpty())
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   222
			viewer.getCombo().setEnabled(false);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   223
		else {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   224
			viewer.getCombo().setEnabled(true);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   225
			if (connection == null) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   226
				viewer.getCombo().select(0);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   227
				viewer.setSelection(viewer.getSelection());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   228
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   229
			else
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   230
				selectConnection(connection.getIdentifier());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   231
		}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   232
		editButton.setEnabled(!viewer.getSelection().isEmpty());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   233
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   234
		// fire listener in case we selected anew or the current connection changed
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   235
		fireConnectionSelected();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   236
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   237
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   238
	private void refreshUI() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   239
		Display.getDefault().syncExec(new Runnable() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   240
			public void run() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   241
				if (viewer != null && viewer.getContentProvider() != null) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   242
					
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   243
					// try to preserve the currently selected item, if it's a concrete
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   244
					// connection; if it's current, allow for the new current to be chosen.
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   245
					IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   246
					Object value = selection.getFirstElement();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   247
					String current = null;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   248
					if (value instanceof String) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   249
						current = (String) value;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   250
					}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   251
					if (Registry.CURRENT_CONNECTION_ID.equals(current)) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   252
						current = null;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   253
					}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   254
					setViewerInput(getActualConnection(current));
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   255
				}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   256
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   257
		});
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   258
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   259
	
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   260
	/**
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   261
	 * @param currentConnection
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   262
	 * @return
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   263
	 */
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   264
	private String createCurrentConnectionName(IConnection currentConnection) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   265
		return MessageFormat.format(Messages.getString("ClientServiceSiteUI2.CurrentConnectionFormat"), //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   266
				currentConnection != null ? currentConnection.getDisplayName() : 
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   267
					Messages.getString("ClientServiceSiteUI2.CurrentConnection_NoneDetected")); //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   268
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   269
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   270
	private void initializeDialogUnits(Composite parent) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   271
		GC gc = new GC(parent);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   272
		gc.setFont(JFaceResources.getDialogFont());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   273
		fm = gc.getFontMetrics();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   274
		gc.dispose();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   275
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   276
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   277
	private List<IConnection> getCompatibleConnections() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   278
		getCompatibleConnectionTypes();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   279
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   280
		List<IConnection> compatibleConnections = new ArrayList<IConnection>();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   281
		for (IConnection connection : Registry.instance().getConnections()) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   282
			if (isCompatibleConnection(connection))
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   283
				compatibleConnections.add(connection);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   284
		}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   285
		return compatibleConnections;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   286
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   287
	
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   288
	private boolean isCompatibleConnection(IConnection connection) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   289
		return compatibleConnectionTypes.contains(connection.getConnectionType());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   290
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   291
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   292
	private void getCompatibleConnectionTypes() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   293
		compatibleConnectionTypes = new HashSet<IConnectionType>();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   294
		Collection<String> compatibleTypeIds =
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   295
			Registry.instance().getCompatibleConnectionTypeIds(service);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   296
		for (String typeId : compatibleTypeIds) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   297
			compatibleConnectionTypes.add(
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   298
					Registry.instance().getConnectionType(typeId));
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   299
		}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   300
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   301
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   302
	public void selectConnection(String connection) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   303
		viewer.setSelection(new StructuredSelection(connection));
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   304
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   305
	
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   306
	public String getSelectedConnection() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   307
		return connection;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   308
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   309
	
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   310
	public IStatus getSelectionStatus() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   311
		String requiredConnectionTypes = getAllowedConnectionTypesString();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   312
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   313
		// no selection yet...?
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   314
		if (connection == null) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   315
			return new Status(IStatus.ERROR, RemoteConnectionsActivator.PLUGIN_ID,
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   316
					MessageFormat.format(
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   317
							Messages.getString("ClientServiceSiteUI2.NoConnectionError"), //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   318
							service.getDisplayName(),
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   319
							requiredConnectionTypes));
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   320
		}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   321
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   322
		// check whether the current is compatible with the service and connection type
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   323
		if (Registry.CURRENT_CONNECTION_ID.equals(connection)) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   324
			IConnection actual = getActualConnection(connection);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   325
			if (actual == null) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   326
				return new Status(IStatus.ERROR, RemoteConnectionsActivator.PLUGIN_ID,
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   327
						MessageFormat.format(
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   328
							Messages.getString("ClientServiceSiteUI2.NoCurrentConnection"), //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   329
							service.getDisplayName(),
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   330
							requiredConnectionTypes));
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   331
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   332
			
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   333
			// is the service supported?
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   334
			boolean found = false;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   335
			for (IConnectedService aService : Registry.instance().getConnectedServices(actual)) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   336
				if (service.getIdentifier().equals(aService.getService().getIdentifier())) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   337
					found = true;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   338
					break;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   339
				}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   340
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   341
			if (!found) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   342
				return new Status(IStatus.WARNING, RemoteConnectionsActivator.PLUGIN_ID,
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   343
						MessageFormat.format(
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   344
								Messages.getString("ClientServiceSiteUI2.IncompatibleCurrentConnectionService") //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   345
								+ "\n"  //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   346
								+ Messages.getString("ClientServiceSiteUI2.IncompatibleCurrentConnectionFixupAdvice"), //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   347
								actual.getDisplayName(),
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   348
								service.getDisplayName()));
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   349
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   350
			
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   351
			// is the hardware type supported by the service?
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   352
			if (!isCompatibleConnection(actual)) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   353
				return new Status(IStatus.WARNING, RemoteConnectionsActivator.PLUGIN_ID,
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   354
						MessageFormat.format(
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   355
								Messages.getString("ClientServiceSiteUI2.IncompatibleCurrentConnectionType") //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   356
								+ "\n"  //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   357
								+ Messages.getString("ClientServiceSiteUI2.IncompatibleCurrentConnectionFixupAdvice"), //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   358
								actual.getDisplayName(),
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   359
								requiredConnectionTypes));
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   360
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   361
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   362
		}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   363
		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   364
		// otherwise, it's okay!
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   365
		return Status.OK_STATUS;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   366
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   367
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   368
	private String getAllowedConnectionTypesString() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   369
		StringBuilder requiredConnectionTypes = new StringBuilder();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   370
		IConnectionType[] connectionTypes = 
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   371
			(IConnectionType[]) compatibleConnectionTypes.toArray(new IConnectionType[compatibleConnectionTypes.size()]);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   372
		for (int i = 0; i < connectionTypes.length; i++) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   373
			IConnectionType type = connectionTypes[i];
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   374
			if (requiredConnectionTypes.length() > 0)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   375
				requiredConnectionTypes.append(", "); //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   376
			if (i == connectionTypes.length - 1)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   377
				requiredConnectionTypes.append(Messages.getString("ClientServiceSiteUI2.Or")); //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   378
			requiredConnectionTypes.append(type.getDisplayName());
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   379
		}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   380
		return requiredConnectionTypes.toString();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   381
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   382
	
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   383
	/* (non-Javadoc)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   384
	 * @see com.nokia.carbide.remoteconnections.interfaces.IClientServiceSiteUI2#getConnectionDisplayName(java.lang.String)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   385
	 */
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   386
	public String getConnectionDisplayName(String connection) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   387
		String display = connectionNames.get(connection);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   388
		if (display == null)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   389
			display = MessageFormat.format(Messages.getString("ClientServiceSiteUI2.DeletedConnectionDisplayName"), connection); //$NON-NLS-1$
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   390
		return display;
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   391
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   392
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   393
	public void addListener(IListener listener) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   394
		if (listenerList == null)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   395
			listenerList = new ListenerList<IListener>();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   396
		listenerList.add(listener);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   397
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   398
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   399
	public void removeListener(IListener listener) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   400
		if (listenerList != null)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   401
			listenerList.remove(listener);
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   402
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   403
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   404
	private void fireConnectionSelected() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   405
		if (listenerList != null) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   406
			for (IListener listener : listenerList) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   407
				listener.connectionSelected();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   408
			}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   409
		}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   410
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   411
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   412
	/* (non-Javadoc)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   413
	 * @see com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener#connectionAdded(com.nokia.carbide.remoteconnections.interfaces.IConnection)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   414
	 */
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   415
	public void connectionAdded(IConnection connection) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   416
		refreshUI();
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   417
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   418
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   419
	/* (non-Javadoc)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   420
	 * @see com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener#connectionRemoved(com.nokia.carbide.remoteconnections.interfaces.IConnection)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   421
	 */
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   422
	public void connectionRemoved(IConnection connection) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   423
		refreshUI();		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   424
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   425
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   426
	/* (non-Javadoc)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   427
	 * @see com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener#currentConnectionSet(com.nokia.carbide.remoteconnections.interfaces.IConnection)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   428
	 */
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   429
	public void currentConnectionSet(IConnection connection) {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   430
		refreshUI();		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   431
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   432
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   433
	/* (non-Javadoc)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   434
	 * @see com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionsManagerListener#connectionStoreChanged()
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   435
	 */
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   436
	public void connectionStoreChanged() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   437
		refreshUI();		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   438
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   439
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   440
	/* (non-Javadoc)
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   441
	 * @see com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionsManagerListener#displayChanged()
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   442
	 */
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   443
	public void displayChanged() {
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   444
		refreshUI();		
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   445
	}
1ef0dbc67108 backport hostside pnp
dadubrow
parents:
diff changeset
   446
}