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);
}
}
}
});
アクションにはsetVisibleメソッドがありません。ActionContributionItemを使用する必要がありますか?とにかく、以前のアイテムをすべて隠して、毎回必要なものを表示しなければならないでしょうか? – davids
ツリーのアイテムをクリックするたびに、1)以前に表示されていたアイテムを非表示にする(私はどこかに格納する必要がある)2)loop through manage.getItems ()と私が表示する必要があるアクションを見つける – davids
jep ActionContributionItemは問題ありません。しかし、setRemoveAllWhenShown(true)もうまく動作します。それはチープです。あなたの懸念は何ですか? – ollins