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
import org.eclipse.core.databinding.observable.set.SetChangeEvent;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jface.viewers.AbstractListViewer;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Display;
/**
 * @since 1.0
 * 
 */
public final class ObservableSetContentProvider implements
		IStructuredContentProvider {
	private class KnownElementsSet extends ObservableSet {
		KnownElementsSet(Set wrappedSet) {
			super(SWTObservables.getRealm(Display.getDefault()), wrappedSet, Object.class);
		}
		void doFireDiff(Set added, Set removed) {
			fireSetChange(Diffs.createSetDiff(added, removed));
		}
		void doFireStale(boolean isStale) {
			if (isStale) {
				fireStale();
			} else {
				fireChange();
			}
		}
	}
	private IObservableSet readableSet;
	private Viewer viewer;