【问题标题】:Use org.eclipse cut/copy/paste in custom RCP application在自定义 RCP 应用程序中使用 org.eclipse 剪切/复制/粘贴
【发布时间】:2011-08-30 05:33:14
【问题描述】:

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

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

【问题讨论】:

    标签: eclipse editor copy rcp cut


    【解决方案1】:

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

    【讨论】:

    • 嗨,保罗,我两种方式都试过了。但我总是得到这个异常:“没有为命令 org.eclipse.ui.edit.copy 执行的处理程序。”你知道我为什么会得到这个吗?
    • 嗨,保罗,我已经解决了这个问题。如果 isHandled() 返回 false 就会发生这种情况...返回 true 会调用 execute 方法...
    • 尝试继承 AbstractHandler 而不是实现 IHandler。在大多数情况下,它会正常运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    相关资源
    最近更新 更多