Eclipse 如何以编程方式为弹出式菜单添加子菜单?

Eclipse 如何以编程方式为弹出式菜单添加子菜单?,eclipse,eclipse-plugin,eclipse-rcp,Eclipse,Eclipse Plugin,Eclipse Rcp,在我的插件中,我有一个带有菜单项“X”的弹出菜单,我想将子菜单添加到此菜单项 子菜单中菜单项的数量和标签及其操作将更改 我想我可以;在你的plugin.xml中,在org.eclipse.ui.menus下,添加一个menuContribution引用你的“根”菜单的id,也就是你想让你的子菜单附加到的菜单(在本例中,菜单:myDynamicMenuRoot): 菜单在哪里,从视图中注册为零件菜单?是的,它在视图中注册,在此视图中单击鼠标右键时显示。您需要一个弹出:方案来处理弹出菜单(只有在系统

在我的插件中,我有一个带有菜单项“X”的弹出菜单,我想将子菜单添加到此菜单项

子菜单中菜单项的数量和标签及其操作将更改


我想我可以;在你的plugin.xml

中,在org.eclipse.ui.menus下,添加一个menuContribution引用你的“根”菜单的id,也就是你想让你的子菜单附加到的菜单(在本例中,菜单:myDynamicMenuRoot):


菜单在哪里,从视图中注册为零件菜单?是的,它在视图中注册,在此视图中单击鼠标右键时显示。您需要一个弹出:方案来处理弹出菜单(只有在系统确定它是弹出菜单后才考虑所有弹出)。您在此处的菜单贡献是编程的,但仅在创建时应用一次,与菜单显示事件相反。尝试
menuContribution
中的
dynamic
元素,实现
org.eclipse.ui.actions.CompoundContributionItem
@PaulWebster您的第一点是不言而喻的,不是吗;如果没有popup:scheme,则无法创建弹出菜单。你的第二点很好;我从我的一个项目中提取了这段代码,该项目在应用程序启动时动态构建了一个菜单,但这些菜单在此之后不会更改。从问题的声音来看,<代码>动态<代码>等绝对是“@贝克”的方式。谢谢各位,我会考虑你们所有的评论:
<menuContribution
    allPopups="true"
    class="com.myCode.menus.MyDynamicMenuContributions"
    locationURI="menu:myDynamicMenuRoot">
</menuContribution>
public class MyDynamicMenuContributions extends ExtensionContributionFactory {
    private static final ImageDescriptor GREEN_STAR = Plugin.getImageDescriptor("icons/green_star.png");

    @Override
    public void createContributionItems(IServiceLocator serviceLocator, IContributionRoot additions) {
        // build a couple of command-based contribution parameters
        CommandContributionItemParameter pAA = new CommandContributionItemParameter(
            serviceLocator,
            "Submenu_CommandAA",
            "my.package.command.myCommandAA",
            SWT.PUSH);
        pAA.icon = GREEN_STAR;
        pAA.label = "Command AA";

        CommandContributionItemParameter pBB = new CommandContributionItemParameter(
            serviceLocator,
            "Submenu_CommandBB",
            "my.package.command.myCommandBB",
            SWT.PUSH);
        pBB.icon = GREEN_STAR;
        pBB.label = "Command BB";

        // create actual contribution items and add them to the given additions reference
        CommandContributionItem itemAA = new CommandContributionItem(pAA);
        itemAA.setVisible(true);
        additions.addContributionItem(itemAA, null);

        CommandContributionItem itemBB = new CommandContributionItem(pBB);
        itemBB.setVisible(true);
        additions.addContributionItem(itemBB, null);
    }
}