2011-10-19 10 views
0

JFaceのTreeViewerにポップアップメニューを表示したいと思います。Jfaceポップアップメニューのメニュー項目を置き換える

メニューには決して変更されない3つの定数メニュー項目と、クリックされた(選択された)ツリーノードに応じて変化する追加項目が含まれている必要があります。

1つのオプションはsetRemoveAllWhenShown(true)ですが、定数項目を含むたびにすべてのメニュー項目が削除されます。

私はそれを避けたいです。だから私のタスク締結する

:任意のノードを選択せず​​に木の上で右クリックを使用している場合

  • は、単に一定の項目を示しています。
  • 特定のノードを右クリックして使用する場合は、定数項目を表示し(存在する場合は以前の追加項目を削除)、このノードに項目を追加します(このオプションが利用可能な場合は置き換えることもできます)。これまで

マイコード:

//Add Some Actions 
menuManager.add(..); 
menuManager.add(..); 
menuManager.add(..); 
menuManager.add(new Separator()); 

//This will delete all items inluding the constant, I want to avoid that   
//menuManager.setRemoveAllWhenShown(true); 

menuManager.addMenuListener(new IMenuListener() {   
    public void menuAboutToShow(IMenuManager manager) { 
    IStructuredSelection selection = (IStructuredSelection) mTreeViewer.getSelection(); 
    if (!selection.isEmpty()) { 
      BaseItm selected = (BaseItm) selection.getFirstElement(); 

      if (selected instanceof sometype) {                
      //Remove additional item IF exists 
      manager.add(sepcificActionForThisNode); 
      }   
    } 
}      
}); 

答えて

0

は、すべてのアクションを追加し、使用

+0

アクションにはsetVisibleメソッドがありません。ActionContributionItemを使用する必要がありますか?とにかく、以前のアイテムをすべて隠して、毎回必要なものを表示しなければならないでしょうか? – davids

+0

ツリーのアイテムをクリックするたびに、1)以前に表示されていたアイテムを非表示にする(私はどこかに格納する必要がある)2)loop through manage.getItems ()と私が表示する必要があるアクションを見つける – davids

+0

jep ActionContributionItemは問題ありません。しかし、setRemoveAllWhenShown(true)もうまく動作します。それはチープです。あなたの懸念は何ですか? – ollins

関連する問題