0

主に e3.x プラグインで構成される既存の RCP プロジェクトがあります。ターゲット プラットフォームは既に Eclipse 4.5 に移行されており、互換レイヤーも使用されています。現在、プラグインで新しい POJO e4view を使用することができます。その「混合モード」は正常に機能しています。しかし、拡張機能 (org.eclipse.ui.main.menu) を使用して既存のメニューを拡張する必要がある場合は、plugin.xml で拡張機能を使用する必要があります。私の目標は、アプリケーション モデル (Application.e4xmi) を作成し、定義を現在の main-plugin.xml から新しいアプリケーション モデル (つまり、ハンドラ、メニュー定義など) に移行することです。新しいプラグインは、新しいモデル フラグメント (fragment.e4xmi) を使用する必要があります。既存の e3 プラグインを変更しないことが非常に重要です。既存のメイン プラグインを純粋な e4 プラグインに移行し、古い e3 プラグインを変更せずに追加することは可能ですか。

例えば:

Plugin Main(e4): Application.e3xmi (メニュー定義、ハンドラ、コマンドなどを含む) plugin.xml (アプリケーションと製品ターゲットを含む)

プラグイン A(e4): e4views (POJO) fragment.e4xmi (新しいメニュー エントリの拡張を含む) plugin.xml

プラグイン B (レガシー e3): e3 (ViewPart から拡張) plugin.xml (新しいメニュー エントリ、古いハンドラの拡張を含む)

4

1 に答える 1

0

現時点では、アプリケーション モデルに貢献する方法は 2 つしかないと思います。

  1. モデルフラグメント
  2. モデル プロセッサ

2 つ目は、メニュー エントリを提供するためのオプションです。問題は、新しいモデル要素でのみ可能であり、e3 プラグインにプロセッサを実装する必要があるということです。私の結論は、e3 コントリビューションを使用した純粋な e4 アプリケーションは現時点では不可能ですが、間違っている可能性があるということです。

例: Eclipse4Modularity vogella

// the menu is injected based on the parameter
// defined in the extension point
@Inject
@Named("org.eclipse.ui.file.menu")
private MMenu menu;

MDirectMenuItem menuItem =  modelService.createModelElement(MDirectMenuItem.class);
menuItem.setLabel("Another Exit");
menuItem.setContributionURI("bundleclass://"
    + "com.example.e4.rcp.todo.contribute/"
    + ExitHandlerWithCheck.class.getName());
menu.getChildren().add(menuItem);
于 2015-08-17T12:15:04.410 に答える