4

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

4

2 に答える 2

11

Eclipse e4 パーツを見ると:

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 では、IDorg.eclipse.e4.ui.workbench.modeling.EPartService.findPart(String)で検索するために使用します。 のオブジェクト プロパティには、注入されたパーツが含まれています。MPart
MPart

ページWorkbench_Servicesの詳細として:

e4 では、ワークベンチ ページの概念は存在しません。
一部のサービス APIは、基本的に既存の 3.xIPartServiceWorkbenchPageインターフェイスのマージになります。


バグ 372488が示すように、これは理想的ではないことに注意してください(このスレッドに従ってください):

MPartMPartDescriptorで作成されます。EPartService.createPart(descriptor_id)ここで、descriptor_id は の識別子ですMPartDescriptorこの部分は、1 つしかない場合は--
で再度見つけることができます。EPartService.findPart(descriptor_id)

MPart問題は、1 つに対して複数作成する必要がある場合があることですMPartDescriptor
エディタはその一例です。同じ種類の異なるインスタンスを編集したい場合があります。

MPart特定のパーツに対して複数のパーツを作成するMPartDescriptorことは可能ですが、これらのパーツを見つけるための便利な方法はありません。複数ある場合でも、特定の に対して最初に作成されたもの
EPartService.findPart(descriptor_id)を返します。 そのため、特定の MPartDescriptor には次の 3 つの問題があります。MPartMPartDescriptor

  1. EPartService.findPart(id)複数あることはわかりませんMPart
  2. MPartsこの記述子のすべてを取得する便利な方法はありません。
  3. MPart指定された記述子と「コンテンツ」または「参照」の特定を取得する API の方法はありません。

現在のところ、特定の に対応するものだけでなく、 EPartService.getParts()残念ながらすべての を返すを使用する方法があります。次に、特定の「コンテンツ」を持つ特定の ものがあるかどうかを確認する必要があります。MPartMPartDescriptor
MPartMPartDescriptor

そのため、特定の「コンテンツ」または「参照」MPartを持つ与えられた for を見つける何かが欠けています。MPartDescriptor

于 2012-05-12T02:27:23.523 に答える
5

同じ質問をするだけです。このスレッドを見つけて試した後:

MPart mPart = epartService.findPart("MyPart");

MyPart myPart = (MyPart)mPart.getObject();

それから私は自分のビュー部分を手に入れました。

于 2013-11-26T01:02:03.943 に答える