麻豆传媒视频在线,国产91精品不卡视频,欧美jizz19性欧美,污视频网站在线观看,91涩漫在线观看,伊人发布在线,九色porny丨首页在线,福利视频一区,久久av网址,久久人人视频

當前位置:首頁 > 網(wǎng)站舊欄目 > 學習園地 > 設計軟件教程 > 關于多頁編輯器中不同Editor之間的Redo&Undo沖突的解決

關于多頁編輯器中不同Editor之間的Redo&Undo沖突的解決
2010-01-14 22:59:27  作者:  來源:
在我們的插件工具的開發(fā)過程中碰到一個問題,就是在編輯xml文件的時候,因為采用了EMF建模,導致在使用Eclipse Forms編輯節(jié)點和屬性與編輯事件的JavaScript腳本的Editor之間二者的Redo&Undo功能有一定的沖突,EMF的Redo&Undo不可用,當把JavaScript編輯器中TextViewer的UndoManager屏蔽了之后,EMF的Redo&Undo才能正常,開始跟蹤調(diào)試代碼,始終沒有找到問題的癥結所在,經(jīng)過幾天的摸索,最終找到了答案.
原來跟ContributorActionBar有關,在插件中,對于Editor(這里的Editor是指的多頁編輯器外面的那個總的Editor不是里面每一頁中的Editor)來說,我們必須為其指定一個ContributorActionBar,在該類的初始化方法:
void org.eclipse.ui.part.EditorActionBarContributor.init(IActionBars bars)
中需要為IActionBars添加各種Action,比如CopyAction, DeleteAction, CutAction這里面就包括RedoAction和UndoAction,例如在
void org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor.init(IActionBars actionBars)中就是這樣來做的:
java 代碼
 
  1. deleteAction = new DeleteAction(removeAllReferencesOnDelete());    
  2. deleteAction.setImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));   
  3. actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), deleteAction);   

上面的代碼將系統(tǒng)的Undo&Redo快捷鍵以及Eclipse菜單項Delete與deleteAction關聯(lián)起來了.
如果多頁編輯器里面使用了一個另外一個TextEditor,那么在這個TextEditor中對Redo&Undo Action會調(diào)用org.eclipse.ui.texteditor.AbstractTextEditor.createUndoRedoActions()方法,其中代碼如下:

java 代碼
 
  1. IUndoContext undoContext= getUndoContext();   
  2.         if (undoContext != null) {   
  3.             // Use actions provided by global undo/redo   
  4.                
  5.             // Create the undo action   
  6.             OperationHistoryActionHandler undoAction= new UndoActionHandler(getEditorSite(), undoContext);   
  7.             PlatformUI.getWorkbench().getHelpSystem().setHelp(undoAction, IAbstractTextEditorHelpContextIds.UNDO_ACTION);   
  8.             undoAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.UNDO);   
  9.             registerUndoRedoAction(ITextEditorActionConstants.UNDO, undoAction);   
  10.             ... ...   

在registerUndoRedoAction方法中:

java 代碼
 
  1. private void registerUndoRedoAction(String actionId, OperationHistoryActionHandler action) {   
  2.         IAction oldAction= getAction(actionId);   
  3.         if (oldAction instanceof OperationHistoryActionHandler)   
  4.             ((OperationHistoryActionHandler)oldAction).dispose();   
  5.   
  6.         setAction(actionId, action);   
  7.            
  8.         IActionBars actionBars= getEditorSite().getActionBars();   
  9.         if (actionBars != null)   
  10.             actionBars.setGlobalActionHandler(actionId, action);   
  11.     }   

會再一次的將指定的Action與全局ActionId關聯(lián)起來,這樣我們前面制定的Action就會被屏蔽掉,導致使用了TextEditor的UndoManager之后,EMF的模型編輯的Redo&Undo無法使用,找到了問題所在,至于解決辦法就好搞定了.

另:

研究Undo&Redo的入口在void org.eclipse.swt.custom.StyledText.modifyContent(Event event, boolean updateCaret)
然后是void org.eclipse.swt.custom.StyledTextContent.replaceTextRange(int start, int replaceLength, String text)
StyledTextContent這個類是用來鏈接TextViewer和Document之間的適配器,TextViewer默認的實現(xiàn)是DefaultDocumentAdapter,如果需要提供自己的DocumentAdapter的實現(xiàn)需要復寫 TextViewer 的 createDocumentAdapter() 方法,所有的操作會轉(zhuǎn)交給當前編輯的Document,對于UndoMananger來說,它會在每個TextViewer上所編輯的Document注冊一些監(jiān)聽器,用來監(jiān)聽Document的改變,當Document發(fā)生改變的時候,會觸發(fā)這些監(jiān)聽器,這些監(jiān)聽器,根據(jù)Document的改變生成一個一個的Command或者Operation并保存在StackCommand或者是History中,以便Undo的時候從StackCommand和History中取出來執(zhí)行


