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

首先讲一下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添加快捷键了

posted on 2006-12-02 22:30 小牛小虾 阅读(1521) 评论(1)  编辑  收藏

评论

# re: 如何给eclipse中的viewaction添加键盘快捷键(keybinding) 2006-12-03 01:37 商业计划书

不错,学习了,顶一个  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿(6)

随笔档案

文章档案

eclipse

搜索

最新评论

阅读排行榜

评论排行榜