私は3.8-e4ハイブリッドに取り組んでいます(つまり、Lunaの依存関係がありますが、 しない Application.e4xmi、まだ)を使用します。したがって、基本的にコンパクトレイヤーを実行しています。
そうは言っても、これらの厄介なビューをエディターフォルダーにスタックするe4プログラムによる方法を見つけるのはいいことです。
エディター領域に汎用ビューフォルダーを配置して、実行時に開かれる各ビューがそこに開かれるようにします。
( この質問 から盗まれた写真)
パースペクティブ拡張機能を作成し、可能な拡張機能に各ビューを追加します。 関係スタック 以上 相対的なorg.Eclipse.ui.editorss。開くにはビューが多すぎて、プロジェクトが急速に拡大する場合、これは少し不便です。また、ワイルドカードビューIDがここでは機能しないことにも気付きました。
可能性のある各ビューをパースペクティブ拡張に追加する時間を見つけた場合、それは機能します。ただし、ここに追加されていないビューを開くと(つまり、別のフォルダーで開く)、その後開かれる各ビューは、エディター領域ではなく、前のフォルダーで開かれます(そうでない場合は、詳細な説明を問い合わせてください)それを得る)。
IPerspectiveFactory
では、IPageLayout
にアクセスできますが、これはたまたまorg.Eclipse.ui.internal.e4.compatibility.ModeledPageLayout
(e4スタッフ)。
さて、このModeledPageLayout
実装は合理的ですが、ドキュメントも奇妙なパブリックAPIもありません。これにより、他の相対的なビューの上にビューを積み重ねることができます。
modeledPageLayout.stackView("newView0", IPageLayout.ID_EDITOR_AREA);
これは、プログラムバージョンになります 2.1。また、同じ問題がここに表示されます。ビューが他の場所で開かれた場合、上記のコードは役に立たなくなります。
興味深いことに、stackView
APIはワイルドカードをサポートしていません(一方、addView
などはサポートしています)。
私には多くの視点があり、それぞれに多くの異なるフォルダーがあります。すべてが正確に配置されます。
Eclipseはシステムのあらゆる場所からすべてのビューIDを取得するAPIを提供しているため、パースペクティブごとに以下を実行したいと思います。 特定のフォルダーに追加されなかった各ビューIDは、エディター領域(つまり、エディターフォルダー、エディタースタック)に追加されます。
誰かがより便利で時間を節約するソリューションを提供しない限り、これは私の最後の手段です。
E4のプログラムによる代替の方がより柔軟であることを忘れないでください!
これらは、e4リリースでは非推奨になります。
自分が最近開いたこのバグ には小さなSSCCEが添付されています。これを再現する手順は このコメント で説明されているため、ここではコピーアンドペーストしません。
これを行うためのより速い方法はないと思うので、可能な修正番号3を使用することをお勧めします。