2017-03-09 36 views
0

右クリックしたときにMPartのポップアップメニューを追加しようとしていますが、問題が発生しています。 Eclipse 3.xと同じように機能するはずです(ビューのタイトルの近くで右クリックし、ポップアップメニューからビューを切り離す/移動する)。ポップアップメニューにHandled Menu Itemを追加しました。私はこれがポップアップメニューを右クリックで表示させるのに必要なものだと仮定しましたが、私が行ったときは何も起こりません。Eclipse RCP 4:MPartにポップアップメニューを追加する

私はLars Vogelのチュートリアルに従いましたが、彼のチュートリアルではJFaceビューアを部品に追加し、そのビューアにポップアップメニューを追加する方法しか示していません。 MPartを右クリックしたときにポップアップメニューを追加する正しい方法は何ですか?あなたが提供することができるかもしれない任意の助け

What the MPart looks like in my Application Model

ありがとう! :)

編集:私は

Example

答えて

1

と同様にApplication.e4xmi(またはフラグメント)のポップアップメニューを宣言する何をしたいの例あなたも登録して、コードでEMenuServiceを使用する必要があります。メニューを右クリックしてください。

@Inject 
EMenuService menuService; 


menuService.registerContextMenu(control, "menu id"); 

一部のタブを右クリックしたときに表示されるメニューの変更ははるかに複雑です。これを行うには、カスタムレンダラーファクトリを使用してMPartStackのカスタムレンダラを定義する必要があります(基本的な詳細についてはhereを参照)。

レンダラーは標準StackRendererクラスを拡張してpopulateTabMenuメソッドをオーバーライドすることができます。

これは単なる「閉じる」を示すためにメニューを低減し、私が使用して例示的な方法である:

@Override 
protected void populateTabMenu(final Menu menu, final MPart part) 
{ 
    if (!isClosable(part)) 
    return; 

    // Just add Close menu item and handle enabling it correctly 

    final MenuItem menuItemClose = new MenuItem(menu, SWT.NONE); 

    menuItemClose.setText(SWTRenderersMessages.menuClose); 

    menuItemClose.addListener(SWT.Selection, this::closeSelected); 

    menu.removeListener(SWT.Show, _menuListener); 
    menu.addListener(SWT.Show, _menuListener); 
} 
+0

こんにちはグレッグ、私はラース・フォーゲルのチュートリアルでこれをやったが、私は私が作成したJFaceのビューアーのコントロールを得ましたMPartの中に入れてそれを使用しました。私はあなたがMPart自体を右クリックしたときにポップアップメニューを設定しようとしています。 MPartのコントロールを取得する方法や、MPart自体にポップアップメニューを追加する方法はありますか? – 0Calories

+0

「MPartをクリックする」とはどういう意味ですか? MPartの本体はあなたのコントロールだけですか、ツールバーやタブのようなものについて質問していますか? –

+0

はい、MPartの実際のタイトルの近くで右クリックすると、MPartのタブが表示されます。たとえば、Eclipse IDEでは、[Call Hierarchy]タブを右クリックすると、いくつかのオプションが表示されます。自分のMPartを同じ方法で右クリックしてポップアップメニューを表示したいと思っています。 (私の質問にサンプル画像を追加) – 0Calories

関連する問題