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"/>
在扩展点中按文件扩展名过滤。
我正在调整我当前的 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"/>
在扩展点中按文件扩展名过滤。