如何給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 小牛小蝦 閱讀(1526) 評論(1)  編輯  收藏

          評論

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

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


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


          網站導航:
           
          <2006年12月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆檔案

          文章檔案

          eclipse

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 博爱县| 秭归县| 洪泽县| 平昌县| 兴安县| 芒康县| 长兴县| 犍为县| 松潘县| 巴南区| 那曲县| 堆龙德庆县| 宿迁市| 始兴县| 汶上县| 河源市| 曲水县| 绥江县| 茌平县| 肥西县| 定州市| 电白县| 凤城市| 岚皋县| 长沙市| 伊宁县| 汶上县| 同德县| 大丰市| 沅江市| 宽甸| 巴林右旗| 清镇市| 会理县| 青海省| 丰原市| 临夏县| 西和县| 平昌县| 丰都县| 临泽县|