Listener for user presence changes.
Note these methods will be called asynchronously when notifications of remote changes are received by the provider implementation code. The provider is free to call the methods below with an arbitrary thread, so the implementation of these methods must be appropriately prepared.
For example, if the code implementing any of these methods must interact with user interface code, then it should use code such as the following to execute on the SWT UI thread:
Display.getDefault().asyncExec(new Runnable() { public void run() { ... UI code here } });
Further, the code in the implementations of these methods should
not block via I/O operations or blocking UI calls.