connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/internal/ui/DeviceStatusSelectorContribution.java
changeset 709 c92b05bdc957
parent 706 bba29393db80
equal deleted inserted replaced
708:ff775c1d2316 709:c92b05bdc957
    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();
   134 					openConnectionsView();
   133 					openConnectionsView();
   135 				}
   134 				}
   136 			}
   135 			}
   137 		});
   136 		});
   138 		
   137 		
   139 		// TODO PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, null);
   138 		RemoteConnectionsActivator.setHelp(container, "DeviceStatusSelector");
   140 		return container;
   139 		return container;
   141 	}
   140 	}
   142 
   141 
   143 	/**
   142 	/**
   144 	 * @param ev
   143 	 * @param ev
   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 	/**