2012-02-20 63 views
4

在Eclipse插件开发,我已经能够将项目添加到右键单击上下文菜单上的工程资源管理器通过这样做:添加到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移F1和alt移F2(插件间谍),这是在那里我得到org.eclipse.ui.console.ConsoleView输出。但我似乎无法进入弹出式菜单本身。我可以获取有关各个弹出式菜单项(全选,清除等)的信息,但我想我只是不太清楚如何使用Plug-in 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> 

回答

4

控制台视图本身仅仅是不同种类的游戏机的一个容器,它没有上下文菜单。你需要弄清楚你想添加贡献的特定控制台的菜单ID。

对于文本控制台,菜单ID看起来像<console type>.#ContextMenu。这是没有真正的文件,并找出控制台类型不是直截了当(你应该看看代码)。例如,控制台类型的过程控制台在IDebugUIConstants.ID_PROCESS_CONSOLE_TYPE中定义,而对于消息控制台,它是IConsoleConstants.MESSAGE_CONSOLE_TYPE

1

以上答案帮助我创建弹出窗口。以下是示例代码: -

<menuContribution 
      locationURI="popup:org.eclipse.ui.MessageConsole.#ContextMenu"> 
      <menu 
       label="My Popup" id="com.abhi.test.popup.menu2"> 

      <command 
       commandId="com.abhi.test.command1" 
       id="com.abhi.test.popup.command3" 
       style="push"> 
      </command> 
      </menu> 
    </menuContribution> 
相关问题