【问题标题】:Eclipse Package Explorer CTRL-C and drop in own view with CTRL-V?Eclipse Package Explorer CTRL-C 并使用 CTRL-V 放入自己的视图?
【发布时间】:2011-12-10 18:44:16
【问题描述】:

我想在我自己的视图上执行粘贴操作,以添加一些已在 Eclipse 中使用 Ctrl+C 选择并复制到剪贴板的类文件包浏览器。

我(很可能是幼稚的)尝试是在我的视图中添加一个放置侦听器,不幸的是,如果我按下 Ctrl+V 并专注于我的视图,什么也不会发生。 我对 GUI、SWT 和 Eclipse 很陌生,也许我错过了一些非常重要的东西......

如何访问包资源管理器剪贴板?或者我怎样才能使剪贴板中的内容“拖放”到我的视图中?

【问题讨论】:

    标签: eclipse-plugin swt copy-paste package-explorer


    【解决方案1】:

    您需要为命令org.eclipse.ui.edit.paste 定义Handler 扩展名(查看Platform Command Framework 了解更多信息):

      <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 类访问系统剪贴板。剪贴板的内容可能是不同的类型,因此您需要检查在给定时间是否支持您期望的类型。 ByteArrayTransfer 的子类用于将剪贴板内容转换为合适的 Java 对象。在您的情况下,我想最好的选择是使用ResourceTransfer 并使用JavaCore 创建Java 元素:

    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);
            ...
        }
    

    【讨论】:

    • 谢谢,我为 CTRL-V 添加了一个 ui.edit.paste 处理程序和一个键绑定。我的“粘贴”处理程序类的执行方法被执行,但我仍然无法确定在哪里可以访问包资源管理器的剪贴板?
    • @user1091534 Eclipse 命令使用系统剪贴板。我更新了我的答案以展示如何使用它。
    • 谢谢它现在基本上可以工作了。我对包资源管理器中显示的 .java 文件和方法/类型/变量感兴趣。我不确定发生了什么,但是如果我尝试选择 2 个 java 文件及其所有方法、类型等。我只会在剪贴板中收到其中一个(第一个选择的)。是否有某种分离或迭代方法?数据必须在某个地方,如果一个接一个地选择和复制它就可以工作。我正在使用 JavaElementTransfer 访问剪贴板内容,这不应该是我的选择只有一个可用的原因?
    • 不确定您那里出了什么问题。我测试了 JavaElementTransfer 并且多选工作正常。顺便说一句,你不应该真的使用内部类。
    • 嗯,这很奇怪:/。是否有访问 JavaElement-Types 的替代方法?既然 Eclipse 将它们放在 JavaElementTransfer-Type 中,为什么不使用它们呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 2012-08-29
    • 1970-01-01
    • 2018-09-29
    • 2021-12-06
    • 2011-06-04
    相关资源
    最近更新 更多