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