7

有没有IDecorationContext用于标签装饰的例子?

从外观上看,IDecorationContext类似乎提供了某种上下文装饰支持,但对于我的生活,我找不到任何使用此功能的示例代码......

是否有人实际使用过装饰上下文功能,如果有,它解决了哪些用例?


PS:我正在寻找一种将图像装饰应用于对象标签的方法,并且根据对象的显示位置,基本图标大小会有所不同(例如,表格和树项目中的传统“小”图标以及内容标题的较大图标)。

应用于原始图标的装饰应选择适当大小的装饰。

IDecorationContext似乎符合我需要它的要求,但是文档与开源库的一个次要功能所期望的一样稀疏,并且没有找到示例。

谷歌搜索“IDEcorationContext”也没有发现任何有趣的东西,所以我求助于 StackOverflow 人群智慧,希望下一个得到问题的人能够更快地得到他们的答案;)

4

1 回答 1

7

我没有使用 IDecorationContext,但你可以看到它在org.eclipse.jface.viewers.LabelDecorator.

这个线程中也有讨论(即使没有答案,那至少可以给你一个起点)

我目前的方法是使用 ILightweightLabelDecorator 扩展 org.eclipse.ui.decorators 以将替换覆盖添加到相应的图标:

public class ProjectLabelDecorator extends LabelProvider 
   implements ILightweightLabelDecorator {

   ...

   public void decorate(Object element, IDecoration decoration) {
      if (element instanceof IFolder) {
         IFolder folder = (IFolder) element;
     try {
            if (folder.getProject().hasNature("rttdt.nature")) {
                if (ProjectNature.isTestcase(folder)) {
                   IDecorationContext context = 
                      decoration.getDecorationContext();
                   if (context instanceof DecorationContext) {
                      ((DecorationContext) context).putProperty(
                         IDecoration.ENABLE_REPLACE, Boolean.TRUE);
                   }
                   decoration.addOverlay(fTestcaseOverlay,
                      IDecoration.REPLACE);
                }
         } catch (CoreException e) {
         }
      }
   }

   ...
}
于 2010-01-08T13:55:59.060 回答