eclipse插件装饰器的问题

issues with eclipse plugin decorator

我正在调整我当前的 eclipse 插件以获得一些小技巧,并为文件和文件夹制作了我自己的装饰器。当前文件装饰器如下所示:

<decorator
  lightweight="true"
  id="com.tdm.eclipse.plugin.decorators.readonly"
  label="readOnly file decorator"
  icon="icons/readonly.ico"
  state="true"
  location="TOP_LEFT"
  adaptable="true">
  <description>
    readOnly file decorator
  </description>
  <enablement>
     <and>
     <objectClass name="org.eclipse.core.resources.IFile"/>
     <objectState name ="readOnly" value="true"/> 
     </and>
  </enablement>
</decorator>

当前问题:

I.) 如果文件权限更改为可写文件装饰器不会更改,除非您再次重新加载项目(有时会出现文件不同步错误)。

II.) 我只想对特定文件使用装饰器(目前所有只读文件都经过装饰)。尝试使用 nameFilter 但在装饰器或 objectState/objectName 中不允许使用它。

有什么线索可以解决我的问题吗? 谢谢

您将不得不编写装饰器 class(指定 class 属性)而不是使用 icon 属性。

ILightweightLabelDecorator

public void decorate(Object element, IDecoration decoration)

方法将作为元素传递给 IFile,因此您可以对其进行过滤。

要处理文件只读属性更改,您必须使用 IResourceChangeListener 来侦听资源更改。

当您检测到属性更改时,您可以告诉装饰器管理器更新:

IDecoratorManager decoratorMgr = PlatformUI.getWorkbench().getDecoratorManager();

decoratorMgr.update("your decorator id");

您可以使用

<objectState name ="extension" value="file extension"/> 

在扩展点中按文件扩展名过滤。