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/NavigatorDecoratingLabelProvider.java
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider;
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.ViewerColumn;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchPreferenceConstants;
import org.eclipse.ui.PlatformUI;
/**
 * Decorating label provider with styled label support for the navigator.
 * <p>
 * If the wrapped label provider is a {@link DelegatingStyledCellLabelProvider.IStyledLabelProvider} it will use
 * the styled label it provides.
 * </p>
 * <p>The label provider listens to the built-in decoration colors ({@link JFacePreferences#QUALIFIER_COLOR}, 
 * {@link JFacePreferences#COUNTER_COLOR} and {@link JFacePreferences#DECORATIONS_COLOR}. If other
 * colors are used, it is the responsibility of the wrapped label provider to fire the refresh.
 * </p>
 */
public class NavigatorDecoratingLabelProvider extends DecoratingStyledCellLabelProvider implements IPropertyChangeListener, ILabelProvider {