2

谷歌我最好的朋友,但我得到的信息太分散而且很不清楚。没有描述我需求的简明教程。

我想将操作添加到我的 RCP 应用程序的主工具栏,但我需要彻底解释执行此操作的所有方法。但由于这是 StackOverflow,我会写下我脑海中的问题,并希望答案能做到。

  • 添加动作的新旧方式分别是什么?通过ActionBarAdvisor还是通过plugin.xml

  • 只能使用将操作添加到主工具栏plugin.xml吗?

  • 通过扩展添加操作有多少步骤?( handlers, commands,menuContribution等)

  • 哪个是行动实施的最佳父母?org.eclipse.jface.action.Action? org.eclipse.ui.menus.WorkbenchWindowControlContribution? 甚至org.eclipse.ui.commands.AbstractHandler

  • 特定于工作台的操作(保存撤消重做等)呢?这些是如何添加的?

  • 在 Eclipse Kepler IDE 中,coolbar 看起来很漂亮。您甚至可以移动工具栏。这是如何实施的?即使使用插件间谍也找不到。

  • 由于我有几个Perspectives,每个都会在主工具栏上提供自己的贡献。这是否意味着我必须在plugin.xml任何地方使用扩展程序?


TL;DR:工作台酷栏操作,包括保存和其他Perspectives 的操作。如何?(actionSets扩展 == 已弃用)。

4

1 回答 1

2

真正的新方法是使用纯 e4 RCP,它使用带有命令和处理程序的新应用程序模型!(但 e4 不支持很多现有代码)。在 e4 中,菜单和工具栏是在应用程序模型中定义的。命令和处理程序的使用方式与传统代码类似(但处理程序的实现方式不同)。

对于 Eclipse 3 风格,您已经发现有一种混乱或做事方式。Eclipse 4.3 确实弃用了一些最旧的(现在在 中标记plugin.xml)。

如果您正在编写一个使用自己的 RCP,ActionBarAdvisor那么您可以在那里定义您的工具栏项目。或者您可以在plugin.xml单个插件中定义它们。两种方法都很好。Eclipse 本身在顾问程序中定义了核心操作,并在其 plugin.xmls 中定义了更多插件。

需要由多个部分(例如编辑器)处理的诸如保存RetargetAction之类的操作应在顾问和使用中创建。这允许每个单独的部分将其自己的动作与全局定义的动作挂钩。这也可以使用更接近 e4 风格的commands和 multiple来完成。handlers

org.eclipse.ui.menus现在是为菜单和工具栏做贡献的主要扩展点(忽略所有已弃用的部分)。这确实迫使您使用commandsand handlers

Eclipse 操作栏顾问org.eclipse.ui.internal.ide.WorkbenchActionBuilder虽然很大,但可能会有所帮助。

我认为 Kepler 中的酷栏是使用新的 e4 应用程序模型构建的,并使用一些棘手的 CSS 进行样式设置。

于 2013-10-25T18:49:35.337 回答