すべてのビューに対して動的なポップアップメニューを提供する必要があります。私は動的なポップアップメニューcontributibutionを作成することができますが、URIを設定して特定のビューに登録する必要があります。ユーザーが別のビューを選択すると、メニューを動的に登録しようとしています。すべてのビューの動的ポップアップメニュー
public class GlobalSelectionListener implements ISelectionListener {
HashSet<IWorkbenchPart> extended = new HashSet<IWorkbenchPart>();
@Override
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
if (!extended.contains(part)) {
IWorkbenchPartSite wps = part.getSite();
if (wps == null)
return;
//creates popup menu for this part
MenuManager mgr = new MenuManager();
mgr.add(new DynamicMenu()); //DynamicMenu extends ContributionItem
wps.registerContextMenu("identifier." + mgr.hashCode(), mgr, wps.getSelectionProvider());
extended.add(part);
System.out.println(part + " menu extended");
}
}
}
これは機能しません。ポップアップメニューにメニュー項目は表示されません。私はこのようにすることがこれまで可能だったかどうかはわかりません。任意のビューのポップアップメニューを動的に追加する方法はありますか?それは、registerContextMenu()
メソッドが何か他のことをしているようです。