Eclipse Jface Projection Viewer - 对Ctrl-Z没有反应

时间:2012-08-28 14:07:03

标签: eclipse-plugin text-editor jface undo

在我目前的项目中,我正在使用附加到嵌套在TextEditor中的MultiPageEditor的jface ProjectionViewer的特定实现。 我现在的任务是实现对Ctrl-Z的自定义反应,从我得到的结果来看,最好通过将IUndoHandler的特定实现附加到Viewer,所有这些都没有问题。

但是,在使用TextEditor聚焦时按Ctrl-Z会导致任何预期的反应。在上下文菜单中单击“撤消键入”时,显示相关的组合键Ctrl-Z会导致TextViewerUndoManager.DocumentUndoListener的通知方法被调用,{{1}中没有代码行按Ctrl-Z时触摸。}

作为这个问题的一个可能来源,我假设可能在扩展点中为此组合键定义了一个处理程序,因为我之前已经尝试过这种机制,但是plugin.xml没有定义任何键组合也没有撤消处理程序与一个与不同小部件的特殊上下文菜单相关联的处理程序。

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

我需要了解按下Ctrl-Z时会发生什么,以及为什么没有任何内容传递给TextViewerUndoManager

如果有人能够描述eclipse如何正常处理这些组合键并决定哪个命令是合适的,那将会非常有用。

提前致谢

1 个答案:

答案 0 :(得分:0)

使用OperationHistorySupport处理Cntrl + Z-撤消。看看UndoActionHandler班。

使用WorkbenchKeyboard使用keydown事件过滤器实现绑定支持(所有keydown事件首先使用此类进行过滤。这就是BindingService的实现方式)。这将找出键绑定的对应命令。

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