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)
で検索するために使用します。 のオブジェクト プロパティには、注入されたパーツが含まれています。MPart
MPart
ページ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 つの問題があります。MPart
MPartDescriptor
EPartService.findPart(id)
複数あることはわかりませんMPart
。MParts
この記述子のすべてを取得する便利な方法はありません。MPart
指定された記述子と「コンテンツ」または「参照」の特定を取得する API の方法はありません。現在のところ、特定の に対応するものだけでなく、
EPartService.getParts()
残念ながらすべての を返すを使用する方法があります。次に、特定の「コンテンツ」を持つ特定の ものがあるかどうかを確認する必要があります。MPart
MPartDescriptor
MPart
MPartDescriptor
そのため、特定の「コンテンツ」または「参照」
MPart
を持つ与えられた for を見つける何かが欠けています。MPartDescriptor
同じ質問をするだけです。このスレッドを見つけて試した後:
MPart mPart = epartService.findPart("MyPart");
MyPart myPart = (MyPart)mPart.getObject();
それから私は自分のビュー部分を手に入れました。