RCP II:扩展通用工作台(5)

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、radiotoggle

Ø         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向导

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值