我正在努力设计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%,依此类推。

也许您可以以此为起点。

09-28 03:39