我正在使用org.eclipse.ui.editors
扩展点创建RCP 3.7编辑器。我需要的是在编辑器启动期间根据某些条件动态定义图标路径。
(编辑:编辑器实际上刚刚启动后恢复,但它还没有被选为活动状态,所以你只能看到带有标题和图标的标签)
我尝试在实现getImageDescriptor()
的类中使用IEditorInput
方法,但似乎没有使用它。对图标产生一些影响的唯一方法是更改编辑器扩展名定义中的图标路径。
因此,我开始使用org.eclipse.core.variables.valueVariables
和org.eclipse.core.variables.dynamicVariables
来使用icon属性(仅显示valueVariables):
<extension point="org.eclipse.ui.editors">
<editor name="%Editor_TITLE"
extensions="xml"
icon="${FOO}"
class="org.example.ExampleEditor"
id="org.example.ExampleEditor">
</editor>
</extension>
<extension point="org.eclipse.core.variables.valueVariables">
<variable name="FOO"
initialValue="images/obj16/editor.png">
</variable>
</extension>
然而,这也不起作用。有没有办法使用动态定义的变量值(基于当前条件)可以改变图标的路径? ...或者即使是一个解决方案的建议,我也会非常满意,这会导致在启动期间成功更改图标(比如使ImageDescriptor无法启动)。
答案 0 :(得分:1)
变量仅适用于代码中明确支持的位置。如果扩展点的文档没有说它们是受支持的,那么它们就不会起作用。
您可以使用编辑器输入中的图像描述符通过在编辑器的init
方法中执行以下操作来设置编辑者标题图像:
public void init(IEditorSite site, IEditorInput input)
throws PartInitException
{
... other code
ImageDescriptor desc = input.getImageDescriptor();
Image image = desc.createImage();
setTitleImage(image);
... other code
}