如何为 eclipse 插件项目中的自定义视图提供上下文菜单?
How to contribute a context menu to a custom view in an eclipse plug-in project?
在一个eclipse插件项目中,我贡献了一个名为Favorites
,id为com.qualityeclipse.favorites.views.FavoritesView
的视图。
然后我想通过使用 popup:com.qualityeclipse.favorites.views.FavoritesView?after=additions
为 Favorites
视图贡献一个上下文菜单。
但是,在 Favorites
视图中右键单击时不会显示上下文菜单。
为了测试我改成了popup:org.eclipse.ui.popup.any?after=additions
。这一次上下文菜单在其他视图(例如 Problems
、Console
和 Declaration
)中出现,而不是我自己的 Favorites
视图。
How to contribute a context menu to a custom view?
您需要使用:
popup:org.eclipse.ui.popup.any?after=additions
然后,为每个命令添加一些条件(使用 right click > New > Visible When
:
当活动部分是您的视图时,这个可以使其可见
<visibleWhen
checkEnabled="false">
<with
variable="activePartId">
<equals
value="com.qualityeclipse.favorites.views.FavoritesView">
</equals>
</with>
</visibleWhen>
您必须在视图代码中创建上下文菜单并将其注册到视图站点。类似于:
ISelectionProvider provider = ... a selection provider such as a TreeViewer or TableViewer
Control control = control to own the menu - usually the TreeViewer or TableViewer control
MenuManager menuMgr = new MenuManager("#PopUp");
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(new IMenuListener() {
@Override
public void menuAboutToShow(IMenuManager manager) {
// Additions placeholder
manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
// Note: you can add other menu items directly here
}
});
Menu menu = menuMgr.createContextMenu(control);
control.setMenu(menu);
// register the context menu such that other plug-ins may contribute to it
getSite().registerContextMenu(menuMgr, provider);
在一个eclipse插件项目中,我贡献了一个名为Favorites
,id为com.qualityeclipse.favorites.views.FavoritesView
的视图。
然后我想通过使用 popup:com.qualityeclipse.favorites.views.FavoritesView?after=additions
为 Favorites
视图贡献一个上下文菜单。
但是,在 Favorites
视图中右键单击时不会显示上下文菜单。
为了测试我改成了popup:org.eclipse.ui.popup.any?after=additions
。这一次上下文菜单在其他视图(例如 Problems
、Console
和 Declaration
)中出现,而不是我自己的 Favorites
视图。
How to contribute a context menu to a custom view?
您需要使用:
popup:org.eclipse.ui.popup.any?after=additions
然后,为每个命令添加一些条件(使用 right click > New > Visible When
:
当活动部分是您的视图时,这个可以使其可见
<visibleWhen
checkEnabled="false">
<with
variable="activePartId">
<equals
value="com.qualityeclipse.favorites.views.FavoritesView">
</equals>
</with>
</visibleWhen>
您必须在视图代码中创建上下文菜单并将其注册到视图站点。类似于:
ISelectionProvider provider = ... a selection provider such as a TreeViewer or TableViewer
Control control = control to own the menu - usually the TreeViewer or TableViewer control
MenuManager menuMgr = new MenuManager("#PopUp");
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(new IMenuListener() {
@Override
public void menuAboutToShow(IMenuManager manager) {
// Additions placeholder
manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
// Note: you can add other menu items directly here
}
});
Menu menu = menuMgr.createContextMenu(control);
control.setMenu(menu);
// register the context menu such that other plug-ins may contribute to it
getSite().registerContextMenu(menuMgr, provider);