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
newSet = new ObservableSet(SWTObservables.getRealm(Display.getDefault()), Collections.EMPTY_SET, Object.class) {
			};
			
			updateViewer = false;
		}
		boolean wasStale = false;
		if (readableSet != null) {
			wasStale = readableSet.isStale();
			readableSet.removeSetChangeListener(listener);
			readableSet.removeStaleListener(staleListener);
		}
		HashSet additions = new HashSet();
		HashSet removals = new HashSet();
		additions.addAll(newSet);
		additions.removeAll(readableSet);
		removals.addAll(readableSet);
		removals.removeAll(newSet);
		readableSet = newSet;
		doDiff(additions, removals, updateViewer);
		if (readableSet != null) {
			readableSet.addSetChangeListener(listener);
			readableSet.addStaleListener(staleListener);
		}
		boolean isStale = (readableSet != null && readableSet.isStale());
		if (isStale != wasStale) {
			knownElements.doFireStale(isStale);
		}
	}
}