如何給eclipse中的viewaction添加鍵盤快捷鍵(keybinding)

          首先講一下eclipse中給Action中添加快捷鍵的一般方法
          ?????? 要添加快捷鍵,必須要擴展eclipse的org.eclipse.ui.command和org.eclipse.ui.binding這兩個extension.然后Action和command關聯(lián),command又和一個binding關聯(lián)起來,這樣就間接的使action和binding有了關聯(lián).有人會問,這樣做是不是太麻煩了,我直接把action和binding關聯(lián)起來不就行了?最好是有個方法,比如action.setKeybind("Ctrl+A").其實eclipse這樣做是涉及到設計模式的問題.如果用這種"簡單"方法,你以后如果想要改actioon的快捷鍵就要去改action的源碼了,是一種緊耦合的關系.而eclipse的處理方式削弱了這種耦合,你如果要改快捷鍵,改binding就可以了,你還可以讓一個action在不同的perspective,甚至是不同的view中使用不同的快捷鍵.讓一個action對應多個快捷鍵等等.
          ?????? ?command和binding的關聯(lián)在你擴展這兩個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 小牛小蝦 閱讀(1527) 評論(1)  編輯  收藏

          評論

          # re: 如何給eclipse中的viewaction添加鍵盤快捷鍵(keybinding) 2006-12-03 01:37 商業(yè)計劃書

          不錯,學習了,頂一個  回復  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          <2006年12月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統(tǒng)計

          常用鏈接

          留言簿(6)

          隨筆檔案

          文章檔案

          eclipse

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 盖州市| 普兰县| 寿阳县| 阿荣旗| 珲春市| 安新县| 浪卡子县| 玉树县| 许昌县| 大足县| 临城县| 林州市| 漾濞| 迁西县| 红安县| 河间市| 屏边| 平安县| 革吉县| 叙永县| 天全县| 米易县| 哈尔滨市| 鄂托克前旗| 同德县| 五指山市| 尼木县| 稻城县| 错那县| 白河县| 兰州市| 津市市| 安庆市| 元氏县| 仲巴县| 普陀区| 钦州市| 翼城县| 凤凰县| 疏勒县| 略阳县|