package net.enilink.komma.edit.ui.provider; import org.eclipse.jface.viewers.IBaseLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.swt.graphics.Image; public abstract class UnwrappingLabelProvider implements ILabelProvider, ITableLabelProvider { private IBaseLabelProvider delegate; public UnwrappingLabelProvider(IBaseLabelProvider delegate) { this.delegate = delegate; } @Override public void addListener(ILabelProviderListener listener) { delegate.addListener(listener); } @Override public void dispose() { delegate.dispose(); } @Override public Image getColumnImage(Object element, int columnIndex) { if (delegate instanceof ITableLabelProvider) { return ((ITableLabelProvider) delegate).getColumnImage( unwrap(element), columnIndex); } return getImage(element); } @Override public String getColumnText(Object element, int columnIndex) { if (delegate instanceof ITableLabelProvider) { return ((ITableLabelProvider) delegate).getColumnText( unwrap(element), columnIndex); } return getText(element); } @Override public Image getImage(Object element) { if (delegate instanceof ILabelProvider) { return ((ILabelProvider) delegate).getImage(unwrap(element)); } return null; } @Override public String getText(Object element) { if (delegate instanceof ILabelProvider) { return ((ILabelProvider) delegate).getText(unwrap(element)); } return null; } @Override public boolean isLabelProperty(Object element, String property) { return delegate.isLabelProperty(unwrap(element), property); } @Override public void removeListener(ILabelProviderListener listener) { delegate.removeListener(listener); } protected abstract Object unwrap(Object element); }