Bug 166635 [Viewers] DelegatingCellLabelProvider breaks OwnerDrawLabelProvider
OwnerDrawLabelProviders are now being wrapped in DelegatingCellLabelProviders so the event handling code fails as we can no longer access the label provider CellLabelProvider provider = viewer .getViewerColumn(event.index).getLabelProvider(); Object element = event.item.getData(); if (provider instanceof OwnerDrawLabelProvider) ((OwnerDrawLabelProvider) provider).measure(event, element);
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerColumn.java
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.widgets.Widget;
/**
 * Instances of this class represent a column of a {@link ColumnViewer}. Label
 * providers and editing support can be configured for each column separately.
 * Concrete subclasses of {@link ColumnViewer} should implement a matching
 * concrete subclass of {@link ViewerColumn}.
 * 
 * <strong>EXPERIMENTAL</strong> This class or interface has been added as part
 * of a work in progress. This API may change at any given time. Please do not
 * use this API without consulting with the Platform/UI team.
 * 
 * @since 3.3
 * 
 */
public abstract class ViewerColumn {
	private CellLabelProvider labelProvider;
	static String COLUMN_VIEWER_KEY = Policy.JFACE + ".columnViewer";
	private EditingSupport editingSupport;
	private ILabelProviderListener listener;
	private boolean listenerRegistered = false;
	/**
	 * Create a new instance of the receiver at columnIndex.
	 * 
	 * @param viewer
	 *            the viewer the column is part of
	 * @param columnOwner
	 *            the widget owning the viewer in case the widget has no columns
	 *            this could be the widget itself