Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在EclipseRCP4中禁用最大化/最小化修剪空间_Eclipse_Eclipse Rcp_Eclipse Plugin_E4 - Fatal编程技术网

在EclipseRCP4中禁用最大化/最小化修剪空间

在EclipseRCP4中禁用最大化/最小化修剪空间,eclipse,eclipse-rcp,eclipse-plugin,e4,Eclipse,Eclipse Rcp,Eclipse Plugin,E4,在Eclipse3和Eclipse4中,EditorSashContainer在有一个EditorStack时看起来是这样的: 在Eclipse4中,当存在多个编辑器堆栈时,它会添加额外的修剪(我已将其涂成红色),而在Eclipse3中没有这样做: 我知道现在我们在E4中,没有Editor、EditorStack和EditorSashContainer,只有Part、PartStack和PartSashContainer。但是,这个“根”PartSashContainer和“常规”PartS

在Eclipse3和Eclipse4中,
EditorSashContainer
在有一个
EditorStack
时看起来是这样的:

在Eclipse4中,当存在多个
编辑器堆栈时,它会添加额外的修剪(我已将其涂成红色),而在Eclipse3中没有这样做:

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

我的问题是:

  • “Root”和“Regular”
    PartSashContainer
    之间有什么不同(可能其中一个不是
    PartSashContainer
  • 如何禁用此行为

我的自定义RCP应用程序只有一个“根”
PartSashContainer
,这一额外的修剪来来去去去都令人不安。我在
application.css
,甚至到了forking
org.eclipse.e4.ui.workbench.addons.swt
,但我被卡住了。

嗯,这并不漂亮,但我找到了一种方法。感谢greg-449提供了关键的
MArea
提示

您可以通过在产品扩展中添加如下代码片段来设置
renderFactoryURI

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

当然,现在“最小化/最大化”按钮会呈现出奇怪的效果,但我还是禁用了它们,所以修复该部分是您的问题;-)

我认为这不是PartSashContainer,因为它只在分割编辑器区域时出现。这可能是分裂增加了一些额外的东西。这是我的第一个猜测,但看看代码,我找不到嫌疑犯。我相信这是MinMaxAddon添加的一个额外的MArea,但是代码非常难读,甚至更难修改。如果安装了EclipseSDK,则可以在Eclipse中读取Eclipse源代码。
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);
        }
    }
}