如何在Eclipse RCP中向Window菜单添加视图?

时间:2013-02-27 09:23:36

标签: view menu eclipse-plugin eclipse-rcp

我想将自定义视图添加到“窗口”菜单中。此代码仅添加打开的视图

    IMenuManager pencereler = new MenuManager("sample");
    pencereler.add(ContributionItemFactory.VIEWS_SHORTLIST.create(window));
    viewMenu.add(pencereler);

如果我打开自定义视图,则会将其添加到此菜单中。但是,我想在此菜单中始终显示我的自定义视图,而不仅仅是在打开它之后。

那么我可以从视图中创建“ContributionItem”,还是有其他方法可以在“plugin.xml”中添加一些行或将我的视图ID添加到任何扩展名中?

1 个答案:

答案 0 :(得分:6)

假设您已正确包含 Window 菜单,这就是它的工作原理。

添加命令

  1. plugin.xml ,选项卡扩展程序中,添加扩展点org.eclipse.ui.commands

  2. org.eclipse.ui.commands,请添加新的命令右键单击扩展点&gt;新建&gt;命令)。为命令提供 id (例如,“ myplugin.openCustomView ”)和名称(例如,“打开自定义视图< / em>的“)。

  3. 为命令添加处理程序

    对于新创建的命令“ myplugin.openCustomView ”,您必须创建一个处理程序,它将以编程方式打开视图。

    1. plugin.xml ,选项卡扩展程序中,添加扩展点org.eclipse.ui.handlers

    2. org.eclipse.ui.handlers添加处理程序右键单击扩展点&gt;新&gt;处理程序)。对于处理程序的 commandId ,键入新创建的命令的名称( myplugin.openCustomView )或浏览它。在字段中,键入要创建的处理程序类的名称(例如,“ OpenCustomViewHandler ”),然后单击超链接的字段名称​​ class 。这将打开New Class Wizard。

    3. 让新课程(名称已填写)延长org.eclipse.core.commands.AbstractHandler

    4. 将开放视图逻辑添加到新创建的类的execute()方法中,以便该类看起来大致如下(使用您的视图ID而不是 myplugin.mycustomviewID 疗程)。

      import org.eclipse.core.commands.AbstractHandler;
      import org.eclipse.core.commands.ExecutionEvent;
      import org.eclipse.core.commands.ExecutionException;
      import org.eclipse.ui.PartInitException;
      import org.eclipse.ui.handlers.HandlerUtil;
      
      public class OpenViewHandler extends AbstractHandler {
      
        @Override
        public Object execute(ExecutionEvent event) throws ExecutionException {
          try {
            HandlerUtil.getActiveWorkbenchWindowChecked(event).
              getActivePage().showView("myplugin.mycustomviewID");
          } catch (PartInitException e) {
            e.printStackTrace();
          }
          return null;
        }
      }
      
    5. 将命令添加到菜单

      1. plugin.xml ,选项卡扩展程序中,添加扩展点org.eclipse.ui.menus

      2. org.eclipse.ui.menus,请添加新的 menuContribution 右键单击扩展点&gt;新建&gt; menuContribution )。

      3. menuContribution 提供以下 locationURI 菜单:窗口?之后=添加(这会将贡献放在< em> Window 菜单,如果你已正确包含它。)

      4. 到新创建的 menuContribution ,添加命令右键单击menuContribution&gt; New&gt;命令) 。浏览 commandId ,或手动输入( myplugin.openCustomView )。为 menuContribution 提供 id (例如,“ myplugin.menu.openCustomView ”),并将样式设置为“