Eclipse e4 アプリケーションでビュー パーツのインスタンスを取得しようとしていますが、PlatformUI クラスが見つかりません。名前は Eclipse 3 から変更されましたか、それとも別のパッケージにありますか?
2 に答える
Eclipse e4 パーツを見ると:

371405のようなバグは参考になります:
org.eclipse.ui.presentations
この API は 4.2 では動作しなくなりました。動作させる予定はありません。
4.2 のプラグ可能なレンダリング ストーリーとは互換性がありません。以前はプレゼンテーション拡張機能によって決定できた決定は、現在ではレンダラーに委ねられています。廃止が必要な影響を受ける API:
- API パッケージ全体:
org.eclipse.ui.presentations- 拡張ポイント:
org.eclipse.ui.presentationFactories
org.eclipse.ui.IWorkbenchPreferenceConstants#PRESENTATION_FACTORY_ID
org.eclipse.ui.IWorkbenchWindowConfigurer#getPresentationFactory
org.eclipse.ui.IWorkbenchWindowConfigurer#setPresentationFactory
チュートリアルの残りの部分では、「パーツ」(エディターまたはビュー) を宣言する方法について説明します。
OP August Karlstromは次のように述べています。
これは以前は機能していました:
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("some view");
PlatformUI のようなシングルトンを使用することは悪い習慣であり、e4 でContextが導入された理由の 1 つです。Context に関するこのプレゼンテーションを参照してください。
Paul Webster (IBM Eclipse Platform チーム メンバー) のコメント:
Eclipse4 では、ID
org.eclipse.e4.ui.workbench.modeling.EPartService.findPart(String)で検索するために使用します。 のオブジェクト プロパティには、注入されたパーツが含まれています。MPartMPart
ページWorkbench_Servicesの詳細として:
e4 では、ワークベンチ ページの概念は存在しません。
一部のサービス APIは、基本的に既存の 3.xIPartServiceとWorkbenchPageインターフェイスのマージになります。
バグ 372488が示すように、これは理想的ではないことに注意してください(このスレッドに従ってください):
の
MPartはMPartDescriptorで作成されます。EPartService.createPart(descriptor_id)ここで、descriptor_id は の識別子ですMPartDescriptor。この部分は、1 つしかない場合は--
で再度見つけることができます。EPartService.findPart(descriptor_id)
MPart問題は、1 つに対して複数作成する必要がある場合があることですMPartDescriptor。
エディタはその一例です。同じ種類の異なるインスタンスを編集したい場合があります。
MPart特定のパーツに対して複数のパーツを作成するMPartDescriptorことは可能ですが、これらのパーツを見つけるための便利な方法はありません。複数ある場合でも、特定の に対して最初に作成されたもの
EPartService.findPart(descriptor_id)を返します。 そのため、特定の MPartDescriptor には次の 3 つの問題があります。MPartMPartDescriptor
EPartService.findPart(id)複数あることはわかりませんMPart。MPartsこの記述子のすべてを取得する便利な方法はありません。MPart指定された記述子と「コンテンツ」または「参照」の特定を取得する API の方法はありません。現在のところ、特定の に対応するものだけでなく、
EPartService.getParts()残念ながらすべての を返すを使用する方法があります。次に、特定の「コンテンツ」を持つ特定の ものがあるかどうかを確認する必要があります。MPartMPartDescriptorMPartMPartDescriptorそのため、特定の「コンテンツ」または「参照」
MPartを持つ与えられた for を見つける何かが欠けています。MPartDescriptor
同じ質問をするだけです。このスレッドを見つけて試した後:
MPart mPart = epartService.findPart("MyPart");
MyPart myPart = (MyPart)mPart.getObject();
それから私は自分のビュー部分を手に入れました。