向不同部分添加自定义渲染器

Adding a custom renderer to different parts

我希望某些部分使用不同的渲染器。在某些情况下,我想在右键单击时删除 Detach 选项,这是根据对我的问题 .

的评论的解决方案

我一直在关注 this 教程,了解如何完成此操作。

我创建了两个 类。 UndetachableStackRendererUndetachableStackRendererFactory

如果我将 UndetachableStackRendererFactory 添加到 plugin.xml,它会成功删除从 ALL 零件堆栈分离的选项。

<property
    name="rendererFactoryUri"
    value="bundleclass://com.example.loc/com.example.loc.UndetachableStackRendererFactory">
</property>

相反,我想更改一个零件堆栈的渲染器。根据教程,我可以将 CUSTOM_RENDERER_URI 添加到零件堆栈的 Persisted State 中。

密钥:

CUSTOM_RENDERER_URI

值:

bundleclass://com.example.loc/com.example.loc.UndetachableStackRenderer

我已经试过了,但没有任何作用。如果我输入了一个不正确的位置,它也不会出现任何错误,所以看起来好像 CUSTOM_RENDERER_URI 没有被看到。

这可能是什么原因造成的?

该教程似乎有误,至少对于当前的 Eclipse 版本而言是这样。

键值在 IPresentationEngine.CUSTOM_RENDERER_KEY 中定义,值为 Custom Renderer

String CUSTOM_RENDERER_KEY = "Custom Renderer";

org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine

getRenderer方法中使用