当插件使用菜单扩展点之一将操作添加至工作台 UI 时, 它可以指定菜单项在菜单中启用(或可视)的条件。 除了提供简单启用条件(如选择计数和选择类)之外,插件还可以使用布尔表达式来启用操作。
布尔表达式可以包含简单布尔运算符(NOT、AND 和 OR)以及可以对下列条件求值的预定义表达式:
objectClass — 如果选择中的每个对象子类化或实现类,则为 true。
objectState — 如果命名属性等于指定的值,则为 true。IActionFilter 帮助对表达式求值。操作过滤器根据目标选择和命名属性的值动态计算操作的启用条件。
systemProperty — 如果命名系统特性等于指定的值,则为 true。
pluginState — 指定应安装还是激活指定的插件(按标识)
例如,下列代码片段表示可以用于操作集中试探性操作的启用表达式:
<action id="org.eclipse.examples.actionEnablement.class" label="Red Element" menubarPath="additions" class="org.eclipse.examples.actionEnablement.ObjectTestAction"> <enablement> <and> <objectClass name="org.eclipse.examples.actionEnablement.TestElement"/> <objectState name="name" value="red"/> </and> </enablement> </action>
<action id="org.eclipse.examples.actionEnablement.property" label="Property" menubarPath="additions" class="org.eclipse.examples.actionEnablement.PropertyTestAction"> <enablement> <systemProperty name="MyTestProperty" value="puppy"/> </enablement> </action>
<action id="org.eclipse.examples.actionEnablement.pluginState" label="Installed" menubarPath="additions" class="org.eclipse.examples.actionEnablement.PluginTestAction"> <enablement> <pluginState id="x.y.z.anotherPlugin" value="installed"/> </enablement> </action>
有关这些表达式的更详细的样本和 XML 的完整的描述, 参见操作表达式。
下表列示扩展点,它们添加操作并总结可以如何使用 XML 标记属性和布尔表达式来影响启用。
扩展点名称 |
影响启用的属性 |
布尔表达式 |
---|---|---|
viewActions |
enablesFor — 指定要启用操作所必须满足的选择计数 选择类 — 选择的对象必须子类化或实现才能启用操作的类 选择名称 — 可以应用于选择中的各个对象的通配符过滤器。 |
启用 — 布尔表达式。 应用启用表达式前,必须满足选择类、名称和 enablesFor。 |
editorActions |
enablesFor — 指定要启用操作所必须满足的选择计数 选择类 — 选择的对象必须子类化或实现才能启用操作的类 选择名称 — 可以应用于选择中的各个对象的通配符过滤器。
|
启用 — 布尔表达式。 应用启用表达式前,必须满足选择类、名称和 enablesFor。 |
popupMenus |
(仅适用于对象添加项。) objectClass — 指定选择中的各个对象必须子类化或实现的类 (适用于对象和查看器添加项) enablesFor — 指定要启用操作所必须满足的选择计数 选择类 — 选择的对象必须子类化或实现才能启用操作的类 选择名称 — 可以应用于选择中的各个对象的通配符过滤器。
|
可视性 — 布尔表达式。 应用启用表达式前,必须满足选择类、名称 和 enablesFor。
|
actionSets |
enablesFor — 指定要启用操作所必须满足的选择计数 选择类 — 选择的对象必须子类化或实现才能启用操作的类 选择名称 — 可以应用于选择中的各个对象的通配符过滤器。
|
启用 — 布尔表达式。 应用启用表达式前,必须满足选择类、名称和 enablesFor。
|