在讲解插件入门时,读者了解到如何用向导开发一个“Hello, world”插件。“Hello, world”插件用到的扩展点就是“org.eclipse.ui.actionSets”。在此就是要通过“org.eclipse.ui. actionSets”扩展点建立用户的菜单和工具栏。
“actionSets”扩展点信息
在Eclipse中,通过“org.eclipse.ui.actionSets”扩展点能够建立自己的菜单和工具栏。实现ActionSet扩展点的步骤如下。
1. 在插件清单文件的Extensions页上添加“org.eclipse.ui.actionSets”节点。
2. 在“org.eclipse.ui.actionSets”节点下添加ActionSet子节点。
3. 在ActionSet节点下添加menu和action子节点,如图1所示。

图1 ActionSets扩展点
menu节点代表Eclipse的菜单项,menu节点的属性设置如下。
l id:sampleMenu,id表示menu的编号。
l label:Sample &Menu,label表示在菜单中的显示名称。
action节点代表菜单的菜单项或工具栏中按钮的相应动作,action节点的属性设置如下。
l id:com.free.proj.actionset.actions.SampleAction,代表Action的唯一编号。
l label:&Sample Action,Action的名称。
l menuBarPath:sampleMenu/sampleGroup,表示Action对应菜单的路径。
l toolbarPath:sampleGroup,表示Action对应工具栏按钮的路径。
l icon:icons/sample.gif,表示Action对应的图标。
l tooltip:Action的提示信息。
l class:com.free.proj.actionset.actions.SampleAction,指定Action的实现类。
plugin.xml文件如例程1所示。
例程1 plugin.xml
<plugin>
<extension
1D{2W!iI6a0 point="org.eclipse.ui.actionSets">
:RK@?5v&Y0 <actionSetITPUB个人空间
rq*k_j|3BEJ
label="Sample Action Set"
Jb#n,p @b
b0 visible="true"ITPUB个人空间yH[&[B(w;}:qK1c
id="com.free.proj.actionset.actionSet">
c0}$CK)R'AX5Y0 <menuITPUB个人空间4Z$X\{ }Sz6x Qx
id="sampleMenu"ITPUB个人空间;Z I
U{@.[Y+Z
label="Sample &Menu">
7zZb3rTB4I"xP0 <separator
BX6TXJ"T0 name="sampleGroup">ITPUB个人空间#K'qe'k$B]!t
</separator>ITPUB个人空间{y"Y }TViU
</menu>ITPUB个人空间4y-zGj5zx/j
<action
K'p/i;d.Vc#E]W0 label="&Sample Action"
7G5s'WG~X.Q @:[0 icon="icons/sample.gif"ITPUB个人空间"`;qJ2]-@P8\
class="com.free.proj.actionset.actions.SampleAction"ITPUB个人空间+ri(d*f ^ hD
tooltip="ActionSet Test"
/UF;UYIL"I0 menubarPath="sampleMenu/sampleGroup"ITPUB个人空间0NQOM(f8?&Q1`E
toolbarPath="sampleGroup"
D0v/]Q;Gpg ~x0 id="com.free.proj.actionset.actions.SampleAction">ITPUB个人空间{)X\*x%B?2z
</action>ITPUB个人空间%P:Q:t!q&hg*C
</actionSet>ITPUB个人空间6u(ST'_Ip%s
</extension>
</plugin>
实现类“SampleAction”
从plugin.xml文件可以看出Action对应的实现类为SampleAction。SampleAction实现了IWorkbenchWindowActionDelegate接口,其中run(IAction action)方法为用户单击菜单或工具栏按钮时的响应方法,SampleAction代码如例程2所示。
例程2 SampleAction.java
public class SampleAction implements IWorkbenchWindowActionDelegate {
private IWorkbenchWindow window;
public SampleAction() {
}
public void run(IAction action) {
MessageDialog.openInformation(
window.getShell(),
"Actionset Plug-in",
"ActionSet Test");
}
public void selectionChanged(IAction action, ISelection selection) {
}
public void dispose() {
}
public void init(IWorkbenchWindow window) {
this.window = window;
}
}
上例中,通过run方法响应用户单击菜单和工具栏的请求。在Eclipse中,Action是可以被菜单和工具栏所复用的。
下载(com.free.proj.actionset.rar)