Eclipse rcp 动态显示工具栏项

Eclipse rcp 动态显示工具栏项,eclipse-rcp,eclipse-plugin,Eclipse Rcp,Eclipse Plugin,我需要在主工具栏中动态创建按钮。我找到了一个解决方案,但我只能创建一个按钮(动态贡献项-类扩展ContributionItem)。但我需要创建多个按钮,但我找不到解决方案 我正在努力创建插件,该插件解析包含菜单和工具栏结构的XML文件。我们已经为VisualStudio完成了这个插件。原则上这很容易,但我很快发现,这并不适用于Eclipse。有一个小但关键的差异。插件是在Eclipse中以声明方式实现的。文件plugin.xml是插件基础结构的要点,Java代码只是辅助文件 客户希望在更改所选项

我需要在主工具栏中动态创建按钮。我找到了一个解决方案,但我只能创建一个按钮(动态贡献项-类扩展
ContributionItem
)。但我需要创建多个按钮,但我找不到解决方案

我正在努力创建插件,该插件解析包含菜单和工具栏结构的XML文件。我们已经为VisualStudio完成了这个插件。原则上这很容易,但我很快发现,这并不适用于Eclipse。有一个小但关键的差异。插件是在Eclipse中以声明方式实现的。文件
plugin.xml
是插件基础结构的要点,Java代码只是辅助文件


客户希望在更改所选项目时刷新菜单和工具栏。Eclipse缺少完成任务所需的几个特性。主菜单和主工具栏是在Eclipse启动时创建的,因此很难重建。

据我所知,您希望根据项目浏览器的选择在主工具栏上有不同的按钮(例如,一个项目是java项目,另一个是javascript等)。首先,您必须对主工具栏进行贡献。我认为有一些教程可用,所以谷歌将提供帮助。 主要步骤是: 1.创建一个命令(org.eclipse.ui.commmands) 2.使用先前声明的命令id创建一个处理程序(org.eclipse.ui.handlers) 3.使用menucontribution和commandId为主工具栏(org.eclipse.ui.menus)贡献以下位置URI:toolbar:org.eclipse.ui.main.toolbar?after=misc

显示/隐藏、启用/禁用菜单项/按钮也可以通过声明或“混合”方式完成。声明性的意思是,例如使用enabledWhen/visibleWhen。。。
混合意味着使用propertyTester(org.eclipse.core.expressions.propertyTester)。有了它,您可以在Java代码中定义“启用逻辑”。

在Eclipse4中,UI是从基于EMF的模型生成的。Application.e4xmi是该模型的基础。对模型的贡献可以通过片段(同样是XML)或处理器来完成。处理器是用Java编写的,并使用e4服务(如部件服务)在运行时修改模型


我认为您需要编写一个处理器来解析自定义XML并相应地修改eclipse e4模型。

在大多数情况下,enabledWhen/visibleWhen元素定义的条件足以根据上下文(活动部件、选定对象等)过滤贡献

如果您需要更多自由,请尝试E4 ToolControl,它允许您实现自己的UI元素:

@PostConstruct
公共void createControls(复合父级){
//您的自定义代码在这里
}

这里有更多的细节

你能说得更具体一点吗。例如,按钮到主工具栏还是在哪里?在Eclipse中,我们通常对任何工具栏使用声明性贡献。所有教程都假设插件描述符中声明了一些常量命令集。但我需要动态地创建它,这似乎是一个无法解决的问题。我根本不能申报任何物品。我事先不知道命令。有几件事是有效的。弹出菜单工作,但我不能为每个视图或编辑器注册动态弹出菜单。主菜单可以工作,但它必须是在Eclipse完成启动时构建的。菜单数据模型的进一步变化不确定地出现在视图中。我无法控制视图的更新。(注意:注册所有视图的弹出菜单是我的任务之一。我已经发布了以下问题:,和)