我正在努力设计SWT中的透视图。为了简单起见,它没有编辑器,只有一个或多个视图。有一个默认视图,默认情况下应占据整个查看器区域(可以最大化,但不必一定如此),而没有其他查看器打开。用户输入可能会打开也可能不会打开少量其他视图(2-3)。打开它们时,默认视图应占屏幕空间的〜75%,而其他视图则占屏幕空间的〜25%。
我有一个始终设置为不可见的视图,称为锚。默认设置与此锚相关。其他视图与此锚定堆栈相关。
这似乎工作正常,需要空间。默认情况下,我可以有25%的屏幕为空,或者我几乎没有空间分配给辅助视图。
我的问题:
使用“锚定”是一种好模式还是有更好的选择?
如何在一个视图和多个视图之间进行此条件切换?
谢谢!
中号
最佳答案
我不太确定是否收到您的问题,但这是我通常使用的方法:
public class PerspectiveExplore implements IPerspectiveFactory {
public static final String ID = "UF.PerspectiveExplore";
@Override
public void createInitialLayout(IPageLayout layout) {
String editorArea = layout.getEditorArea();
layout.setEditorAreaVisible(false);
IFolderLayout workflowSelection = layout.createFolder("Workflow Selection", IPageLayout.LEFT, 0.20f, editorArea);
workflowSelection.addPlaceholder(WorkflowSelection.ID + ":*");
workflowSelection.addView(WorkflowSelection.ID);
IFolderLayout filter = layout.createFolder("Filter", IPageLayout.BOTTOM, 0.5f, WorkflowSelection.ID);
filter.addPlaceholder(FilterView.ID + ":*");
filter.addView(FilterView.ID);
IFolderLayout resultSelection = layout.createFolder("Result Selection", IPageLayout.BOTTOM, 0.5f, editorArea);
resultSelection.addPlaceholder(ResultSelection.ID + ":*");
resultSelection.addView(ResultSelection.ID);
IFolderLayout canvas = layout.createFolder("Plot", IPageLayout.TOP, 0.6f, ResultSelection.ID);
canvas.addPlaceholder(Plot.ID + ":*");
canvas.addView(Plot.ID);
}
}
这将创建具有相对大小的布局,即,工作流选择在左侧,占透视宽度的20%。过滤器位于工作流程选择下方,占高度的50%,依此类推。
也许您可以以此为起点。