Bug 126839 [DataBinding] IObservable refactoring
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/viewers/StructuredViewerUpdatableValue.java
fireChangeEvent(ChangeEvent.CHANGE, oldValue, computeValue());
					}
				} finally {
					updating = false;
				}
			}
		};
		runnable.runOn(viewer.getControl().getDisplay());
	}
	public Object computeValue() {
		SyncRunnable runnable = new SyncRunnable(){
			public Object run(){
				if (attribute.equals(ViewersProperties.SINGLE_SELECTION)) {
					ISelection selection = viewer.getSelection();
					if (selection instanceof IStructuredSelection) {
						IStructuredSelection sel = (IStructuredSelection) selection;
						return sel.getFirstElement();
					}
				}
				return null;				
			}
		};
		return runnable.runOn(viewer.getControl().getDisplay());
	}
	public Class getValueType() {
		Assert.isTrue(attribute.equals(ViewersProperties.SINGLE_SELECTION), "unexpected attribute: " + attribute); 
		return Object.class;
	}
}