4

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

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

4

1 回答 1

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();
}
于 2011-05-23T01:41:31.980 回答