Bug 167323 [Viewers]Open AbstractTreeViewer for external widget implementors
As reported by Ross Camara AbstractTreeViewer would work for nebula if we would open the API a bit. Boris and I decided that we will do this in 2 steps: 1. open the API 2. moving the Virtual-Support bits from TreeViewer to AbstractTreeViewer when the nebula grid provides virtual support.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
final Item[] tis = getChildren(widget);
		if (tis != null && tis.length > 0) {
			Object data = tis[0].getData();
			if (data != null) {
				return; 
			}
		}
		BusyIndicator.showWhile(widget.getDisplay(), new Runnable() {
			public void run() {
				
				
				if (tis != null) {
					for (int i = 0; i < tis.length; i++) {
						if (tis[i].getData() != null) {
							disassociate(tis[i]);
							Assert.isTrue(tis[i].getData() == null,
									"Second or later child is non -null");
						}
						tis[i].dispose();
					}
				}
				Object d = widget.getData();
				if (d != null) {
					Object parentElement = d;
					Object[] children;
					if (isTreePathContentProvider() && widget instanceof Item) {
						TreePath path = getTreePathFromItem((Item) widget);
						children = getSortedChildren(path);
					} else {
						children = getSortedChildren(parentElement);