更改Label Docorator的字体样式

时间:2016-09-26 10:53:03

标签: java eclipse eclipse-plugin

我正在尝试为某些文件名附加后缀。我创建了一个标签装饰器,如下所示,它正常工作。但我也想让我的装饰大胆。我实现了 IFontDecorator 但它的decoratFont()没有被调用。任何人都可以指导我如何使我的装饰显得大胆。

public class ConfigFileDecorator extends LabelProvider implements ILightweightLabelDecorator, IFontDecorator {
    private Font boldFont;

    public void decorate(Object element, IDecoration decoration) {
        try {
            String platform = getPlatformName(element);
            if (platform == null) {
                return;
            }

            decoration.addSuffix(" [" + platform + "]");
        } 
        catch (Exception e) {
            Activator.log(e);
        }
    }

    @Override   
    public Font decorateFont(Object element) {
        try {
            String platform = getPlatformName(element);
            if (platform == null) {
                return null;
            }

            if (boldFont != null) {
                return boldFont;
            }

            Font defaultFont = JFaceResources.getDefaultFont();
            FontData[] fontData = defaultFont.getFontData();
            for (int i = 0; i < fontData.length; i++) {
                fontData[i].setStyle(SWT.BOLD);
            }               
            boldFont = new Font(PlatformUI.getWorkbench().getDisplay(), fontData);
            return boldFont;
        } 
        catch (Exception e) {
            Activator.log(e);
        }
        return null;
    }
}

1 个答案:

答案 0 :(得分:1)

ILightweightLabelDecorator不支持IFontDecorator

相反,您调用传递给setFont方法的IDecoration参数的decorate方法。