2
是否可以将多个对象(代表TreeViewer
选项)放入剪贴板?这是我的Cut代码。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
类,我也用于免打扰。它运作良好,但我注意到setContents()
实际上只发送一个FileEntry
对象,而不是对象数组(这正是我想要的)。
任何想法?
[编辑]感谢vanaprogeja,我
cb.setContents(new Object[]{ objects }, new Transfer[] { FileEntryTransfer.getInstance() });
你不能用一个单独的剪贴板对象?对不起,我没有经历过这个,只是把它扔在那里。 – 2011-12-14 02:02:37
要为每个对象调用setContents()?不,那不行, setContents()替换剪贴板中的任何内容。 – BloodyNobody 2011-12-14 05:36:00