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);
}
}
}
});