安徽新華電腦學校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
相關熱詞搜索:編輯器 沖突 之間
国产精品极品美女在线观看免费| 欧美性xxx| 首页亚洲中字| 日韩欧美国产一区二区| 尤物网在线观看| 午夜在线电影亚洲一区| 国产精品久久久久久麻豆一区软件| 国精产品999国精产品官网| 久久久久国内| 嫩草香蕉在线91一二三区| 91精品国产综合久久蜜臀| 香蕉久久网站| 国产精品久久一区二区三区不卡 | 日本天堂影院在线视频| 欧美高清视频www夜色资源网| 国产视频一区三区| 色三级在线观看| 日韩av在线播放资源| 日本sm残虐另类| www视频在线看| 国产亚洲欧洲高清一区| 国产一区二区三区免费| 国产精品原创| 国产精品h片在线播放| 这里只有精品丝袜| 欧美日韩国产高清一区二区三区 | 九九热这里只有精品6| 视频一区中文| 一区二区三区短视频| 亚洲国产私拍精品国模在线观看| 国产福利亚洲| 免费网站在线观看人| av在线这里只有精品| 国产一区二区三区综合| av中文字幕在线| 亚洲成色777777在线观看影院| 91蜜桃传媒精品久久久一区二区| 韩国日本一区| 99在线视频影院| 日韩亚洲欧美在线观看| 91在线国内视频| 国内一区二区三区| 国模私拍视频| 亚洲精品一区二区三区四区高清| 成人精品免费看| 成人在线一区二区三区| 美州a亚洲一视本频v色道| 亚洲视频中文| 在线中文字幕视频观看| 欧美三级电影在线观看| 精品制服美女久久| 99精品久久99久久久久| 要久久电视剧全集免费| 91国内在线视频| 九色中文视频| 久久婷婷国产麻豆91天堂| 日本不卡高清视频| av一区二区三区四区| 99久久精品费精品国产风间由美| 快播av资源| 男插女视频久久久| 91精品欧美久久久久久动漫 | 欧美激情精品久久久久| 精品视频www| 欧美日韩久久久久久| 午夜精品一区在线观看| 亚洲欧美日韩人成在线播放| 欧美日韩一区二区三区在线免费观看| 亚洲经典三级| 久久婷婷蜜乳一本欲蜜臀| 国产精品久久久久久久久免费高清 | 男男做性免费视频网| 欧美成人免费大片| 91精品欧美综合在线观看最新| 亚洲免费在线观看| 美女视频免费精品| 国产福利一区二区| 欧美日韩伦理在线免费| 国产丝袜美腿一区二区三区| 国产精品夜夜爽| 国产午夜精品一区二区三区欧美| 青青在线精品| 国产精品字幕| 视频一区二区三区不卡| 欧美13videosex性极品| 国产夫妻在线播放| 日韩69视频在线观看| 欧美黑人一区| 91av久久| 欧美日韩1区2区3区| 欧美少妇xxxx| 网曝91综合精品门事件在线| 亚洲综合日本| 国产成人精品免费一区二区| 国产亚洲成av人在线观看导航| 在线免费亚洲电影| 国语自产精品视频在线看| 俺来也官网欧美久久精品| 欧洲视频一区| 欧美丝袜一区二区三区| 精品国产免费一区二区三区香蕉| 国产专区精品视频| 欧美日韩高清影院| 亚洲视频专区在线| 国产网红在线观看| 欧美黑人巨大| 伊人久久大香线蕉av超碰演员| 国产精品zjzjzj在线观看| 亚洲人成小说网站色在线| 欧美男同性恋视频网站| 亚洲国产sm捆绑调教视频| 国产亚洲精品久久久久久777| 国产精品一卡二卡三卡| 户外露出一区二区三区| 电影91久久久| 欧美国产日韩电影| 午夜天堂精品久久久久| 日韩精品一区二区三区swag | 天天操天天干天天综合网| 久久精品精品电影网| 在线观看国产原创自拍视频| 日韩精品免费一区二区夜夜嗨| 激情五月播播久久久精品| 国产欧美一二三区| 中文字幕视频在线免费欧美日韩综合在线看 | 激情欧美日韩一区| 国产午夜精品一区二区三区视频| 91精品国产综合久久久久久久| 欧美中文字幕在线| 免费看av成人| 爽好多水快深点欧美视频| 久久久99久久精品女同性| 久久亚洲一区二区三区四区五区高| 久久av影院| 亚洲精品国产电影| 欧美激情一区二区三区成人 | 亚洲国产精品高清久久久| 在线国产中文字幕| 青青草成人影院| 一区二区三区资源| 欧美成人精品一区二区| 97婷婷大伊香蕉精品视频| 欧美三级网页| 国产精品免费网站| 免费av不卡在线观看| 欧美麻豆精品久久久久久| 日韩影视在线| 欧美大胆视频| 欧美精品在线免费观看| 一区二区网站| 久久久久99精品国产片| 欧美成人一区二区三区电影| 色婷婷国产精品久久包臀| 亚洲欧美日韩国产成人| 国产影视精品一区二区三区| 一区二区在线观看免费| 国产精品久久在线观看| 国产精品日本一区二区三区在线| www.日韩精品| 久久久国产视频91| 欧美成人免费| 欧美浪妇xxxx高跟鞋交| 国产精品99久久99久久久| 一区二区三区不卡在线观看 | 国产91色在线| 国产欧美高清视频在线| 精品女同一区二区三区在线播放| 精品一区二区精品| 美女视频在线免费| 欧美视频一区二| 国产精品啪视频| 日韩欧美亚洲一二三区| 亚洲欧美综合久久久久久v动漫| 成人性生活视频| 国产精品mm| 国产精品免费网站| 婷婷成人综合| 亚洲精品久久久久| 日韩深夜福利| 亚洲欧美日韩爽爽影院| 日韩激情图片| eeuss一区| 午夜精品久久久久久不卡8050 | 亚洲色图狂野欧美| 亚洲精品一区二区三区中文字幕| 日韩高清中文字幕| 这里只有精品在线| 免费看成一片| 2023国产精品自拍| 国产一区久久精品| 亚洲色图一区二区三区| 天堂久久午夜av| 精品亚洲一区二区三区在线观看 | 成人av在线播放| 欧美三级日韩三级国产三级| 亚洲国产不卡| 日本成人免费在线| 欧美在线影院一区二区| 国产va免费精品观看精品视频| 人人超碰在线|