是否可以在剪贴板中放置多个对象(代表TreeViewer选择)?这是我的剪切代码.
Is it possible to place more than one object (which represent TreeViewer selections) into the clipboard? Here's my Cut code.
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的实例)放置到剪贴板中.
What I'm trying to do is place multiple selections, which are instances of FileEntry, into the clipboard.
FileEntryTransfer是我的自定义ByteArrayTransfer类,我也将其用于DND.它运作良好,但我注意到setContents()实际上只向它发送一个FileEntry对象,而不是对象数组(这正是我想要的).
FileEntryTransfer is my custom ByteArrayTransfer class that I also use for DND. It works well, but I noticed that setContents() actually sends it only one FileEntry object as opposed to an array of objects (which is what I want).
有什么想法吗?
[edit]感谢vanaprogeja,我用
[edit]Thanks to vanaprogeja, I sovled it with
cb.setContents(new Object[]{ objects }, new Transfer[] { FileEntryTransfer.getInstance() });推荐答案
怎么样:
cb.setContents(new Object[]{ objects }, new Transfer[] { FileEntryTransfer.getInstance() });更多推荐
TreeViewer选择和剪贴板
发布评论