author | John Dean <john.3.dean@nokia.com> |
Wed, 17 Feb 2010 12:51:20 -0800 | |
branch | RCL_2_4 |
changeset 977 | 787669693166 |
parent 966 | 15c9cbbf6707 |
child 982 | c848ffa5a500 |
permissions | -rw-r--r-- |
911 | 1 |
/* |
2 |
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). |
|
3 |
* All rights reserved. |
|
4 |
* This component and the accompanying materials are made available |
|
5 |
* under the terms of the License "Eclipse Public License v1.0" |
|
6 |
* which accompanies this distribution, and is available |
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 |
* |
|
9 |
* Initial Contributors: |
|
10 |
* Nokia Corporation - initial contribution. |
|
11 |
* |
|
12 |
* Contributors: |
|
13 |
* |
|
14 |
* Description: |
|
15 |
* |
|
16 |
*/ |
|
17 |
||
18 |
package com.nokia.cdt.internal.debug.launch.newwizard; |
|
19 |
||
20 |
import java.text.MessageFormat; |
|
21 |
import java.util.ArrayList; |
|
22 |
import java.util.Collection; |
|
23 |
import java.util.HashSet; |
|
24 |
import java.util.List; |
|
25 |
import java.util.Set; |
|
26 |
||
27 |
import org.eclipse.core.runtime.IStatus; |
|
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
28 |
import org.eclipse.jface.dialogs.Dialog; |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
29 |
import org.eclipse.jface.dialogs.IDialogConstants; |
911 | 30 |
import org.eclipse.jface.layout.GridDataFactory; |
31 |
import org.eclipse.jface.layout.GridLayoutFactory; |
|
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
32 |
import org.eclipse.jface.resource.JFaceResources; |
911 | 33 |
import org.eclipse.jface.viewers.ArrayContentProvider; |
34 |
import org.eclipse.jface.viewers.ComboViewer; |
|
35 |
import org.eclipse.jface.viewers.ISelection; |
|
36 |
import org.eclipse.jface.viewers.ISelectionChangedListener; |
|
37 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
38 |
import org.eclipse.jface.viewers.LabelProvider; |
|
39 |
import org.eclipse.jface.viewers.SelectionChangedEvent; |
|
40 |
import org.eclipse.jface.viewers.StructuredSelection; |
|
41 |
import org.eclipse.swt.SWT; |
|
42 |
import org.eclipse.swt.events.ControlAdapter; |
|
43 |
import org.eclipse.swt.events.ControlEvent; |
|
44 |
import org.eclipse.swt.events.SelectionAdapter; |
|
45 |
import org.eclipse.swt.events.SelectionEvent; |
|
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
46 |
import org.eclipse.swt.graphics.FontMetrics; |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
47 |
import org.eclipse.swt.graphics.GC; |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
48 |
import org.eclipse.swt.graphics.Point; |
911 | 49 |
import org.eclipse.swt.widgets.Button; |
50 |
import org.eclipse.swt.widgets.Combo; |
|
51 |
import org.eclipse.swt.widgets.Composite; |
|
52 |
import org.eclipse.swt.widgets.Control; |
|
53 |
import org.eclipse.swt.widgets.Display; |
|
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
54 |
import org.eclipse.swt.widgets.Group; |
911 | 55 |
import org.eclipse.swt.widgets.Label; |
56 |
import org.eclipse.swt.widgets.Shell; |
|
57 |
||
58 |
import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator; |
|
59 |
import com.nokia.carbide.remoteconnections.interfaces.IConnectedService; |
|
60 |
import com.nokia.carbide.remoteconnections.interfaces.IConnection; |
|
61 |
import com.nokia.carbide.remoteconnections.interfaces.IConnectionType; |
|
62 |
import com.nokia.carbide.remoteconnections.interfaces.IConnectionTypeProvider; |
|
63 |
import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager; |
|
64 |
import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener; |
|
65 |
import com.nokia.carbide.remoteconnections.settings.ui.SettingsWizard; |
|
66 |
||
67 |
/** |
|
68 |
* This dialog allows in-depth configuration of the connection settings. |
|
69 |
*/ |
|
70 |
@SuppressWarnings("restriction") |
|
71 |
public class ConnectToDeviceDialog extends AbstractLaunchSettingsDialog implements IConnectionListener { |
|
72 |
private IConnectionsManager manager; |
|
73 |
private IConnectionTypeProvider typeProvider; |
|
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
74 |
private FontMetrics fm; |
911 | 75 |
private ComboViewer viewer; |
76 |
private Button editButton; |
|
77 |
private Label descriptionLabel; |
|
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
78 |
private Button newButton; |
911 | 79 |
|
953 | 80 |
protected ConnectToDeviceDialog(Shell shell, LaunchWizardData data) { |
911 | 81 |
super(shell, data); |
82 |
manager = RemoteConnectionsActivator.getConnectionsManager(); |
|
83 |
typeProvider = RemoteConnectionsActivator.getConnectionTypeProvider(); |
|
84 |
} |
|
85 |
||
86 |
@Override |
|
87 |
protected Control createDialogArea(Composite parent) { |
|
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
88 |
initializeDialogUnits(parent); |
911 | 89 |
final Composite composite = initDialogArea(parent, |
966 | 90 |
Messages.getString("ConnectToDeviceDialog.Title"), //$NON-NLS-1$ |
911 | 91 |
LaunchWizardHelpIds.WIZARD_DIALOG_CHANGE_CONNECTION); |
92 |
||
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
93 |
Group viewerGroup = new Group(composite, SWT.NONE); |
966 | 94 |
viewerGroup.setText(Messages.getString("ConnectToDeviceDialog.GroupLabel")); //$NON-NLS-1$ |
911 | 95 |
GridDataFactory.fillDefaults().applyTo(viewerGroup); |
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
96 |
GridLayoutFactory.swtDefaults().applyTo(viewerGroup); |
911 | 97 |
|
98 |
viewer = new ComboViewer(viewerGroup, SWT.READ_ONLY); |
|
99 |
viewer.setLabelProvider(new LabelProvider() { |
|
100 |
@Override |
|
101 |
public String getText(Object element) { |
|
102 |
if (element instanceof IConnection) |
|
103 |
return ((IConnection) element).getDisplayName(); |
|
104 |
||
966 | 105 |
return Messages.getString("ConnectToDeviceDialog.NoCurrentItem"); //$NON-NLS-1$ |
911 | 106 |
} |
107 |
}); |
|
108 |
viewer.setContentProvider(new ArrayContentProvider()); |
|
109 |
Combo combo = viewer.getCombo(); |
|
110 |
GridDataFactory.defaultsFor(combo).grab(true, false).applyTo(combo); |
|
111 |
viewer.getControl().setData(UID, "combo_viewer"); //$NON-NLS-1$ |
|
112 |
viewer.addSelectionChangedListener(new ISelectionChangedListener() { |
|
113 |
public void selectionChanged(SelectionChangedEvent event) { |
|
114 |
if (getDialogArea() != null) |
|
115 |
connectionSelected(getConnectionFromSelection(event.getSelection())); |
|
116 |
} |
|
117 |
}); |
|
118 |
manager.addConnectionListener(this); |
|
119 |
||
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
120 |
final Composite buttonGroup = new Composite(viewerGroup, SWT.NONE); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
121 |
int w = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.HORIZONTAL_MARGIN); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
122 |
int h = Dialog.convertVerticalDLUsToPixels(fm, IDialogConstants.VERTICAL_MARGIN); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
123 |
int hs = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.HORIZONTAL_SPACING); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
124 |
int vs = Dialog.convertVerticalDLUsToPixels(fm, IDialogConstants.VERTICAL_SPACING); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
125 |
GridLayoutFactory.swtDefaults().numColumns(2).equalWidth(true). |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
126 |
margins(w, h).spacing(hs, vs).applyTo(buttonGroup); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
127 |
GridDataFactory.swtDefaults().align(SWT.END, SWT.CENTER).applyTo(buttonGroup); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
128 |
buttonGroup.setFont(parent.getFont()); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
129 |
|
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
130 |
newButton = new Button(buttonGroup, SWT.PUSH); |
966 | 131 |
newButton.setText(Messages.getString("ConnectToDeviceDialog.NewLabel")); //$NON-NLS-1$ |
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
132 |
newButton.setFont(JFaceResources.getDialogFont()); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
133 |
int widthHint = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.BUTTON_WIDTH); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
134 |
Point minSize = newButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
135 |
widthHint = Math.max(widthHint, minSize.x); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
136 |
GridDataFactory.swtDefaults().align(SWT.FILL, SWT.TOP).hint(widthHint, SWT.DEFAULT).applyTo(newButton); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
137 |
newButton.setData(UID, "newButton"); //$NON-NLS-1$ |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
138 |
newButton.addSelectionListener(new SelectionAdapter() { |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
139 |
@Override |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
140 |
public void widgetSelected(SelectionEvent e) { |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
141 |
SettingsWizard wizard = new SettingsWizard(null, data.getService()); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
142 |
wizard.open(composite.getShell()); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
143 |
IConnection connection = wizard.getConnectionToEdit(); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
144 |
// note: refresh ASAP so the selection will be valid; but endure a listener event |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
145 |
// which will redo this |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
146 |
refreshUI(); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
147 |
setViewerInput(connection); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
148 |
} |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
149 |
}); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
150 |
|
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
151 |
editButton = new Button(buttonGroup, SWT.PUSH); |
966 | 152 |
editButton.setText(Messages.getString("ConnectToDeviceDialog.EditLabel")); //$NON-NLS-1$ |
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
153 |
editButton.setFont(JFaceResources.getDialogFont()); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
154 |
widthHint = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.BUTTON_WIDTH); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
155 |
minSize = editButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
156 |
widthHint = Math.max(widthHint, minSize.x); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
157 |
GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).hint(widthHint, SWT.DEFAULT).applyTo(editButton); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
158 |
editButton.setData(UID, "editButton"); //$NON-NLS-1$ |
911 | 159 |
editButton.addSelectionListener(new SelectionAdapter() { |
160 |
@Override |
|
161 |
public void widgetSelected(SelectionEvent e) { |
|
162 |
IConnection connection = getConnectionFromSelection(viewer.getSelection()); |
|
163 |
if (connection != null) { |
|
164 |
SettingsWizard wizard = new SettingsWizard(connection, data.getService()); |
|
165 |
wizard.open(composite.getShell()); |
|
166 |
} |
|
167 |
} |
|
168 |
}); |
|
169 |
||
170 |
descriptionLabel = new Label(composite, SWT.WRAP); |
|
171 |
GridDataFactory.defaultsFor(descriptionLabel).grab(false, true).applyTo(descriptionLabel); |
|
172 |
composite.addControlListener(new ControlAdapter() { |
|
173 |
@Override |
|
174 |
public void controlResized(ControlEvent e) { |
|
175 |
descriptionLabel.pack(); |
|
176 |
} |
|
177 |
}); |
|
178 |
||
179 |
setViewerInput(data.getConnection()); |
|
180 |
||
181 |
return composite; |
|
182 |
} |
|
183 |
||
963
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
184 |
private void initializeDialogUnits(Composite parent) { |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
185 |
GC gc = new GC(parent); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
186 |
gc.setFont(JFaceResources.getDialogFont()); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
187 |
fm = gc.getFontMetrics(); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
188 |
gc.dispose(); |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
189 |
} |
ed38f30e9216
add new button to new launch wizard connection dialog
dadubrow
parents:
953
diff
changeset
|
190 |
|
911 | 191 |
protected void validate() { |
192 |
IStatus status = ConnectToDeviceSection.revalidate(data); |
|
193 |
||
194 |
if (status.isOK()) { |
|
195 |
IConnection connection = data.getConnection(); |
|
196 |
if (connection != null) { |
|
197 |
IConnectedService connectedService = null; |
|
198 |
Collection<IConnectedService> services = manager.getConnectedServices(connection); |
|
977
787669693166
In Registry.getConnectedServices(IConnection), return empty collection instead of null. Use isEmpty() instead of == null for caller conditionals
John Dean <john.3.dean@nokia.com>
parents:
966
diff
changeset
|
199 |
for (IConnectedService service : services) { |
787669693166
In Registry.getConnectedServices(IConnection), return empty collection instead of null. Use isEmpty() instead of == null for caller conditionals
John Dean <john.3.dean@nokia.com>
parents:
966
diff
changeset
|
200 |
if (service != null && service.getService().getIdentifier().equals(data.getService().getIdentifier())) { |
787669693166
In Registry.getConnectedServices(IConnection), return empty collection instead of null. Use isEmpty() instead of == null for caller conditionals
John Dean <john.3.dean@nokia.com>
parents:
966
diff
changeset
|
201 |
connectedService = service; |
911 | 202 |
} |
203 |
} |
|
204 |
||
205 |
if (connectedService == null) { |
|
206 |
status = error(MessageFormat.format( |
|
966 | 207 |
Messages.getString("ConnectToDeviceDialog.ServiceNotSupportedError"), //$NON-NLS-1$ |
911 | 208 |
data.getService().getDisplayName())); |
209 |
} |
|
210 |
else { |
|
211 |
com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus serviceStatus = |
|
212 |
connectedService.getStatus(); |
|
213 |
if (!serviceStatus.getEStatus().equals( |
|
214 |
com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus.EStatus.UP)) { |
|
966 | 215 |
status = warning(Messages.getString("ConnectToDeviceDialog.ServiceNotAvailWarning"), //$NON-NLS-1$ |
911 | 216 |
serviceStatus.getLongDescription()); |
217 |
} |
|
218 |
} |
|
219 |
} |
|
220 |
} |
|
221 |
updateStatus(status); |
|
222 |
} |
|
223 |
||
224 |
/** |
|
225 |
* Update for a change in the connection. We will attempt to connect to the |
|
226 |
* device (once) to detect what TRK it is running. |
|
227 |
*/ |
|
228 |
private void updateConnection(IConnection connection) { |
|
229 |
String standardPNPMessage = ConnectToDeviceSection.getStandardPNPMessage(); |
|
230 |
data.setConnection(connection); |
|
231 |
if (connection != null) { |
|
232 |
descriptionLabel.setText(standardPNPMessage); |
|
233 |
} else { |
|
966 | 234 |
descriptionLabel.setText(Messages.getString("ConnectToDeviceDialog.NoConnectionsText") + standardPNPMessage); //$NON-NLS-1$ |
911 | 235 |
} |
236 |
||
237 |
} |
|
238 |
||
239 |
public void connectionSelected(IConnection connection) { |
|
240 |
updateConnection(connection); |
|
241 |
validate(); |
|
242 |
} |
|
243 |
||
244 |
public void connectionAdded(IConnection connection) { |
|
245 |
refreshUI(); |
|
246 |
} |
|
247 |
||
248 |
public void connectionRemoved(IConnection connection) { |
|
249 |
refreshUI(); |
|
250 |
} |
|
251 |
||
252 |
public void currentConnectionSet(IConnection connection) { |
|
253 |
refreshUI(); |
|
254 |
} |
|
255 |
||
256 |
private Set<IConnectionType> getCompatibleConnectionTypes() { |
|
257 |
HashSet<IConnectionType> types = new HashSet<IConnectionType>(); |
|
258 |
Collection<String> compatibleTypeIds = |
|
259 |
typeProvider.getCompatibleConnectionTypeIds(data.getService()); |
|
260 |
for (String typeId : compatibleTypeIds) { |
|
261 |
types.add(typeProvider.getConnectionType(typeId)); |
|
262 |
} |
|
263 |
return types; |
|
264 |
} |
|
265 |
||
266 |
private List<IConnection> getCompatibleConnections() { |
|
267 |
Set<IConnectionType> types = getCompatibleConnectionTypes(); |
|
268 |
||
269 |
List<IConnection> compatibleConnections = new ArrayList<IConnection>(); |
|
270 |
for (IConnection connection : manager.getConnections()) { |
|
271 |
if (types.contains(connection.getConnectionType())) |
|
272 |
compatibleConnections.add(connection); |
|
273 |
} |
|
274 |
return compatibleConnections; |
|
275 |
} |
|
276 |
||
277 |
private void setViewerInput(IConnection connection) { |
|
278 |
List<IConnection> connections = getCompatibleConnections(); |
|
279 |
viewer.setInput(connections); |
|
280 |
||
281 |
if (connections.isEmpty()) |
|
282 |
viewer.getCombo().setEnabled(false); |
|
283 |
else { |
|
284 |
viewer.getCombo().setEnabled(true); |
|
285 |
if (connection == null) { |
|
286 |
viewer.getCombo().select(0); |
|
287 |
ISelection selection = viewer.getSelection(); |
|
288 |
connection = getConnectionFromSelection(selection); |
|
289 |
viewer.setSelection(selection); |
|
290 |
} |
|
291 |
else |
|
292 |
viewer.setSelection(new StructuredSelection(connection)); |
|
293 |
} |
|
294 |
editButton.setEnabled(!viewer.getSelection().isEmpty()); |
|
295 |
||
296 |
// fire listener in case we selected anew or the current connection changed |
|
297 |
connectionSelected(connection); |
|
298 |
} |
|
299 |
||
300 |
private IConnection getConnectionFromSelection(ISelection selection) { |
|
301 |
return (IConnection) ((IStructuredSelection) selection).getFirstElement(); |
|
302 |
} |
|
303 |
||
304 |
private void refreshUI() { |
|
305 |
Display.getDefault().syncExec(new Runnable() { |
|
306 |
public void run() { |
|
307 |
if (viewer != null && viewer.getContentProvider() != null) { |
|
308 |
setViewerInput(getConnectionFromSelection(viewer.getSelection())); |
|
309 |
} |
|
310 |
} |
|
311 |
}); |
|
312 |
} |
|
313 |
||
314 |
@Override |
|
315 |
public boolean close() { |
|
316 |
manager.addConnectionListener(this); |
|
317 |
return super.close(); |
|
318 |
} |
|
319 |
} |
|
320 |