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

          評論

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

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


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


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

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆檔案

          文章檔案

          eclipse

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 正镶白旗| 含山县| 陆河县| 普定县| 横峰县| 诏安县| 南漳县| 尤溪县| 玉门市| 平江县| 三穗县| 托里县| 玛纳斯县| 柳林县| 平乡县| 九龙城区| 五寨县| 财经| 漾濞| 芒康县| 垦利县| 杨浦区| 阳泉市| 威远县| 景谷| 随州市| 大同市| 于都县| 四子王旗| 莱阳市| 嘉黎县| 张家口市| 怀集县| 循化| 涟水县| 原阳县| 平利县| 剑川县| 英超| 安康市| 聂荣县|