5、定义动作
(1)动作概述
l 在 Eclipse 工作台中,动作是应用程序用户触发的命令
l 一般,动作可分为三种不同的类型:按钮、工具条项和菜单项
l 当在工作台内执行动作时,动作的run方法在应用程序中执行其特定功能
l 除了动作类外,动作还可以具有其他属性用于在工作台内控制动作的呈现方式,这些属性包括文本标签、工具提示信息和图标
l 本教程的Google应用程序中有两个动作:一个用于退出应用程序(菜单项动作),另一个允许用户通过点击Search视图中的License Key按钮(按钮动作)来激活License Key向导
(2)定义org.eclipse.ui.viewActions扩展
<extension
point="org.eclipse.ui.viewActions">
<viewContribution
targetID="com.xqtu.google.views.SearchView"
id="com.xqtu.google.views.contribution">
<action
toolbarPath="additions"
label="License Key"
tooltip="Google License Key"
class="com.xqtu.google.actions.LicenseKeyAction"
style="push"
state="false"
id="com.xqtu.google.actions.LicenseKeyAction"/>
</viewContribution>
</extension>
l 在视图中的动作,需要在plugin中定义org.eclipse.ui.viewActions扩展
l <viewContribution>定义特定视图的一组菜单和动作;id属性是其唯一标识;targetID属性指定特定视图的id
l <action>定义动作的属性和动作类,主要包括:
Ø toolbarPath:目标视图工具条中的一个命名组,缺省是additions;类似的menubarPath属性对应于下拉菜单
Ø label:动作的标签
Ø tooltip:动作的工具提示文本
Ø class:实现org.eclipse.ui.IviewActionDelegate接口(视图动作代理)的类的全路径
Ø style:动作的风格,可以是push、radio或toggle
Ø state:当动作的风格是toggle,指定动作的初始状态
Ø id:动作的唯一标识
(3)创建LicenseKeyAction类
package com.xqtu.google.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
import com.xqtu.google.views.SearchView;
import com.xqtu.google.wizards.LicenseKeyWizard;
public class LicenseKeyAction implements IViewActionDelegate {
private SearchView searchView;
public void init(IViewPart view) {
this.searchView = (SearchView) view;
}
public void run(IAction action) {
LicenseKeyWizard wizard = new LicenseKeyWizard();
WizardDialog dialog = new WizardDialog(searchView.getViewSite()
.getShell(), wizard);
dialog.open();
}
public void selectionChanged(IAction action, ISelection selection) {
}
}
l LicenseKeyAction动作类实现IviewActionDelegate接口;在init方法中保存目标视图对象;在run方法中通过WizardDialog激活并打开License Key向导