免责声明:Eclipse 3.2 中的 org.eclipse.ui.menus
扩展点实现并不完整。目前,它不支持定义或扩展菜单或工具栏(对于这些内容,应该使用现有的添加项扩展)。但是,只能通过此机制来向工作台添加“修剪”窗口小部件。本节将说明如何使用此扩展点来实现此目标。
“修剪”窗口小部件是一个控件,它放在工作台窗口外边界上的某个位置(称为“修剪区”)中。最常见的示例是通用的“状态行”,几乎所有的 GUI 都会在窗口底部放置此内容。扩展点 org.eclipse.ui.menus 允许插件将视图添加到工作台中。添加修剪的插件必须在它们的 plugin.xml 文件中注册该修剪并提供有关该修剪的配置信息,例如它的实现类、它所在的修剪组(修剪栏)以及布局信息(例如,在修剪区中进行修剪布局时,该修剪是否要使用可用的“外部”空间)。
所添加的修剪的接口是在 IWorkbenchWidget 中定义的,但插件可以选择扩展 AbstractWorkbenchTrimWidget 类(实际上鼓励这样做)来代替从头开始实现该接口。
对于自述文件工具示例,我们添加了一个相当简单的修剪窗口小部件(该窗口小部件仅仅显示一个字符串),并指示了该修剪当前所停靠的那一侧。
让我们看看用来添加此部分修剪的扩展点定义:
此扩展的第一部分(“group”定义)仅仅定义了组的标识,并且将该组的“location”定义成位于“location”组的开头(即,在底部修剪区的开头)。第二部分(“widget”定义)指定窗口小部件的实现“class”并将该窗口小部件的“location”定义成位于先前定义的组中。
注意,在这两个示例中,将栏的“类型”都定义为 trim(这是当前唯一受支持的类型)。
在安装实际的 readmetool
示例后,请查看 ReadmeTrimWidget 的 fill
方法的实现。此方法与将窗口小部件添加到工具栏或菜单时使用的其他 fill
方法有所不同。由于可以将修剪区从一个区域拖动到另一区域,所以此方法还将传递该修剪
所在的“侧”,从而允许实现者通过更改方向等内容来根据窗口小部件的位置对其外观进行定制。当前实现仅仅更改所显示的文本以反映当前位置。另请注意“dispose”/“fill”生命周期的处理方式;将重复地调用工作台更改(即,更改透视图或将修剪拖放到新的一侧)所生成的
dispose
和 fill
。
在此示例代码中未反映的一个情况是,修剪布局管理器对窗口小部件控件的 computeSize
方法的正确修剪实现的依赖。窗口小部件必须能够计算并返回它的“首选”大小,这是因为,在布局管理实现中,将使用此大小来确定特定修剪区所需的空间。请参阅 SWT 文档以了解有关如何正确实现“computeSize
”的说明。