Можно ли поместить в буфер обмена несколько объектов (которые представляют 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() });