Bug 243824 [CommonNavigator] lacks table / tree-table support
SafeDelegateCommonLabelProvider does not allow ITableLabelProvider instances to be used or delegated to. To attempt to use an ITableLabelProvider will have no direct result at all. Even customizing the top level label provider used in the common navigator, making that one an ITableLabelProvider, does nothing because NavigatorContentExtension wraps the instantiated user label provider in a SafeDelegateCommonLabelProvider, which implements many interfaces but not ITableLabelProvider. The solution is to apply this patch to SafeDelegateCommonLabelProvider. At that point, an adopter can customize his Common Viewer's top level label provider to pass things down appropriately. The patch needed is only to SafeDelegateCommonLabelProvider
bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceLabelProvider.java
* 
	 * @param aContentService
	 *            The associated NavigatorContentService that should be used to acquire information.
	 */
	public NavigatorContentServiceLabelProvider(NavigatorContentService aContentService) {
		contentService = aContentService; 
		isContentServiceSelfManaged = false;
	}
	/**
	 * <p>
	 * Return the appropriate image for anElement. The image will be used as the icon for anElement
	 * when displayed in the tree viewer. This method uses information from its contentService to
	 * know what extensions to use to supply the correct label.
	 * </p>
	 * {@inheritDoc}
	 * 
	 * @param anElement 
	 *            An element from the Tree Viewer 
	 * @return The Image that will be used as the icon when anElement is displayed in the viewer.
	 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
	 */
	public Image getImage(Object anElement) {
		Set contentExtensions = contentService.findContentExtensionsByTriggerPoint(anElement);
		Image image = null; 
		for (Iterator itr = contentExtensions.iterator(); itr.hasNext() && image == null; ) { 
			image = findImage((NavigatorContentExtension) itr.next(), anElement);
		}
		return image;  
	}
	/**