Bug 183034 [DataBinding] Content providers should support AbstractTableViewer
Observable(List|Set)ContentProvider should check for AbstractTableViewer instead of TableViewer, so that it may be used with non-standard Table widgets.
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/viewers/ObservableSetContentProvider.java
/**
	 * Returns the readableSet of elements known to this content provider. Items
	 * are added to this readableSet before being added to the viewer, and they
	 * are removed after being removed from the viewer. The readableSet is
	 * always updated after the viewer. This is intended for use by label
	 * providers, as it will always return the items that need labels.
	 * 
	 * @return readableSet of items that will need labels
	 */
	public IObservableSet getKnownElements() {
		return knownElements;
	}
	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
		this.viewer = viewer;
		if (!(viewer instanceof TableViewer || viewer instanceof AbstractListViewer)) {
			throw new IllegalArgumentException(
					"This content provider only works with TableViewer or AbstractListViewer"); 
		}
		if (newInput != null && !(newInput instanceof IObservableSet)) {
			throw new IllegalArgumentException(
					"This content provider only works with input of type IReadableSet"); 
		}
		setInput((IObservableSet) newInput);
	}
	private boolean isDisposed() {
		return viewer.getControl() == null || viewer.getControl().isDisposed();
	}
	private void setInput(IObservableSet newSet) {
		boolean updateViewer = true;
		if (newSet == null) {