[英]Set fixed part size in Eclipse E4
Eclipse bug 361731是对此功能的请求。 目前尚未实施。
可能可以使用自定义渲染器,但这是一项艰巨的工作。
我不确定在Neon之前是否可以使用此功能,但是Eclipse Neon允许您将“ NoMove”作为标签添加到要锁定且不调整大小的Part Sash Container
框格Part Sash Container
中。
我有一个非常相似的任务,几次偶然发现了您的问题。 我需要按照带有固定大小的应用程序标头和固定大小的页脚的企业设计来实现RCP应用程序。 我没有找到完美的方法,但是有关自定义渲染器的Vogella教程给了我一些提示。 我仍然必须重复一些代码,但找不到聪明的方法。
我的要求:
所以我所做的是:
public class MainWorkbenchRendererFactory extends WorkbenchRendererFactory {
private final static String MAIN_SASH_ID = "myapp.partsashcontainer.main";
@Override
public AbstractPartRenderer getRenderer(MUIElement uiElement, Object parent) {
if (uiElement instanceof MPartSashContainer
&& MAIN_SASH_ID.equalsIgnoreCase(((MPartSashContainer)uiElement).getElementId())) {
MainSashRenderer renderer = new MainSashRenderer();
super.initRenderer(renderer);
return renderer;
}
return super.getRenderer(uiElement, parent);
}
}
在“ MainSashRenderer”类中,将引用从“ SashLayout”更改为“ MainSashLayout”。
在“ MainSashLayout”类中,方法tileSubNodes:
// subsctract size for header and footer:
availableSpace -= (this.footerHeightPx + this.headerHeightPx);
// Subtract off the room for the sashes
availableSpace -= ((childCount - 1) * sashWidth);
if (availableSpace < 0)
availableSpace = 0;
for (MUIElement subNode : visibleChildren) {
if (childNum == 0) {
newSize = this.headerHeightPx;
} else if (childNum == visibleChildren.size()-1) {
newSize = this.footerHeightPx;
} else {
// Calc the new size as a %'age of the total
double ratio = getWeight(subNode) / totalWeight;
newSize = (int) ((availableSpace * ratio) + 0.5);
}
...
窗口大小不同的结果(页眉和页脚保持像素高度): 窗口大小不同的屏幕截图
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.