Eclipse rcp 向eclipse大纲视图添加上下文菜单所需的步骤

Eclipse rcp 向eclipse大纲视图添加上下文菜单所需的步骤,eclipse-rcp,Eclipse Rcp,我想向Eclipse标准大纲视图添加一个上下文菜单。只需添加一个带有url的menuContribution popup:org.eclipse.ui.views.ContentOutline 不起作用,所以我想我需要先创建上下文菜单,我读到菜单必须在视图的createPartControl()方法中创建。但是,当将上下文菜单添加到另一个视图(如Outline视图)时,我应该将此代码放在何处?要为视图创建上下文菜单,请使用以下内容: MenuManager contextMenu=new Me

我想向Eclipse标准大纲视图添加一个上下文菜单。只需添加一个带有url的menuContribution

popup:org.eclipse.ui.views.ContentOutline

不起作用,所以我想我需要先创建上下文菜单,我读到菜单必须在视图的createPartControl()方法中创建。但是,当将上下文菜单添加到另一个视图(如Outline视图)时,我应该将此代码放在何处?

要为视图创建上下文菜单,请使用以下内容:

MenuManager contextMenu=new MenuManager();
Control=viewer.getControl();
菜单菜单=contextMenu.createContextMenu(控件);
控件。设置菜单(菜单);
getSite().registerContextMenu(“菜单id”,上下文菜单,查看器);
其中
viewer
是大纲树查看器


最后的
registerContextMenu
调用意味着您可以使用指定的菜单id对此菜单进行贡献。

menuContribution
对我有效:


popup:org.eclipse.jdt.ui.outline

每个编辑器为outline视图提供一个单独的页面,每个页面都有自己的上下文菜单。因此,您还需要知道要贡献哪个编辑器,以及它在上下文菜单中使用的id。我使用菜单管理器创建了一个上下文菜单,并将其添加到ContentOutlinePage的控件中。但是,菜单显示为普通菜单(单击小三角形时展开的菜单),而不是视图中的上下文菜单。如果没有查看器,我可以在getControl()中返回的控件上调用setMenu(菜单)吗?上下文菜单可以在任何控件上,但是registerContextMenu第三个参数必须是实现
ISelectionProvider
的参数,因此您可能需要编写一个简单的选择提供程序。menuId:org.eclipse.ui.views.ContentOutline是在my plugin.xml中使用的正确位置URI?不,它是您在registerContextMenuI上指定的id不确定,可能不会。