我可以使用 org.eclipse.core.variables... 来定义其他扩展的属性吗

Can I use org.eclipse.core.variables... in defining attributes of other extensions

我正在使用 org.eclipse.ui.editors 扩展点创建 RCP 3.7 编辑器。我需要的是在编辑器启动时根据一些条件动态定义图标路径。

(编辑:编辑器实际上只是在启动后恢复,但尚未被选中,因此您只能看到带有标题和图标的选项卡)

我尝试在 class 中使用 getImageDescriptor() 方法实现 IEditorInput,但似乎没有用到。对图标有一定影响的唯一方法是更改​​编辑器扩展定义中的图标路径。

因此我开始使用 org.eclipse.core.variables.valueVariablesorg.eclipse.core.variables.dynamicVariables 用于图标属性(显示 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 在不启动的情况下工作)。

变量只在代码明确支持的地方起作用。如果扩展点的文档没有说明它们受支持,那么它们将无法工作。

您可以使用编辑器输入中的图像描述符来设置编辑器标题图像,方法是在编辑器的 init 方法中执行类似以下操作:

public void init(IEditorSite site, IEditorInput input)
 throws PartInitException
{
  ... other code

  ImageDescriptor desc = input.getImageDescriptor();

  Image image = desc.createImage();

  setTitleImage(image);

  ... other code
}