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

时间:2016-06-08 10:50:02

标签: java eclipse-rcp

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

(编辑:编辑器实际上刚刚启动后恢复,但它还没有被选为活动状态,所以你只能看到带有标题和图标的标签)

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

因此,我开始使用org.eclipse.core.variables.valueVariablesorg.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无法启动)。

1 个答案:

答案 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
}