Как мне написать сценарий отмены операции в плагине Eclipse? - PullRequest
8 голосов
/ 03 августа 2011

Я создаю плагин для Eclipse и хочу использовать встроенное действие Eclipse «Отменить» (org.eclipse.core.commands.operations) всякий раз, когда пользователь нажимает кнопку отмены, связанную с плагином.в.

В идеале, это просто воспроизвести то, что происходит, когда вы нажимаете CTRL + Z, но у меня не работает имитация нажатий клавиш.

Я пробовал эти фрагменты кода:

Отмена, выполненная в рабочей среде:

IWorkbenchOperationSupport operationSupport = PlatformUI.getWorkbench().getOperationSupport();
IUndoContext context = operationSupport.getUndoContext();
IOperationHistory operationHistory = operationSupport.getOperationHistory();    
IStatus status = operationHistory.undo(context, null, null);

Отмена, выполненная в рабочей области:

IWorkbenchOperationSupport operationSupport = PlatformUI.getWorkbench().getOperationSupport();
IUndoContext context= (IUndoContext)ResourcesPlugin.getWorkspace().getAdapter(IUndoContext.class);
IOperationHistory operationHistory = operationSupport.getOperationHistory();
IStatus status = operationHistory.undo(context, null, null);

То, что я затем ищу, аналогично, это, но это не такработа:

Отмена, выполненная в редакторе / документе:

IWorkbenchOperationSupport operationSupport = PlatformUI.getWorkbench().getOperationSupport();
IEditorPart currentEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
IUndoContext context = (IUndoContext) currentEditor.getAdapter(IUndoContext.class);
IOperationHistory operationHistory = operationSupport.getOperationHistory();
IStatus status = operationHistory.undo(context, null, null);

Ответы [ 2 ]

1 голос
/ 09 августа 2013

Если у вашего редактора есть средство просмотра (например, TextViewer, SourceViewer, ProjectionViewer), то вы можете добавить действие отмены, которое вызывает операцию отмены для средства просмотра, например,

Action undoAction = new Action()
{
  @Override
  public void run()
  {
    getViewer().doOperation( ITextOperationTarget.UNDO );
  }
}; 
0 голосов
/ 04 октября 2012

Я не уверен, правильно ли я вас понял, но думаю, что это может быть что-то для вас: http://www.eclipsezone.com/eclipse/forums/t80577.html#92048329

Это немного устарело, но идея все еще неплоха.

...