【问题标题】:How to add a view to the Window menu in an Eclipse RCP?如何在 Eclipse RCP 中向窗口菜单添加视图?
【发布时间】:2023-03-24 07:36:01
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您想将您的视图添加到 显示视图 菜单(窗口 > 显示视图),还是想将按钮添加到 工具栏 那会打开你的视野吗?
  • 当我进入 Windows > Windows > 其他(这将打开显示视图)时,我可以在那里看到我的视图,但我想把它放在 Windows > Windows 上而不从显示视图中选择。
  • 您的 RCP 基于哪个版本的 Eclipse?
  • 我使用的是 eclipse 3.7.0。

标签: view menu eclipse-plugin eclipse-rcp


【解决方案1】:

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

添加命令

  1. plugin.xml中,标签Extensions,添加扩展点org.eclipse.ui.commands

  2. org.eclipse.ui.commands,添加一个新的命令右键单击扩展点>新建>命令)。给命令一个id(例如,“myplugin.openCustomView”)和一个名称(例如,“Open Custom View")。

为命令添加处理程序

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

  1. plugin.xml中,标签Extensions,添加扩展点org.eclipse.ui.handlers

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

  3. 让新类(名字已经填好)扩展org.eclipse.core.commands.AbstractHandler

  4. 将打开视图逻辑添加到新创建的类的execute() 方法中,这样该类将大致如下所示(当然使用您的视图ID 而不是myplugin.mycustomviewID)。 p>

    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;
      }
    }
    

将命令添加到菜单

  1. plugin.xml中,标签Extensions,添加扩展点org.eclipse.ui.menus

  2. org.eclipse.ui.menus,添加一个新的menuContribution右键单击扩展点>新建> menuContribution)。

  3. menuContribution 提供以下 locationURImenu:window?after=additions(这会将贡献放在 Window 菜单,如果您已正确包含它)。

  4. 向新创建的 menuContribution 添加一个命令右键单击 menuContribution > 新建 > 命令)。浏览 commandId,或手动输入 (myplugin.openCustomView)。给 menuContribution 一个 id(例如,“myplugin.menu.openCustomView”),并将 style 设置为“ ”。

【讨论】:

  • 这真是完美的表达,非常感谢。我还有一个问题;我在 Window 下还有另一个 Window 菜单。要在那里添加我的菜单,我应该如何编辑这一行 menu:window?after=additions
  • 如果你自己添加了这个菜单,你也应该有它的 id (查看 plugin.xml 中的相应扩展点我>)。假设这个 idmyplugin.menus.windowMenu,您只需将 locationURI 编辑为 menu:myplugin.menus.windowMenu?after=additions 部分 - 理论上 - 不是必需的,但允许您控制菜单项的确切放置位置,参见。 wiki.eclipse.org/Menu_Contributions.
  • 我的问题是菜单是在 ActionBarAdvisor 类上以编程方式生成的,所以我在 plugin.xml 或扩展 org.eclipse.ui.menus 上看不到它。我的声誉也不足以支持投票:/
  • 使用命令而不是操作被认为是最佳实践(参见this answer on stackoverflow.com)。我建议通过扩展点重新实现菜单。这使得从其他扩展访问它变得更容易(见我上面的评论),而且绝对值得花几分钟的额外工作!只需再次按照我对此菜单的答案的第二部分,并在菜单处理程序中包含您可能在 ActionBarContributor 中拥有的所有逻辑...
  • 我必须这样做:/ 尽管如此,还是谢谢你的建议。
猜你喜欢
  • 2017-07-30
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
  • 2011-07-17
  • 1970-01-01
  • 2012-12-03
  • 2023-03-17
相关资源
最近更新 更多