0

JFace の でポップアップ メニューを表示したいTreeViewer

メニューには、変更されることのない 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);
          }         
    }
 }                      
});
4

2 に答える 2

0

を使用IAction.setId(String id)して後でこれらのアクションを削除できるように、カスタム アクションに一意の ID を設定するために使用しIMenuManager.remove(String id)ます。

于 2011-11-01T13:24:01.460 に答える
0

すべてのアクションを追加して使用するjavax.swing.JComponent#setVisible(boolean)

于 2011-10-19T14:01:58.850 に答える