在EclipseRCP4中禁用最大化/最小化修剪空间
在Eclipse3和Eclipse4中,在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
EditorSashContainer
在有一个EditorStack
时看起来是这样的:
在Eclipse4中,当存在多个编辑器堆栈时,它会添加额外的修剪(我已将其涂成红色),而在Eclipse3中没有这样做:
我知道现在我们在E4中,没有Editor
、EditorStack
和EditorSashContainer
,只有Part
、PartStack
和PartSashContainer
。但是,这个“根”PartSashContainer
和“常规”PartSashContainer
之间有一些不同,因为只有这个“根”具有最大化/最小化按钮和额外的修剪:
我的问题是:
- “Root”和“Regular”
PartSashContainer
之间有什么不同(可能其中一个不是PartSashContainer
)
- 如何禁用此行为
我的自定义RCP应用程序只有一个“根”PartSashContainer
,这一额外的修剪来来去去去都令人不安。我在application.css
,甚至到了forkingorg.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);
}
}
}