1

私はSWTでの視点のレイアウトに取り組んでいます。簡単にするために、エディターはなく、1つ以上のビューがあります。他のビューアを開かずに、デフォルトでビューア領域全体を取得するデフォルトのビューがあります(最大化できますが、最大化する必要はありません)。ユーザー入力によって開くことができる、または開かない可能性のある他のビューが少数(2〜3)あります。それらを開くと、デフォルトのビューは画面領域の最大75%を占め、他のビューは最大25%を占めるようにスタックされます。

アンカーと呼ばれる、常に非表示に設定されているビューがあります。デフォルトは、左のこのアンカーに関連しています。他のビューは、スタックとしてこのアンカーに関連しています。

これはうまくいくようです、スペースを期待してください。デフォルトでは、画面の25%を空にすることも、セカンダリビューに実質的にスペースを割り当てることもできません。

私の質問:

  1. 「アンカー」を使用するのは良いパターンですか、それとももっと良いものがありますか?
  2. 1つのビューを開いているビューと複数のビューの間でこの条件付き切り替えを行うにはどうすればよいですか?

ありがとう!

M

4

2 に答える 2

1

私があなたの質問を受け取ったかどうかはよくわかりませんが、これは私が通常使用するものです:

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%を占めています。

たぶん、これを出発点として使用できます。

于 2012-09-10T18:07:24.957 に答える
-1

これはSWTまたはRCPプラグインですか...ビューとパースペクティブを使用している場合は、RCPプラグインです。RCPでは、編集者用に予約されたデフォルトのスペースが常にあります( "org.eclipse.ui.editorss")。あなたができる最善のことはそれを最小化することです..しかしそれは常にそこにあります

于 2012-09-10T16:03:32.527 に答える