eclipse的菜单栏undo和redo如何关联到自定义的view中
时间: 2024-02-06 19:08:56 浏览: 61
要实现在自定义视图中使用Undo和Redo菜单项,您需要执行以下步骤:
1.创建Command对象来执行撤消和重做操作。Command对象应该实现org.eclipse.core.commands.Command接口,并且应该在执行撤消和重做操作时更新视图。
2.将Command对象注册到CommandManager中。这可以通过使用org.eclipse.ui.handlers.IHandlerService接口来完成。这个接口提供了一个方法来注册Command对象,该方法接受一个Command对象和一个字符串ID。
3.在视图的createPartControl()方法中,获取IWorkbenchCommandSupport对象,并使用registerCommandContribution()方法将Command对象添加到Undo和Redo菜单项中。
以下是一个示例代码片段来实现上述步骤:
```java
public class MyView extends ViewPart {
private Command undoCommand;
private Command redoCommand;
public void createPartControl(Composite parent) {
// 获取IWorkbenchCommandSupport对象
IWorkbenchPartSite site = getSite();
IWorkbenchCommandSupport commandSupport = site.getService(IWorkbenchCommandSupport.class);
// 创建Command对象
undoCommand = new MyUndoCommand();
redoCommand = new MyRedoCommand();
// 注册Command对象到CommandManager中
IHandlerService handlerService = site.getService(IHandlerService.class);
handlerService.activateHandler(undoCommand.getId(), new UndoHandler(commandSupport));
handlerService.activateHandler(redoCommand.getId(), new RedoHandler(commandSupport));
// 添加Command对象到Undo和Redo菜单项中
commandSupport.getCommandManager().registerCommandContribution(undoCommand, "org.eclipse.ui.edit.undo");
commandSupport.getCommandManager().registerCommandContribution(redoCommand, "org.eclipse.ui.edit.redo");
}
// 创建Command对象的代码
private class MyUndoCommand extends AbstractHandler implements Command {
// 实现Command接口的代码
}
private class MyRedoCommand extends AbstractHandler implements Command {
// 实现Command接口的代码
}
// 处理撤消和重做操作的代码
private class UndoHandler extends AbstractHandler {
// 实现处理撤消操作的代码
}
private class RedoHandler extends AbstractHandler {
// 实现处理重做操作的代码
}
}
```
在这个示例中,我们创建了一个MyUndoCommand对象和一个MyRedoCommand对象来执行撤消和重做操作。这些对象都实现了Command接口,并在执行撤消和重做操作时更新视图。
我们将Command对象注册到CommandManager中,并将它们添加到Undo和Redo菜单项中。
最后,我们还实现了UndoHandler和RedoHandler类来处理撤消和重做操作。这些处理程序类使用IWorkbenchCommandSupport对象来执行撤消和重做操作,并更新视图。
希望这可以帮助您实现在自定义视图中使用Undo和Redo菜单项。
阅读全文