49 import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator; |
49 import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator; |
50 import com.nokia.carbide.remoteconnections.interfaces.IConnection; |
50 import com.nokia.carbide.remoteconnections.interfaces.IConnection; |
51 import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager; |
51 import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager; |
52 import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener; |
52 import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener; |
53 import com.nokia.carbide.remoteconnections.internal.api.IConnection2; |
53 import com.nokia.carbide.remoteconnections.internal.api.IConnection2; |
54 import com.nokia.carbide.remoteconnections.internal.api.IConnection2.IStatus; |
54 import com.nokia.carbide.remoteconnections.internal.api.IConnection2.IConnectionStatus; |
55 import com.nokia.carbide.remoteconnections.internal.api.IConnection2.IStatusChangedListener; |
55 import com.nokia.carbide.remoteconnections.internal.api.IConnection2.IConnectionStatusChangedListener; |
56 import com.nokia.carbide.remoteconnections.view.ConnectionsView; |
56 import com.nokia.carbide.remoteconnections.view.ConnectionsView; |
57 import com.nokia.cpp.internal.api.utils.core.TextUtils; |
57 import com.nokia.cpp.internal.api.utils.core.TextUtils; |
58 import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils; |
58 import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils; |
59 |
59 |
60 |
60 |
61 /** |
61 /** |
62 * This widget appears in the Eclipse trim and allows the user to select the |
62 * This widget appears in the Eclipse trim and allows the user to select the |
63 * "default" device connection and also see its status at a glance. |
63 * "default" device connection and also see its status at a glance. |
64 */ |
64 */ |
65 public class DeviceStatusSelectorContribution extends WorkbenchWindowControlContribution |
65 public class DeviceStatusSelectorContribution extends WorkbenchWindowControlContribution |
66 implements IConnectionListener, IStatusChangedListener { |
66 implements IConnectionListener, IConnectionStatusChangedListener { |
67 |
67 |
68 private Composite container; |
68 private Composite container; |
69 private CLabel deviceInfo; |
69 private CLabel deviceInfo; |
70 private IConnectionsManager manager; |
70 private IConnectionsManager manager; |
71 private Image deviceImage; |
|
72 private IConnection defaultConnection; |
71 private IConnection defaultConnection; |
73 |
72 |
74 public DeviceStatusSelectorContribution() { |
73 public DeviceStatusSelectorContribution() { |
75 manager = RemoteConnectionsActivator.getConnectionsManager(); |
74 manager = RemoteConnectionsActivator.getConnectionsManager(); |
76 } |
75 } |
102 } |
101 } |
103 } |
102 } |
104 |
103 |
105 deviceInfo.setText(text); |
104 deviceInfo.setText(text); |
106 |
105 |
107 updateDeviceStatus(getDeviceStatus(defaultConnection)); |
106 updateConnectionStatus(getConnectionStatus(defaultConnection)); |
108 |
107 |
109 deviceInfo.addMouseListener (new MouseAdapter() { |
108 deviceInfo.addMouseListener (new MouseAdapter() { |
110 public void mouseDown(MouseEvent event) { |
109 public void mouseDown(MouseEvent event) { |
111 Shell shell = deviceInfo.getShell(); |
110 Shell shell = deviceInfo.getShell(); |
112 final Display display = shell.getDisplay(); |
111 final Display display = shell.getDisplay(); |
156 * @param defaultConnection |
155 * @param defaultConnection |
157 * @param status |
156 * @param status |
158 * @return |
157 * @return |
159 */ |
158 */ |
160 private String createDeviceStatusTooltip(IConnection defaultConnection, |
159 private String createDeviceStatusTooltip(IConnection defaultConnection, |
161 IStatus status) { |
160 IConnectionStatus status) { |
162 if (defaultConnection == null) { |
161 if (defaultConnection == null) { |
163 return Messages.getString("DeviceStatusSelectorContribution.NoDynamicOrManualConnectionsTooltip"); //$NON-NLS-1$ |
162 return Messages.getString("DeviceStatusSelectorContribution.NoDynamicOrManualConnectionsTooltip"); //$NON-NLS-1$ |
164 } |
163 } |
165 |
164 |
166 String statusString = null; |
165 String statusString = null; |
173 |
172 |
174 return MessageFormat.format(Messages.getString("DeviceStatusSelectorContribution.DeviceStatusFormat"), defaultConnection.getDisplayName(), statusString); //$NON-NLS-1$ |
173 return MessageFormat.format(Messages.getString("DeviceStatusSelectorContribution.DeviceStatusFormat"), defaultConnection.getDisplayName(), statusString); //$NON-NLS-1$ |
175 } |
174 } |
176 |
175 |
177 /** |
176 /** |
178 * Get the image representing the device status. |
177 * Get the image representing the connection status. |
179 * @param connection |
178 * @param connection |
180 * @return Image, to be disposed |
179 * @return Image, to be disposed |
181 */ |
180 */ |
182 private IStatus getDeviceStatus(IConnection connection) { |
181 private IConnectionStatus getConnectionStatus(IConnection connection) { |
183 if (!(connection instanceof IConnection2)) { |
182 if (!(connection instanceof IConnection2)) { |
184 return null; |
183 return null; |
185 } else { |
184 } else { |
186 return ((IConnection2) connection).getStatus(); |
185 return ((IConnection2) connection).getStatus(); |
187 } |
186 } |
268 /* |
267 /* |
269 * (non-Javadoc) |
268 * (non-Javadoc) |
270 * @see org.eclipse.jface.action.ContributionItem#dispose() |
269 * @see org.eclipse.jface.action.ContributionItem#dispose() |
271 */ |
270 */ |
272 public void dispose() { |
271 public void dispose() { |
273 if (deviceImage != null) { |
|
274 deviceImage.dispose(); |
|
275 deviceImage = null; |
|
276 } |
|
277 if (defaultConnection instanceof IConnection2) |
272 if (defaultConnection instanceof IConnection2) |
278 ((IConnection2) defaultConnection).removeStatusChangedListener(this); |
273 ((IConnection2) defaultConnection).removeStatusChangedListener(this); |
279 |
274 |
280 manager.removeConnectionListener(this); |
275 manager.removeConnectionListener(this); |
281 super.dispose(); |
276 super.dispose(); |
296 } |
291 } |
297 /* (non-Javadoc) |
292 /* (non-Javadoc) |
298 * @see com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener#defaultConnectionSet(com.nokia.carbide.remoteconnections.interfaces.IConnection) |
293 * @see com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionListener#defaultConnectionSet(com.nokia.carbide.remoteconnections.interfaces.IConnection) |
299 */ |
294 */ |
300 public void defaultConnectionSet(IConnection connection) { |
295 public void defaultConnectionSet(IConnection connection) { |
|
296 defaultConnection = connection; |
301 updateUI(); |
297 updateUI(); |
302 } |
298 } |
303 |
299 |
304 /* (non-Javadoc) |
300 /* (non-Javadoc) |
305 * @see com.nokia.carbide.remoteconnections.internal.IConnection2.IStatusChangedListener#statusChanged(com.nokia.carbide.remoteconnections.internal.IConnection2.IStatus) |
301 * @see com.nokia.carbide.remoteconnections.internal.IConnection2.IStatusChangedListener#statusChanged(com.nokia.carbide.remoteconnections.internal.IConnection2.IStatus) |
306 */ |
302 */ |
307 public void statusChanged(IStatus status) { |
303 public void statusChanged(IConnectionStatus status) { |
308 updateDeviceStatus(status); |
304 updateConnectionStatus(status); |
309 } |
305 } |
310 |
306 |
311 /** |
307 /** |
312 * @param status |
308 * @param status |
313 */ |
309 */ |
314 private void updateDeviceStatus(IStatus status) { |
310 private void updateConnectionStatus(IConnectionStatus status) { |
315 if (deviceImage != null) |
311 Image deviceImage = ConnectionUIUtils.getConnectionStatusImage(status); |
316 deviceImage.dispose(); |
|
317 |
|
318 deviceImage = ConnectionUIUtils.getConnectionStatusImage(status); |
|
319 deviceInfo.setImage(deviceImage); |
312 deviceInfo.setImage(deviceImage); |
320 deviceInfo.setToolTipText(createDeviceStatusTooltip(defaultConnection, status)); |
313 deviceInfo.setToolTipText(createDeviceStatusTooltip(defaultConnection, status)); |
321 } |
314 } |
322 |
315 |
323 /** |
316 /** |