在自定义RCP应用程序中使用org.eclipse剪切/复制/粘贴

在自定义RCP应用程序中使用org.eclipse剪切/复制/粘贴,eclipse,editor,copy,rcp,cut,Eclipse,Editor,Copy,Rcp,Cut,我正在开发一个RCP应用程序,我需要在这个应用程序中剪切/复制/粘贴。由于eclipse(org.eclipse.ui.edit.copy,…)已经提供了一些命令,因此我想在编辑器中使用它们(例如,我已经将它们添加到工具栏中)。 我玩了一点,但我不知道如何对复制/粘贴命令做出反应。例如,如果某个内容被复制或粘贴,如何在编辑器中获得通知 是否有一种简单的方法来使用Save命令之类的命令。在这里,我只需要实现ISaveablePart,然后调用doSave()或doSaveAs()方法……我真的很喜

我正在开发一个RCP应用程序,我需要在这个应用程序中剪切/复制/粘贴。由于eclipse(org.eclipse.ui.edit.copy,…)已经提供了一些命令,因此我想在编辑器中使用它们(例如,我已经将它们添加到工具栏中)。 我玩了一点,但我不知道如何对复制/粘贴命令做出反应。例如,如果某个内容被复制或粘贴,如何在编辑器中获得通知


是否有一种简单的方法来使用Save命令之类的命令。在这里,我只需要实现ISaveablePart,然后调用doSave()或doSaveAs()方法……我真的很喜欢这样,但我没有找到ICopyablePart,。。。接口;)

如果您需要在编辑器或视图中复制特定行为(或任何命令),则需要为其激活处理程序。通常在
createPartControl(Composite)
方法中:

IHandlerService serv = (IHandlerService) getSite().getService(IHandlerService.class);
MyCopyHandler cp = new MyCopyHandler(this);
serv.activateHandler(org.eclipse.ui.IWorkbenchCommandConstants.EDIT_COPY, cp);
另一种常见的方法是通过plugin.xml提供处理程序:

<handler commandId="org.eclipse.ui.edit.copy"
         handler="com.example.app.MyCopyHandler">
   <activeWhen>
      <with variable="activePartId">
         <equals value="com.example.app.MyEditorId"/>
      </with>
   </activeWhen>
</handler>

嗨,保罗,我试了两种方法。但我总是会遇到这样的异常:“org.eclipse.ui.edit.copy命令没有可执行的处理程序。”你知道我为什么会遇到这种情况吗?嗨,保罗,我已经解决了这个问题。如果isHandled()返回false,则会发生此错误。。。返回true将调用execute方法…尝试将AbstractHandler子类化,而不是实现IHandler。在大多数情况下,它都能正常工作。
IWorkbenchPart part = HandlerUtil.getActivePart(event);
if (part instanceof MyEditor) {
    ((MyEditor)part).copy();
}