debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/ConnectToDeviceDialog.java
changeset 964 b0c1a1239188
parent 956 d1e221a2875f
child 969 b0dd389735fb
equal deleted inserted replaced
962:239e8d35ac54 964:b0c1a1239188
    23 import java.util.HashSet;
    23 import java.util.HashSet;
    24 import java.util.List;
    24 import java.util.List;
    25 import java.util.Set;
    25 import java.util.Set;
    26 
    26 
    27 import org.eclipse.core.runtime.IStatus;
    27 import org.eclipse.core.runtime.IStatus;
       
    28 import org.eclipse.jface.dialogs.Dialog;
       
    29 import org.eclipse.jface.dialogs.IDialogConstants;
    28 import org.eclipse.jface.layout.GridDataFactory;
    30 import org.eclipse.jface.layout.GridDataFactory;
    29 import org.eclipse.jface.layout.GridLayoutFactory;
    31 import org.eclipse.jface.layout.GridLayoutFactory;
       
    32 import org.eclipse.jface.resource.JFaceResources;
    30 import org.eclipse.jface.viewers.ArrayContentProvider;
    33 import org.eclipse.jface.viewers.ArrayContentProvider;
    31 import org.eclipse.jface.viewers.ComboViewer;
    34 import org.eclipse.jface.viewers.ComboViewer;
    32 import org.eclipse.jface.viewers.ISelection;
    35 import org.eclipse.jface.viewers.ISelection;
    33 import org.eclipse.jface.viewers.ISelectionChangedListener;
    36 import org.eclipse.jface.viewers.ISelectionChangedListener;
    34 import org.eclipse.jface.viewers.IStructuredSelection;
    37 import org.eclipse.jface.viewers.IStructuredSelection;
    38 import org.eclipse.swt.SWT;
    41 import org.eclipse.swt.SWT;
    39 import org.eclipse.swt.events.ControlAdapter;
    42 import org.eclipse.swt.events.ControlAdapter;
    40 import org.eclipse.swt.events.ControlEvent;
    43 import org.eclipse.swt.events.ControlEvent;
    41 import org.eclipse.swt.events.SelectionAdapter;
    44 import org.eclipse.swt.events.SelectionAdapter;
    42 import org.eclipse.swt.events.SelectionEvent;
    45 import org.eclipse.swt.events.SelectionEvent;
       
    46 import org.eclipse.swt.graphics.FontMetrics;
       
    47 import org.eclipse.swt.graphics.GC;
       
    48 import org.eclipse.swt.graphics.Point;
    43 import org.eclipse.swt.widgets.Button;
    49 import org.eclipse.swt.widgets.Button;
    44 import org.eclipse.swt.widgets.Combo;
    50 import org.eclipse.swt.widgets.Combo;
    45 import org.eclipse.swt.widgets.Composite;
    51 import org.eclipse.swt.widgets.Composite;
    46 import org.eclipse.swt.widgets.Control;
    52 import org.eclipse.swt.widgets.Control;
    47 import org.eclipse.swt.widgets.Display;
    53 import org.eclipse.swt.widgets.Display;
       
    54 import org.eclipse.swt.widgets.Group;
    48 import org.eclipse.swt.widgets.Label;
    55 import org.eclipse.swt.widgets.Label;
    49 import org.eclipse.swt.widgets.Shell;
    56 import org.eclipse.swt.widgets.Shell;
    50 
    57 
    51 import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
    58 import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
    52 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService;
    59 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService;
    62  */
    69  */
    63 @SuppressWarnings("restriction")
    70 @SuppressWarnings("restriction")
    64 public class ConnectToDeviceDialog extends AbstractLaunchSettingsDialog implements IConnectionListener {
    71 public class ConnectToDeviceDialog extends AbstractLaunchSettingsDialog implements IConnectionListener {
    65 	private IConnectionsManager manager;
    72 	private IConnectionsManager manager;
    66 	private IConnectionTypeProvider typeProvider;
    73 	private IConnectionTypeProvider typeProvider;
       
    74 	private FontMetrics fm;
    67 	private ComboViewer viewer;
    75 	private ComboViewer viewer;
    68 	private Button editButton;
    76 	private Button editButton;
    69 	private Label descriptionLabel;
    77 	private Label descriptionLabel;
       
    78 	private Button newButton;
    70 
    79 
    71 	protected ConnectToDeviceDialog(Shell shell, LaunchWizardData data) {
    80 	protected ConnectToDeviceDialog(Shell shell, LaunchWizardData data) {
    72 		super(shell, data);
    81 		super(shell, data);
    73 		manager = RemoteConnectionsActivator.getConnectionsManager();
    82 		manager = RemoteConnectionsActivator.getConnectionsManager();
    74 		typeProvider = RemoteConnectionsActivator.getConnectionTypeProvider();
    83 		typeProvider = RemoteConnectionsActivator.getConnectionTypeProvider();
    75 	}
    84 	}
    76 	
    85 	
    77 	@Override
    86 	@Override
    78 	protected Control createDialogArea(Composite parent) {
    87 	protected Control createDialogArea(Composite parent) {
       
    88 		initializeDialogUnits(parent);
    79 		final Composite composite = initDialogArea(parent, 
    89 		final Composite composite = initDialogArea(parent, 
    80 				"Change connection",
    90 				"Change connection",
    81 				LaunchWizardHelpIds.WIZARD_DIALOG_CHANGE_CONNECTION);
    91 				LaunchWizardHelpIds.WIZARD_DIALOG_CHANGE_CONNECTION);
    82 		
    92 		
    83 		Composite viewerGroup = new Composite(composite, SWT.NONE);
    93 		Group viewerGroup = new Group(composite, SWT.NONE);
       
    94 		viewerGroup.setText("Current connection");
    84 		GridDataFactory.fillDefaults().applyTo(viewerGroup);
    95 		GridDataFactory.fillDefaults().applyTo(viewerGroup);
    85 		GridLayoutFactory.swtDefaults().numColumns(3).applyTo(viewerGroup);
    96 		GridLayoutFactory.swtDefaults().applyTo(viewerGroup);
    86 		
       
    87 		Label label = new Label(viewerGroup, SWT.NONE);
       
    88 		label.setText("Current connection");
       
    89 		GridDataFactory.defaultsFor(label).applyTo(label);
       
    90 		
    97 		
    91 		viewer = new ComboViewer(viewerGroup, SWT.READ_ONLY);
    98 		viewer = new ComboViewer(viewerGroup, SWT.READ_ONLY);
    92 		viewer.setLabelProvider(new LabelProvider() {
    99 		viewer.setLabelProvider(new LabelProvider() {
    93 			@Override
   100 			@Override
    94 			public String getText(Object element) {
   101 			public String getText(Object element) {
   108 					connectionSelected(getConnectionFromSelection(event.getSelection()));
   115 					connectionSelected(getConnectionFromSelection(event.getSelection()));
   109 			}
   116 			}
   110 		});
   117 		});
   111 		manager.addConnectionListener(this);
   118 		manager.addConnectionListener(this);
   112 		
   119 		
   113 		editButton = new Button(viewerGroup, SWT.PUSH);
   120 		final Composite buttonGroup = new Composite(viewerGroup, SWT.NONE);
       
   121 		int w = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.HORIZONTAL_MARGIN);
       
   122 		int h = Dialog.convertVerticalDLUsToPixels(fm, IDialogConstants.VERTICAL_MARGIN);
       
   123 		int hs = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.HORIZONTAL_SPACING);
       
   124 		int vs = Dialog.convertVerticalDLUsToPixels(fm, IDialogConstants.VERTICAL_SPACING);
       
   125 		GridLayoutFactory.swtDefaults().numColumns(2).equalWidth(true).
       
   126 			margins(w, h).spacing(hs, vs).applyTo(buttonGroup);
       
   127 		GridDataFactory.swtDefaults().align(SWT.END, SWT.CENTER).applyTo(buttonGroup);
       
   128 		buttonGroup.setFont(parent.getFont());
       
   129 		
       
   130 		newButton = new Button(buttonGroup, SWT.PUSH);
       
   131 		newButton.setText("New...");
       
   132 		newButton.setFont(JFaceResources.getDialogFont());
       
   133 		int widthHint = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.BUTTON_WIDTH);
       
   134 		Point minSize = newButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
       
   135 		widthHint = Math.max(widthHint, minSize.x);
       
   136 		GridDataFactory.swtDefaults().align(SWT.FILL, SWT.TOP).hint(widthHint, SWT.DEFAULT).applyTo(newButton);
       
   137 		newButton.setData(UID, "newButton"); //$NON-NLS-1$
       
   138 		newButton.addSelectionListener(new SelectionAdapter() {
       
   139 			@Override
       
   140 			public void widgetSelected(SelectionEvent e) {
       
   141 				SettingsWizard wizard = new SettingsWizard(null, data.getService());
       
   142 				wizard.open(composite.getShell());
       
   143 				IConnection connection = wizard.getConnectionToEdit();
       
   144 				// note: refresh ASAP so the selection will be valid; but endure a listener event
       
   145 				// which will redo this
       
   146 				refreshUI();
       
   147 				setViewerInput(connection);
       
   148 			}
       
   149 		});
       
   150 		
       
   151 		editButton = new Button(buttonGroup, SWT.PUSH);
   114 		editButton.setText("Edit...");
   152 		editButton.setText("Edit...");
   115 		GridDataFactory.defaultsFor(editButton).applyTo(editButton);
   153 		editButton.setFont(JFaceResources.getDialogFont());
   116 		editButton.setData(UID, "edit_button"); //$NON-NLS-1$
   154 		widthHint = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.BUTTON_WIDTH);
       
   155 		minSize = editButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
       
   156 		widthHint = Math.max(widthHint, minSize.x);
       
   157 		GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).hint(widthHint, SWT.DEFAULT).applyTo(editButton);
       
   158 		editButton.setData(UID, "editButton"); //$NON-NLS-1$
   117 		editButton.addSelectionListener(new SelectionAdapter() {
   159 		editButton.addSelectionListener(new SelectionAdapter() {
   118 			@Override
   160 			@Override
   119 			public void widgetSelected(SelectionEvent e) {
   161 			public void widgetSelected(SelectionEvent e) {
   120 				IConnection connection = getConnectionFromSelection(viewer.getSelection()); 
   162 				IConnection connection = getConnectionFromSelection(viewer.getSelection()); 
   121 				if (connection != null) {
   163 				if (connection != null) {
   137 		setViewerInput(data.getConnection());
   179 		setViewerInput(data.getConnection());
   138 
   180 
   139 		return composite;
   181 		return composite;
   140 	}
   182 	}
   141 	
   183 	
       
   184 	private void initializeDialogUnits(Composite parent) {
       
   185 		GC gc = new GC(parent);
       
   186 		gc.setFont(JFaceResources.getDialogFont());
       
   187 		fm = gc.getFontMetrics();
       
   188 		gc.dispose();
       
   189 	}
       
   190 
   142 	protected void validate() {
   191 	protected void validate() {
   143 		IStatus status = ConnectToDeviceSection.revalidate(data);
   192 		IStatus status = ConnectToDeviceSection.revalidate(data);
   144 
   193 
   145 		if (status.isOK()) {
   194 		if (status.isOK()) {
   146 			IConnection connection = data.getConnection();
   195 			IConnection connection = data.getConnection();