【发布时间】:2011-12-14 18:03:15
【问题描述】:
是否可以将多个对象(代表TreeViewer 选择)放入剪贴板?这是我的剪辑代码。
static public void Cut(EssentialData dataInst)
{
IStructuredSelection selection = (IStructuredSelection)dataInst.getTreeViewer().getSelection();
if(selection == null)
{
System.err.println("selection received was null");
return;
}
Object[] objects = selection.toArray();
//because setContents requires a Transfer object for every object sent
List<Transfer> typesList = new ArrayList<>();
for(int i = 0; i < objects.length; i++)
typesList.add(FileEntryTransfer.getInstance());
final Clipboard cb = new Clipboard(Display.getCurrent());
cb.setContents(objects, typesList.toArray(new Transfer[]{}));
cb.dispose();
for(int i = 0; i < objects.length; i++)
dataInst.getFileManager().removeEntry((FileEntry)objects[i]);
dataInst.getTreeViewer().refresh(false);
}
我要做的是将多个选择(FileEntry 的实例)放入剪贴板。
FileEntryTransfer 是我的自定义 ByteArrayTransfer 类,我也用于 DND。它运行良好,但我注意到 setContents() 实际上只向它发送一个 FileEntry 对象,而不是一组对象(这是我想要的)。
有什么想法吗?
[edit]感谢 vanaprogeja,我解决了它
cb.setContents(new Object[]{ objects }, new Transfer[] { FileEntryTransfer.getInstance() });
【问题讨论】:
-
您可以使用单独的剪贴板对象吗?对不起,我没有这方面的经验,只是把它扔在那里。
-
为每个对象调用 setContents()?不,它不是那样工作的; setContents() 替换剪贴板中的任何内容。