2012-04-10 8 views
0

すべてのビューに対して動的なポップアップメニューを提供する必要があります。私は動的なポップアップメニュー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()メソッドが何か他のことをしているようです。

答えて

0

問題は解決されませんでしたが、回避策があります。必要なすべてのビューとエディターには、plugin.xmlファイルにポップアップメニューを登録することができます。通常、プラグインの使用回数は限られています。あなたがプラグインを書いているなら、あなたはプラグインが必要なものを知っています。 Spy plug-in(ALT + SHIFT + F1)を使用して、アクティブなメニュー投稿識別子を表示し、必要なすべてのビューとエディタのポップアップメニューに投稿を登録します。

関連する問題