添加到Eclipse控制台视图弹出菜单

时间:2012-02-20 21:35:06

标签: eclipse plugins eclipse-plugin

在Eclipse插件开发中,通过这样做,我已经能够在项目浏览器的右键单击上下文菜单中添加一个项目:

<extension point="org.eclipse.ui.menus">
    <menuContribution locationURI="popup:org.eclipse.jdt.ui.PackageExplorer">
        <command ... >
            ...
        </command>
    </menuContribution>
</extension>

但是当我尝试添加到ConsoleView的弹出菜单时,我没有得到结果。

<extension point="org.eclipse.ui.menus">
    <menuContribution locationURI="popup:org.eclipse.ui.console.ConsoleView">
        <command ... >
            ...
        </command>
    </menuContribution>
</extension>

我一直在关注alt-shift-F1和alt-shift-F2(Plug-in Spy)的输出,这是我得到org.eclipse.ui.console.ConsoleView的地方。但我似乎无法进入弹出菜单本身。我可以获得有关各个弹出菜单项(选择全部,清除等)的信息,但我想我只是不知道如何使用Plug-in Spy“挖掘”来获取正确的信息。

编辑:使用下面的答案显示我的工作成果

插件选择Spy有以下内容:

Active Part (Console)
    The active view identifier:
        org.eclipse.ui.console.ConsoleView
Active Selection
    The selection class:
        TextSelection
Active Help
    The active help context identifiers:
        org.eclipse.debug.ui.process_console_context

最后一个条目指向进程控制台,而不是消息控制台。答案中的链接IDebugUIConstants.ID_PROCESS_CONSOLE_TYPE定义为org.eclipse.debug.ui.ProcessConsoleType。所以我最终得到了这个,它起作用了:

  <menuContribution
        locationURI="popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
     <command
           commandId="com.grch.cmgtsdk.merge"
           label="Yowza!"
           style="push">
     </command>
  </menuContribution>

1 个答案:

答案 0 :(得分:4)

Console视图本身只是不同类型控制台的容器,它没有上下文菜单。您需要确定要添加贡献的特定控制台的菜单ID。

对于文本控制台,菜单ID类似于<console type>.#ContextMenu。这没有真正记录,找到控制台类型并不简单(你应该查看代码)。例如,控制台类型的流程控制台在IDebugUIConstants.ID_PROCESS_CONSOLE_TYPE中定义,而对于消息控制台,则为IConsoleConstants.MESSAGE_CONSOLE_TYPE