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/TreeViewer.java
return getTree();
		return getTree().getColumn(columnIndex);
	}
	/**
	 * Override to handle tree paths.
	 * 
	 * @see org.eclipse.jface.viewers.StructuredViewer#buildLabel(org.eclipse.jface.viewers.ViewerLabel,
	 *      java.lang.Object)
	 */
	protected void buildLabel(ViewerLabel updateLabel, Object elementOrPath) {
		Object element;
		if (elementOrPath instanceof TreePath) {
			TreePath path = (TreePath) elementOrPath;
			IBaseLabelProvider provider = getLabelProvider();
			if (provider instanceof ITreePathLabelProvider) {
				ITreePathLabelProvider pprov = (ITreePathLabelProvider) provider;
				buildLabel(updateLabel, path, pprov);
				return;
			}
			element = path.getLastSegment();
		} else {
			element = elementOrPath;
		}
		super.buildLabel(updateLabel, element);
	}
	/*
	 * (non-Javadoc) Method declared in AbstractTreeViewer.
	 */
	protected Item[] getChildren(Widget o) {
		if (o instanceof TreeItem) {