2011-07-30 27 views

回答

1

你必须创建ContributionItem类象下面这样:

public class MyShowViewContributionItem extends org.eclipse.ui.internal.ShowViewMenu { 
    public MyShowViewContributionItem() { 
     this("om.myplugin.myShowViewId"); 
    } 
    public MyShowViewContributionItem(String id) { 
     super(org.eclipse.ui.PlatformUI.getWorkbench().getActiveWorkbenchWindow(), id); 
    } 
} 

然后在plugin.xml org.eclipse.ui.menus扩展:

<menu 
      label="My Show View"> 
     <dynamic 
      class="com.myplugin.MyShowViewContributionItem" 
      id="com.myplugin.myShowViewId"> 
     </dynamic> 
    </menu> 

干杯, 最大

+0

完成此操作后,尽管在透视扩展中添加了并清除了工作区数据,但我仍然在菜单中看到“”。任何想法如何解决这个问题? –

1

只是为了我最近分享尝试做同样的事情,马克斯建议在他的answer将工作,但留下你使用内部代码(重新导致'Discouraged Access'警告)。

另一种方法是通过应用程序操作栏顾问来构建菜单。尽管这种方法会让你不得不编写代码(反对在插件XML定义中使用菜单贡献)。请看下面的例子:

public class ApplicationActionBarAdvisor extends ActionBarAdvisor 
{ 
    private IContributionItem contributionOpenPerspective; 
    private IContributionItem contributionShowView; 

    ... 

    protected void makeActions(IWorkbenchWindow window) 
    { 
     ... 
     contributionOpenPerspective = ContributionItemFactory. 
      PERSPECTIVES_SHORTLIST.create(window); 
     contributionShowView = ContributionItemFactory. 
      VIEWS_SHORTLIST.create(window); 
     ... 
    } 

    protected void fillMenuBar(IMenuManager menuBar) 
    { 
     ... 
     MenuManager windowMenu = new MenuManager("&Window", 
      IWorkbenchActionConstants.M_WINDOW); 
     menuBar.add(windowMenu); 

     MenuManager openPerspectiveMenu = new MenuManager("&Open Perspective"); 
     openPerspectiveMenu.add(perspectivesContribution); 
     windowMenu.add(openPerspectiveMenu); 

     MenuManager showViewMenu = new MenuManager("Show &View"); 
     showViewMenu.add(viewsContribution); 
     windowMenu.add(showViewMenu); 
     ... 
    } 
} 

一个可能的缺点这种方法是通过菜单中的贡献创造了顾问创建菜单和菜单之间的相互作用。由于advisor menu items are created before menu contributions,您需要处理在菜单贡献中添加更多排序逻辑。这对大多数人来说可能没有问题,但是,您从org.eclipse.ui.menus(即使其他插件与他们自己的菜单贡献发挥作用时的感觉是错觉),您失去了集中式菜单结构的“感觉”。

我还包括建立一个透视菜单;完全可以选择,但是如果有人试图用观点来执行相同的菜单构建,我会添加它。

相关问题