Copy the fix for JFace bug 488484 to RAP

Bug 488484 - [GTK3] "Ignored reentrant call while viewer is busy"
warning and stacktrace

In case SWT event is sent during doUpdateItem() we should run async
update to avoid RuntimeException from ColumnViewer.checkBusy().

Change-Id: I08ea3bc8d610070b2572e7ab884391693db2875a
diff --git a/bundles/org.eclipse.rap.jface/src/org/eclipse/jface/viewers/AbstractTableViewer.java b/bundles/org.eclipse.rap.jface/src/org/eclipse/jface/viewers/AbstractTableViewer.java
index 02e8a7b..80914ce 100755
--- a/bundles/org.eclipse.rap.jface/src/org/eclipse/jface/viewers/AbstractTableViewer.java
+++ b/bundles/org.eclipse.rap.jface/src/org/eclipse/jface/viewers/AbstractTableViewer.java
@@ -82,8 +82,15 @@
 						IContentProvider contentProvider = getContentProvider();
 						// If we are building lazily then request lookup now
 						if (contentProvider instanceof ILazyContentProvider) {
-							((ILazyContentProvider) contentProvider)
-									.updateElement(index);
+							ILazyContentProvider lazyProvider = (ILazyContentProvider) contentProvider;
+							if (!isBusy()) {
+								lazyProvider.updateElement(index);
+							} else {
+								// In case event is sent during doUpdateItem() we
+								// should run async update to avoid RuntimeException
+								// from ColumnViewer.checkBusy(), see bug 488484
+								getControl().getDisplay().asyncExec(() -> lazyProvider.updateElement(index));
+							}
 							return;
 						}
 					}