org.eclipse.ui.popupMenus
允许添加到其它视图和编辑器的弹出菜单,可以创建viewerContribution和objectContribution。
viewerContribution:导致菜单出现在视图或编辑器的弹出菜单中,与选择无关。
objectContribution导致菜单出现在选定了指定类型的对象的视图或编辑器中,与选择有关。
viewerContribution的targetID为视图或编辑器的ID。例如#TextEditorContext为eclipse平台默认编辑器的上下文菜单ID。
(注:要想显示添加的弹出菜单,必须先给view或editor添加弹出菜单,在createPartControl中设置):
在TreeView上添加弹出菜单:(treeView为view上的控件)
//初始化弹出菜单
MenuManager menuManager=new MenuManager();
Menu menu=menuManager.createContextMenu(treeViewer.getControl());
treeViewer.getControl().setMenu(menu);
//设置选择提供者和弹出菜单
getSite().setSelectionProvider(treeViewer);
getSite().registerContextMenu(menuManager, treeViewer);
直接为view添加弹出菜单:
@Override
public void createPartControl(Composite parent) {
// 初始化弹出菜单
MenuManager menuManager = new MenuManager();
Menu menu = menuManager.createContextMenu(parent);
parent.setMenu(menu);
// 设置选择提供者和弹出菜单
getSite().setSelectionProvider(null);
getSite().registerContextMenu(menuManager, null);
}
2 objectContribution:
<objectContribution
adaptable="false"
id="hoodman.objectContribution1"
objectClass="hoodman.object1">
</objectContribution>
objectClass设置的类或接口起到过滤作用,选择的对象必须为其子类或者实现借口,弹出菜单才会响应。
objectContribution下可以建action,menu,filter,visible,enablement。
objectContribution应用十分广泛,可以根据识别的不同内容弹出不同的菜单,具体用法可以参考http://blog.csdn.net/kevin99zhang/archive/2007/12/04/1917157.aspx