【问题标题】:Disabling the Maximize/Minimize trim space in Eclipse RCP 4在 Eclipse RCP 4 中禁用最大化/最小化修剪空间
【发布时间】:2014-09-23 15:20:53
【问题描述】:

在 Eclipse 3 和 Eclipse 4 中,当 EditorSashContainer 有一个 EditorStack 时,它看起来像这样:

在 Eclipse 4 中,当有多个 EditorStacks 时,它会添加额外的修剪(我将其涂成红色),而在 Eclipse 3 中没有这样做:

我知道现在我们在 E4 中,没有 EditorEditorStackEditorSashContainer 这样的东西,只有 PartPartStackPartSashContainer。但是这个“根”PartSashContainer 和“常规”PartSashContainer 之间有一些不同,因为只有这个“根”有最大化/最小化按钮和额外的修剪:

我的问题是这样的:

  • “Root”和“Regular”PartSashContainer 有什么不同(可能不是PartSashContainer?)
  • 如何禁用此行为?

我的自定义 RCP 应用程序只有一个“根”PartSashContainer,这种额外的修剪来来去去令人不安。我已经和application.css 搞混了,甚至还分叉了org.eclipse.e4.ui.workbench.addons.swt,但我被卡住了。

【问题讨论】:

  • 我不认为那是 PartSashContainer 因为它仅在您拆分编辑器区域时出现。这可能是拆分添加的额外内容。
  • 这是我的第一个猜测,但查看代码,我找不到嫌疑人。 github.com/eclipse/eclipse.platform.ui/tree/master/bundles/…
  • 我相信这是 MinMaxAddon 添加的一个额外的 MArea,但代码非常难以阅读,更难以更改。如果您安装了 Eclipse SDK,您可以在 Eclipse 中阅读 Eclipse 源代码。

标签: eclipse eclipse-rcp eclipse-plugin e4


【解决方案1】:

Welp,它不是很漂亮,但我找到了一种方法。感谢 greg-449 提供了重要的 MArea 提示。

您可以通过在产品扩展中添加这样的 sn-p 来设置 rendererFactoryUri

<property
    name="rendererFactoryUri"
    value="bundleclass://com.myplugin/package.to.MyWorkbenchRendererFactory">
</property>

如果不设置,Eclipse 使用this by default.

如果您将MArea 的渲染器设置为常规MPartSashContainer 的渲染器,它就可以正常工作。

这是我的代码:

import org.eclipse.e4.ui.internal.workbench.swt.AbstractPartRenderer;
import org.eclipse.e4.ui.model.application.ui.MUIElement;
import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
import org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer;
import org.eclipse.e4.ui.workbench.renderers.swt.WorkbenchRendererFactory;

public class MyWorkbenchRendererFactory extends WorkbenchRendererFactory {
    private SashRenderer areaRenderer;

    @Override
    public AbstractPartRenderer getRenderer(MUIElement uiElement, Object parent) {
        if (uiElement instanceof MArea) {
            if (areaRenderer == null) {
                areaRenderer = new SashRenderer();
                initRenderer(areaRenderer);
            }
            return areaRenderer;
        } else {
            return super.getRenderer(uiElement, parent);
        }
    }
}

当然,现在“最小化/最大化”按钮会被奇怪地渲染,但我还是禁用了它们,所以修复这部分是你的问题;-)。

【讨论】:

    猜你喜欢
    • 2012-12-08
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多