package com.redhat.ceylon.eclipse.code.outline;
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.StyledCellLabelProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.TreeNode;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.graphics.Image;
public class TreeNodeLabelProvider
extends StyledCellLabelProvider
implements DelegatingStyledCellLabelProvider.IStyledLabelProvider,
ILabelProvider {
private CeylonLabelProvider ceylonLabelProvider;
public TreeNodeLabelProvider(CeylonLabelProvider ceylonLabelProvider) {
this.ceylonLabelProvider = ceylonLabelProvider;
}
public TreeNodeLabelProvider() {
this(new CeylonLabelProvider());
}
protected Object unwrap(Object element) {
return ((TreeNode) element).getValue();
}
@Override
public String getText(Object element) {
return ceylonLabelProvider.getText(unwrap(element));
}
@Override
public StyledString getStyledText(Object element) {
return ceylonLabelProvider.getStyledText(unwrap(element));
}
@Override
public Image getImage(Object element) {
return ceylonLabelProvider.getImage(unwrap(element));
}
@Override
public void addListener(ILabelProviderListener listener) {
ceylonLabelProvider.addListener(listener);
}
@Override
public void removeListener(ILabelProviderListener listener) {
ceylonLabelProvider.removeListener(listener);
}
@Override
public boolean isLabelProperty(Object element, String property) {
return false;
}
@Override
public void update(ViewerCell cell) {
Object element = cell.getElement();
StyledString styledText = getStyledText(element);
cell.setText(styledText.toString());
cell.setStyleRanges(styledText.getStyleRanges());
cell.setImage(getImage(element));
super.update(cell);
}
}