@Override public IStatus runInUIThread(IProgressMonitor monitor) { Control control = (Control) site.getModel().getWidget(); if (control == null || control.isDisposed()) { return Status.CANCEL_STATUS; } synchronized (lock) { //Update cursors if we are doing that Cursor cursor = null; if (waitCursorJobCount !=0) { // at least one job which is running has requested for wait cursor cursor = control.getDisplay().getSystemCursor(SWT.CURSOR_APPSTARTING); } control.setCursor(cursor); showBusy(busy); IWorkbenchPart part = site.getPart(); if (part instanceof WorkbenchPart) { ((WorkbenchPart) part).showBusy(busy); } } return Status.OK_STATUS; }