2017-12-19 10 views
0

は、私は私のコンテキストメニューにアクションを追加置く、それが唯一のメニュー

「アクションの追加」を表示する必要がありますしかし、それはまた別のメニュー(と比較を示す - >ベースラインを追加します) どこから来たのかわからないのですか?

どのようなヒントも歓迎されることはありません!

private void hookContextMenu() { 
    MenuManager menuMgr = new MenuManager("#PopupMenu"); 
    menuMgr.setRemoveAllWhenShown(true); 
    menuMgr.addMenuListener(new IMenuListener() { 
     public void menuAboutToShow(IMenuManager manager) { 

      IStructuredSelection sSelection = (IStructuredSelection) viewer 
        .getSelection(); 

      Object obj = ((IStructuredSelection) sSelection) 
        .getFirstElement(); 
      if (obj.toString().equals("Repository")) { 
       manager.add(addGitAction); 
      } 

     } 
    }); 
    Menu menu = menuMgr.createContextMenu(viewer.getControl()); 

    viewer.getControl().setMenu(menu); 
    menu.getItems(); 
    getSite().registerContextMenu(menuMgr, viewer); 
} 
+0

ヒント1:スペルチェッカーを使用します(タイトルを参照)。ヒント2:[チュートリアル](https://www.eclipse.org/articles/Article-RCP-1/tutorial1.html)があります。どのような結果が望みの効果から逸脱しているのか、あなたが追いかけようとしたアドバイスを提示してください。あなたはその原因についてあなたの考えを提供することを歓迎します。 – greybeard

+0

メニューの作成方法を教えてください。 'registerContextMenu'を呼び出していますか? –

答えて

1

getSite().registerContextMenu(menuMgr, viewer); 
を呼び出すと、これはあなたの部分のコンテキストメニューであり、それはすべての部分(または特定のあなたの部分)に自分自身を追加したい他のプラグインからの貢献を追加する必要があることをことをEclipseを伝えます。

他のプラグインからの寄稿を望まない場合は、このままにしておくことができます。

+0

getSite()を呼び出さないと、registerContextMenu(menuMgr、viewer);コンテキストメニューはまったく表示されません。私のクラスはConfigViewがViewPartを拡張しています – stewchicken

+0

どのようにメニューを表示しようとしていますか?ビューアーを右クリックするとうまくいくはずです。選択肢が「リポジトリ」の場合、メニューにアクションを1つだけ追加するので、空であるため選択されたメニューは表示されません。 –

+0

ユーザーが右クリックボタンをクリックすると、アクションの追加だけが表示されるはずですが、現在は追加アクションと、APIベースラインとの比較と呼ばれる予期しないアクションも表示されます。 – stewchicken