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) { |