Menu 以编程方式创建工具栏项下拉菜单项

Menu 以编程方式创建工具栏项下拉菜单项,menu,eclipse-plugin,toolbar,Menu,Eclipse Plugin,Toolbar,我搜索了整个网络,但找不到一个有效的解决方案,即如何以编程方式为Eclipse中的工具栏中的菜单项创建下拉菜单项。使用plugin.xml创建它们是很顺利的,但是有什么方法可以从代码中实现吗?为什么要这样做 我想创建一个小插件,它为用户提供了创建随机数目的条目的可能性,这些条目应该可以通过主工具栏中带有下拉菜单的单个菜单项(按钮)访问 我对Eclipse插件开发还很陌生。正如我已经说过的,在plugin.xml中执行操作没有问题: 我试图在以下对象中找到有关此命令的信息,但找不到任何信息。不

我搜索了整个网络,但找不到一个有效的解决方案,即如何以编程方式为Eclipse中的工具栏中的菜单项创建下拉菜单项。使用
plugin.xml
创建它们是很顺利的,但是有什么方法可以从代码中实现吗?为什么要这样做

我想创建一个小插件,它为用户提供了创建随机数目的条目的可能性,这些条目应该可以通过主工具栏中带有下拉菜单的单个菜单项(按钮)访问

我对Eclipse插件开发还很陌生。正如我已经说过的,在plugin.xml中执行操作没有问题:


我试图在以下对象中找到有关此命令的信息,但找不到任何信息。不要用
getWorkbenchWindows()[0]
来打扰我,这段代码是在插件启动时执行的,没有可用的活动窗口

Activator act=Activator.getDefault();
IWorkbench workbench=act.getWorkbench();
WorkbenchWindow=(WorkbenchWindow)workbench.GetWorkbenchWindow()[0];
CoolBarManager cbm=window.getCoolBarManager();
工具栏贡献项=
(ToolBarContributionItem)cbm.find(“pulldown.items.toolbars.SampleToolbar”);
IToolBarManager tbm=item.getToolBarManager();
CommandContributionItem citem=
(CommandContributionItem)tbm.find(“pulldown.items.toolbars.sampleCommand”);
ParameterizedCommand cmd=citem.getCommand();

所有对象都有效,但它们都不包含上述定义的参数化命令。我能找到的命令中的所有参数仅包含定义,但未指定任何值。

请查看
menuContribution
元素的
class
属性。通过这个工具,您可以编写一个Java类(扩展
org.eclipse.ui.menus.ExtensionContributionFactory
),它将动态地提供所需的菜单项。在这种情况下,
菜单贡献
的所有子元素都将被忽略。

作为提供整个
扩展贡献工厂
的替代方案(这将很好),您可以在现有XML中添加
dynamic
元素,然后提供一个
CompoundContributionItem
来创建toolitem下拉列表的动态部分。

对于编写的代码很抱歉,只需调试并浏览所有这些对象即可找到我上面描述的内容。