Java 如何使用sourceviewer的undomanager

Java 如何使用sourceviewer的undomanager,java,eclipse-plugin,Java,Eclipse Plugin,我需要将撤消重做功能添加到我的源代码查看器中。下面是我的代码 公共类MyViewer扩展了SourceViewer{ public MyViewerfinal复合父级,最终整数样式{ 超级家长,空,样式; 最终字体Font=JFaceResources.getFontMyConstants.EDITOR\u TEXT\u Font; getTextWidget.setFontfont; IUndoManager undoManager=getUndoManager;//新文本视图undoMana

我需要将撤消重做功能添加到我的源代码查看器中。下面是我的代码

公共类MyViewer扩展了SourceViewer{ public MyViewerfinal复合父级,最终整数样式{ 超级家长,空,样式; 最终字体Font=JFaceResources.getFontMyConstants.EDITOR\u TEXT\u Font; getTextWidget.setFontfont; IUndoManager undoManager=getUndoManager;//新文本视图undoManager 25; //setUndoManagerRunDomainManager;//新文本视图UndoManager10; //连接这个; 如果撤消管理器!=null{ 撤销manager.reset; }否则{ undoManager=新文本视图UndoManager25; SetUndoManagerRunDomainManager; 连接这个; } } @凌驾 公共作废setDocumentfinal I文档{ ... } @凌驾 public void setHyperlinkPresenterfinal IHyperlinkPresenter hyperlinkPresenter引发非法状态异常{ ... } } 我添加了一个键绑定,如下图所示

“撤消重做”仍然不起作用。
我不确定键绑定是否错误,或者我的代码中缺少了什么,或者两者都有。请强调我的错误。

我从

添加此代码后,我能够恢复和重做工作。看起来不需要我在首选项页面中进行的附加键绑定。现在首选项页面如下所示

viewer.getTextWidget().addKeyListener(new KeyListener() {
 @Override
  public void keyReleased(KeyEvent e) {
       // TODO Auto-generated method stub
  }

 @Override
 public void keyPressed(KeyEvent e) {
   if( isUndoKeyPress( e )){
     viewer.doOperation(ITextOperationTarget.UNDO);
   }  else if( isRedoKeyPress( e )) {
      viewer.doOperation(ITextOperationTarget.REDO);
   }
 }

  private boolean isRedoKeyPress(KeyEvent e) {
     return (( e.stateMask & SWT.CONTROL ) > 0) && ((e.keyCode =='y' ) (e.keyCode == 'Y'));
   }

   private boolean isUndoKeyPress(KeyEvent e) {
          return (( e.stateMask & SWT.CONTROL) > 0 ) && ((e.keyCode == 'z' ) (e.keyCode =='Z'));
   }
});