Eclipse plugin Eclipse包资源管理器CTRL-C并使用CTRL-V在自己的视图中拖放?

Eclipse plugin Eclipse包资源管理器CTRL-C并使用CTRL-V在自己的视图中拖放?,eclipse-plugin,swt,copy-paste,package-explorer,Eclipse Plugin,Swt,Copy Paste,Package Explorer,我想在我自己的视图上执行一个粘贴操作,以添加一些类文件,这些类文件已被选中,并在Eclipse包资源管理器中使用Ctrl+C复制到剪贴板 我(很可能是天真的)尝试是在我的视图中添加一个拖放侦听器,不幸的是,如果我在视图上按Ctrl+V组合键,什么都不会发生。 我对GUI、SWT和Eclipse还很陌生,也许我遗漏了一些非常重要的东西 如何访问package Explorer剪贴板?或者如何将剪贴板中的内容“删除”到我的视图中?您需要为commandorg.eclipse.ui.edit.past

我想在我自己的视图上执行一个粘贴操作,以添加一些类文件,这些类文件已被选中,并在Eclipse包资源管理器中使用Ctrl+C复制到剪贴板

我(很可能是天真的)尝试是在我的视图中添加一个拖放侦听器,不幸的是,如果我在视图上按Ctrl+V组合键,什么都不会发生。 我对GUI、SWT和Eclipse还很陌生,也许我遗漏了一些非常重要的东西

如何访问package Explorer剪贴板?或者如何将剪贴板中的内容“删除”到我的视图中?

您需要为command
org.eclipse.ui.edit.paste定义扩展名(有关更多信息,请查看):


谢谢,我添加了一个ui.edit.paste处理程序和一个CTRL-V键绑定。我的“粘贴”处理程序类的执行方法得到执行,但我仍然无法确定在哪里可以访问包资源管理器的剪贴板?@user1091534 Eclipse命令使用系统剪贴板。我更新了我的答案来展示如何使用它。谢谢,现在基本上可以用了。我对包资源管理器中显示的.java文件和方法/类型/变量感兴趣。我不确定发生了什么,但如果我尝试选择2个java文件及其所有方法、类型等,我只会在剪贴板中收到其中一个文件(第一个选择的文件)。是否存在某种分离或迭代方法?数据必须在某个地方,如果选择并逐个复制,它将起作用。我正在使用JavaElementTransfer访问剪贴板内容,这不应该是我的选择中只有一个可用的原因?不确定您在那里出了什么问题。我测试了JavaElementTransfer和multi-selection,效果很好。顺便说一句,你不应该真正使用内部类。是否有访问JavaElement类型的替代方法?既然Eclipse将它们放在JavaElementTransfer类型中,为什么不使用它们呢?
  <handler
        class="com.example.PasteHandler"
        commandId="org.eclipse.ui.edit.paste">
     <activeWhen>
        <with variable="activePartId">
           <equals value="com.example.MyView"></equals>
        </with>
     </activeWhen>
  </handler>
Clipboard cb = new Clipboard(Display.getCurrent());
ResourceTransfer ft = ResourceTransfer.getInstance();
IResource[] classFiles = (IResource[]) cb.getContents(ft);
if (classFiles != null)
    for (IResource file : classFiles) {
        IJavaElement je = JavaCore.create(file);
        ...
    }