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

时间:2011-05-21 13:11:14

标签: eclipse editor copy rcp cut

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

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

1 个答案:

答案 0 :(得分:7)

如果您需要在编辑器或视图中复制(或任何命令)的特定行为,则可以为其激活处理程序。通常使用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>

然后在您的处理程序中,您将获得活动部分并在其上调用您的副本实现。例如:

IWorkbenchPart part = HandlerUtil.getActivePart(event);
if (part instanceof MyEditor) {
    ((MyEditor)part).copy();
}