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
/**
	 * This readableSet returns the same elements as the input readableSet.
	 * However, it only fires events AFTER the elements have been added or
	 * removed from the viewer.
	 */
	private KnownElementsSet knownElements;
	private ISetChangeListener listener = new ISetChangeListener() {
		public void handleSetChange(SetChangeEvent event) {
			boolean wasStale = knownElements.isStale();
			if (isDisposed()) {
				return;
			}
			doDiff(event.diff.getAdditions(), event.diff.getRemovals(), true);
			if (!wasStale && event.getObservableSet().isStale()) {
				knownElements.doFireStale(true);
			}
		}
	};
	private IStaleListener staleListener = new IStaleListener() {
		public void handleStale(StaleEvent event) {
			knownElements.doFireStale(event.getObservable().isStale());
		}
	};
	/**
	 * 
	 */
	public ObservableSetContentProvider() {
		readableSet = new ObservableSet(SWTObservables.getRealm(Display.getDefault()),
				Collections.EMPTY_SET, Object.class) {
		};