Выбор TreeViewer и буфер обмена - PullRequest
2 голосов
/ 14 декабря 2011

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

1 Ответ

2 голосов
/ 14 декабря 2011

Как насчет:

cb.setContents(new Object[]{ objects },
    new Transfer[] { FileEntryTransfer.getInstance() });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...