Bug 126839 [DataBinding] IObservable refactoring
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/TableViewerUpdatableCollection.java
AsyncRunnable runnable = new AsyncRunnable(){
			public void run(){
				if (elements.get(index).equals(element)) {
					viewer.update(element, null);
				} else {
					internalRemoveElement(index);
					internalAddElement(element, index);
				}				
			}
		};
		runnable.runOn(viewer.getControl().getDisplay());
	}
	public Object computeElement(final int index) {
		SyncRunnable runnable = new SyncRunnable(){
			public Object run(){
				return elements.get(index);
			}
		};
		return runnable.runOn(viewer.getControl().getDisplay());
	}
	public Object getSelectedObject() {
		SyncRunnable runnable = new SyncRunnable(){
			public Object run(){
				StructuredSelection selection = (StructuredSelection) viewer.getSelection();
				if (selection.isEmpty()) {
					return null;
				}
				return selection.getFirstElement();
			}
		};