在使用Eclipse Forms Editor對EMF model進行編輯的時候,由于editor的contributor是繼承EditingDomainActionBarContributor,因此Cut, Copy,Paste都是使用EMF的Cut,Copy和Paste,這樣在Editor中進行的所有操作都將轉換為對EMF model的操作,對于Viewer上的節點來說當然沒有什么問題,但是如果是使用Text來進行文本編輯的時候,我們希望執行的是Text中文本的Cut,Copy和Paste,這里就需要將EMF的Action重定向到系統的Global Action,開始試了各種辦法,都沒有成功,后來google了一下,發現不僅我碰到了這個問題,還有很多人也碰到了同樣的問題:http://dev.eclipse.org/newslists/news.eclipse.platform/msg53441.html, 同時也找到了相關的解決辦法:http://www.eclipsezone.com/eclipse/forums/t62058.rhtml
不過我按照這個上面的做法稍微調整了一下圓滿解決了我的問題。
從上面的解決方法中我們發現了TextActionHandler這樣一個類,它就是用來將ActionBarContributor定義的各種action在遇到指定的text時重定向到系統的global action。用法分四部分:
第一部分就是在初始化ActionBarContributor的時候創建該對象:
- textActionHandler = new TextActionHandler(actionBars);
緊接著就是將ActionBarContributor中創建的各種action先保存在textActionHandler,這樣在由TextActionHandler的global action撤回的時候能找到對應的各種action:
- textActionHandler.setCopyAction(copyAction);
- textActionHandler.setCutAction(cutAction);
- textActionHandler.setDeleteAction(deleteAction);
- textActionHandler.setPasteAction(pasteAction);
告訴TextActionHandler哪個Text的action需要進行重定向,即那個Text Widget獲得焦點的時候:
- textActionHandler.addText(text);
告訴TextActionHandler哪個Text的action需要撤回,即那個Text Widget失去焦點的時候:
- textActionHandler.removeText(text);
安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢】