2012-08-28 52 views
0

在我當前的項目中,我正在與一個嵌入在MultiPageEditor中的TextEditor連接的jface ProjectionViewer的特定實現工作。 我的任務是實現對Ctrl-Z的自定義反應,並且從我得到的這個最好通過將IUndoHandler的特定實現附加到查看器來完成,所有這些都不成問題。Eclipse Jface投影查看器 - 對Ctrl-Z沒有反應

但是,在使用該TextEditor進行聚焦時按Ctrl-Z無法引起任何預期的反應。在上下文菜單中點擊「撤消鍵入」,其中顯示相關聯的組合鍵Ctrl-Z導致調用TextViewerUndoManager.DocumentUndoListener的通知方法,但在按下Ctrl-Z時未觸摸TextViewerUndoManager中的任何代碼行。

作爲這個問題的一個可能的來源,我認爲可能在擴展點中爲這個組合鍵定義了一個處理程序,因爲我之前曾試驗過這個機制,但plugin.xml沒有定義任何鍵組合除了與特定的上下文菜單關聯的處理程序以外的其他處理程序。

可能值得注意的是,Ctrl-C和Ctrl-V按預期工作。

我需要找出按Ctrl-Z時會發生什麼,以及爲什麼沒有任何東西傳遞到TextViewerUndoManager

如果有人能夠描述eclipse如何正常處理這些組合鍵並確定哪個命令是合適的,那將會非常有幫助。預先

由於

回答

0

CNTRL + Z-撤消使用OperationHistorySupport處理。看看UndoActionHandler課。

綁定支持使用keydown事件過濾器使用WorkbenchKeyboard(所有keydown事件首先使用此類過濾,這是如何實現BindingService)實現的。這將找出鍵綁定的相應命令。

DocumentUndoManager.UndoableTextChange是處理撤消操作的地方。

+0

關於鍵綁定,它似乎是一箇舊的擴展仍然覆蓋它。 UndoActionHandler的提示做到了。非常感謝你。 –