Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 如何给eclipse中的viewaction添加键盘快捷键(keybinding)
【标  题】:如何给eclipse中的viewaction添加键盘快捷键(keybinding)
【关键字】:eclipse,viewaction,keybinding
【来  源】:http://www.blogjava.net/yes1983/archive/2006/12/02/85098.html

如何给eclipse中的viewaction添加键盘快捷键(keybinding)

Your Ad Here 首先讲一下eclipse中给Action中添加快捷键的一般方法
?????? 要添加快捷键,必须要扩展eclipse的org.eclipse.ui.command和org.eclipse.ui.binding这两个extension.然后Action和command关联,command又和一个binding关联起来,这样就间接的使action和binding有了关联.有人会问,这样做是不是太麻烦了,我直接把action和binding关联起来不就行了?最好是有个方法,比如action.setKeybind("Ctrl+A").其实eclipse这样做是涉及到设计模式的问题.如果用这种"简单"方法,你以后如果想要改actioon的快捷键就要去改action的源码了,是一种紧耦合的关系.而eclipse的处理方式削弱了这种耦合,你如果要改快捷键,改binding就可以了,你还可以让一个action在不同的perspective,甚至是不同的view中使用不同的快捷键.让一个action对应多个快捷键等等.
?????? ?command和binding的关联在你扩展这两个extension的时候就可以建立了,下面看看怎么让一个action对应一个command
??????? 在你的插件中添加Action有两种方法:1.通过plugin.xml扩展extension.2.直接在代码中code. 如果是用第一种方法,在Action的设置中会有definitionId这一项,你把它填上你自己写的command的Id就好了;如果是第二种方法,那需要在你的定义action的代码中加上两句:
????????????????? yourAction.setActionDefinitionId("commandId");
????????????????? getViewSite().getKeyBindingService().registerAction(yourAction);
这两种方法是等效的
?? 但要给viewaction添加快捷键以上两种方法都有点问题.viewaction在plugin.xml文件中是没有definitionId这一项的,所以你没办法设置;如果你是program方法,由于viewaction不是继承自Action类的,所以你也不能用setActionDefinitionId这个方法.聪明的你可能会想到了,那我让viewaction继承Action不就行了:
???? public class ViewAction extends Action? implements IViewActionDelegate //红色部分是自己添加的extends
?{???? ...
????? public void init(IViewPart view) {
???????????????? this.view=view;
?????????????? this.setActionDefinitionId("ViewAction.command1");
??????????? view.getViewSite().getKeyBindingService().registerAction(this);
?????????}??????
}
这个方法理论上可以,但可惜也仅仅是理论上行得通而已.具体是为什么我也不知道,如果有大牛告知小弟不胜感激.我后来的解决办法是这样的:在viewaction的init方法中加入以下代码段
???? this.view=view;
??IContributionItem item= view.getViewSite().getActionBars().getToolBarManager().find("ViewAction.action1");
??IAction action=((ActionContributionItem)item).getAction();
??action.setActionDefinitionId("ViewAction.command1");
??view.getSite().getKeyBindingService().registerAction(action);
这样就可以给viewaction添加快捷键了
使用Asp.net Ajax beta2.0及Anthem.net分别结合js实现仿MSN弹出信息提示窗的示例!(已更新修正源码):【上一篇】
Nutch插件加载分析:【下一篇】
【相关文章】
  • 使用Eclipse RCP进行桌面程序开发(五):2D绘图
  • ubuntu eclipse 的乱码问题。
  • 解决jBPM Designer插件与MyEclipse插件冲突的办法
  • eclipse插件模型
  • Eclipse+MyEclipse+tomcat图解安装JSP
  • 配置eclipse 3.2 +lomboz 3.2+eclipse 3.2汉化包
  • Eclipse插件开发之建立Console视图并在其中显示自定义信息
  • IBM 捐赠Eclipse 3.2.1 多国语言包, 将Eclipse立即汉化
  • 使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件
  • Eclipse 可视化定制开发Compiere
  • 【随机文章】
  • 防止用户非法登录的方法
  • 逛“IT大卖场”有感
  • [Share]DB2返回SQLCODE -818 错误
  • 浅谈J2EE中的Service(一)
  • UltraEdit支持python高亮显示的wordfile文件
  • [原创]解决VirtualPC无法安装附加模块以至无法实现DOS共享文件夹的问题
  • 非it企业中的IT部门,存在是否必要?
  • xen中虚拟网卡报文丢失原因分析
  • 五种“网络钓鱼”实例解析及防范
  • That's Why (You Go Away)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.