Можно ли поместить в буфер обмена более одного объекта (которые представляют TreeViewer
выборки)? Вот мой код Cut.
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
, а не массив объектов (это то, что я хочу).
Любые идеи?
[править] Благодаря vanaprogeja я разобрался с этим
cb.setContents(new Object[]{ objects }, new Transfer[] { FileEntryTransfer.getInstance() });