我想在我自己的视图上执行粘贴操作,以添加一些已选择并在 Eclipse 包资源管理器中使用Ctrl+复制到剪贴板的类文件。C
我(很可能是幼稚的)尝试是在我的视图中添加一个下拉监听器,不幸的是,如果我按下Ctrl+V并专注于我的视图,什么都不会发生。我对 GUI、SWT 和 Eclipse 很陌生,也许我错过了一些非常重要的东西......
如何访问包资源管理器剪贴板?或者我怎样才能让剪贴板中的东西被“拖放”到我的视图中?
我想在我自己的视图上执行粘贴操作,以添加一些已选择并在 Eclipse 包资源管理器中使用Ctrl+复制到剪贴板的类文件。C
我(很可能是幼稚的)尝试是在我的视图中添加一个下拉监听器,不幸的是,如果我按下Ctrl+V并专注于我的视图,什么都不会发生。我对 GUI、SWT 和 Eclipse 很陌生,也许我错过了一些非常重要的东西......
如何访问包资源管理器剪贴板?或者我怎样才能让剪贴板中的东西被“拖放”到我的视图中?
您需要为命令定义处理程序扩展org.eclipse.ui.edit.paste
(查看平台命令框架以获取更多信息):
<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 对象。在您的情况下,我想最好的选择是使用JavaCoreResourceTransfer
使用和创建 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);
...
}