描述:此扩展点用来为其它插件注册的视图将操作添加到下拉菜单和工具栏中。每个视图具有通常通过单击右上角三角形按钮激活的本地下拉菜单。其它插件可向此菜单添加子菜单和操作。插件还可将操作添加到视图工具栏。视图所有者首先有机会填充这些区域。追加了其它插件的可选附加项。
操作的启用和/或可视性分别可使用元素 enablement 和 visibility 定义。这两个元素包含进行求值来确定启用和/或可视性的布尔表达式。
enablement 和 visibility 元素的语法相同。两者都只包含一个布尔表达式子元素。在最简单的情况下,这将是 objectClass、objectState、pluginState 或 systemProperty 元素。在更复杂的情况下,可复合 and、or 和 not 元素来组成布尔表达式。and 和 or 元素必须包含 2 个子元素。not 元素一定只能包含 1 个子元素。
配置标记:
<!ELEMENT extension (viewContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED
>
<!ELEMENT viewContribution (menu* , action*)>
此元素用来定义一组视图操作和/或菜单。
<!ATTLIST viewContribution<!ELEMENT action (selection* | enablement?)>
此元素定义用户可在用户界面中调用的操作。
<!ATTLIST actionpush | — 作为普通菜单项或工具项。 | |
radio | — 作为单选样式菜单项或工具项。同一菜单或工具栏组内具有单选样式的操作相当于单选按钮集。初始值由 state 属性指定。 | |
toggle | — 作为复选菜单项或切换工具项。初始值由 state 属性指定。 |
! | — 选择了零项 | |
? | — 选择了零项或一项 | |
+ | — 选择了一项或多项 | |
multiple, 2+ | — 选择了两项或更多项 | |
n | — 选择了精确数目个项。例如:nablesFor=" 4" 仅当选择了 4 个项时才启用操作。 | |
* | — 选择了任意数目个项 |
<!ELEMENT menu (separator+ , groupMarker*)>
此元素用来定义新菜单。
<!ATTLIST menu<!ELEMENT separator EMPTY>
此元素用于在新菜单中创建菜单分隔符。
<!ATTLIST separator<!ELEMENT groupMarker EMPTY>
此元素用来在新菜单中创建已命名组。它在新菜单中没有可视表示,这与 separator 元素不同。
<!ATTLIST groupMarker<!ELEMENT selection EMPTY>
此元素用来帮助确定基于当前选择是否启用操作。如果指定了 enablement 元素,则忽略它。
<!ATTLIST selection<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
此元素用来定义操作的启用。
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
此元素用来定义操作的可视性。
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
此元素表示对其两个子元素表达式求值的结果的布尔 AND 操作。
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
此元素表示对其两个子元素表达式求值的结果的布尔 OR 操作。
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
此元素表示对其子元素表达式求值的结果的布尔 NOT 操作。
<!ELEMENT objectClass EMPTY>
此元素用来对当前选择中的每个对象的类或接口进行求值。如果选择中的每个对象都实现指定的类或接口,则表达式求值为 true。
<!ATTLIST objectClass<!ELEMENT objectState EMPTY>
此元素用来对当前选择中的每个对象的属性状态求值。如果选择中的每个对象都具有指定的属性状态,则表达式求值为 true。要对此类型的表达式进行求值,选择中的每个对象都必须实现或采用 org.eclipse.ui.IActionFilter 接口。
<!ATTLIST objectState<!ELEMENT pluginState EMPTY>
此元素用来对插件的状态进行求值。插件的状态可以是下列项之一:installed 或 activated。
<!ATTLIST pluginState<!ELEMENT systemProperty EMPTY>
此元素用来对某些系统属性进行求值。属性值是从 java.lang.System 中检索的。
<!ATTLIST systemProperty
<extension point="org.eclipse.ui.viewActions"> <viewContribution id="com.xyz.xyzViewC1" targetID="org.eclipse.ui.views.navigator.ResourceNavigator"> <menu id="com.xyz.xyzMenu" label="XYZ Menu" path="additions"> <separator name="group1"/> </menu> <action id="com.xyz.runXYZ" label="&Run XYZ Tool" menubarPath="com.xyz.xyzMenu/group1" toolbarPath="Normal/additions" style="toggle" state="true" icon="icons/runXYZ.gif" tooltip="Run XYZ Tool" helpContextId="com.xyz.run_action_context" class="com.xyz.actions.RunXYZ"> <selection class="org.eclipse.core.resources.IFile" name="*.java"/> </action> </viewContribution> </extension>
在上面的示例中,指定的操作将仅支持单个选择(enablesFor 属性)。另外,选择中的对象必须是 Java 文件资源。
下面是视图操作扩展的另一示例:
<extension point="org.eclipse.ui.viewActions"> <viewContribution id="com.xyz.xyzViewC1" targetID="org.eclipse.ui.views.navigator.ResourceNavigator"> <menu id="com.xyz.xyzMenu" label="XYZ Menu" path="additions"> <separator name="group1"/> </menu> <action id="com.xyz.runXYZ2" label="&Run XYZ2 Tool" menubarPath="com.xyz.xyzMenu/group1" style="push" icon="icons/runXYZ2.gif" tooltip="Run XYZ2 Tool" helpContextId="com.xyz.run_action_context2" class="com.xyz.actions.RunXYZ2"> <enablement> <and> <objectClass name="org.eclipse.core.resources.IFile"/> <not> <objectState name="extension" value="java"/> </not> </and> </enablement> </action> </editorContribution> </extension>
在上面的示例中,指定的操作将出现为菜单项。如果选择不包含任何 Java 文件资源,则启用操作。
API 信息:class 属性的值必须是实现 org.eclipse.ui.IViewActionDelegate 的 Java 类的全限定名。尽可能迟地装入此类以避免在真正需要整个插件之前就装入该插件。
接口 org.eclipse.ui.IViewActionDelegate 扩展了 org.eclipse.ui.IActionDelegate 并添加允许代理与它正在进行添加的视图实例一起初始化的附加方法。
此扩展点可用来将操作添加到目标视图先前创建的菜单中。省略菜单 path 属性会导致将新菜单或操作添加到下拉菜单的末尾。
操作扩展的启用条件最初由 enablesFor 定义,也可以是 selection 或 enablement。但是,一旦将操作代理实例化,它就可以直接在它的 selectionChanged 方法中控制操作启用状态。
操作和菜单标号可包含使用以下规则编码助记符的特殊字符:
selection 和 enablement 元素是互相排斥的。enablement 元素可以使用子元素 objectClass 和 objectState 替换 selection 元素。例如,下面内容:
<selection class="org.eclipse.core.resources.IFile" name="*.java"> </selection>可使用以下内容表示:
<enablement> <and> <objectClass name="org.eclipse.core.resources.IFile"/> <objectState name="extension" value="java"/> </and> </enablement>
提供的实现:每个视图通常都在下拉菜单和本地工具栏上提供了一些标准项。将把其它插件中的添加项追加至标准实现。
Copyright (c) 2000, 2003 IBM Corporation and others.
All rights reserved. 该程序及附带提供的资料是基于“一般公共许可证”(Common
Public License) v1.0 的条款提供的,本发行版中提供了该许可证条款,并且也可
在以下位置处找到该条款:http://www.eclipse.org/legal/cpl-v10.htm