如何以编程方式在eclipse插件中添加右键菜单



我有一个带有View部分的eclipse插件。在这个视图部分中,我有一个表,当用户右键单击该表中的一行时,我想添加一个子菜单。我如何用程序来完成这项工作?

我已经在plugin.xml中定义了命令和menuContribution:

<extension
     point="org.eclipse.ui.menus">
   <menuContribution
        allPopups="true"
        class="com.sintec.eclipseplugins.clippy.menu.DeleteMenuContribution"
        locationURI="menu:delete?after=additions">
   </menuContribution>
</extension>

我还创建了扩展ExtensionContributionFactory的贡献类:

public class DeleteMenuContribution extends ExtensionContributionFactory {
@Override
public void createContributionItems(IServiceLocator serviceLocator, IContributionRoot additions) {
    // build a couple of command-based contribution parameters
    CommandContributionItemParameter pAA = new CommandContributionItemParameter(
        serviceLocator,
        "DeleteCommand",
        "com.sintec.eclipseplugins.clippy.delete",
        SWT.PUSH);
    pAA.label = "Delete Command";
    // create actual contribution items and add them to the given additions reference
    CommandContributionItem itemAA = new CommandContributionItem(pAA);
    itemAA.setVisible(true);
    additions.addContributionItem(itemAA, null);
}
}

Aaaan最后但并非最不重要的是,我有这段代码我的ViewPart,我想把菜单添加到表中:

IMenuManager mgr = new MenuManager().findMenuUsingPath("menu:delete?after=additions");
MenuManager mgr2 = new MenuManager();
mgr2.add(mgr);
tableViewer.getTable().setMenu(mgr2.createContextMenu(tableViewer.getTable()));

问题是找不到菜单。我很确定我错过了什么。。。菜单URI正确吗?

我有点想尝试一下。。。但是为什么不为菜单分配一个id,并在MenuManager中使用find(id)方法呢?

最新更新