TreeViewer选择和剪贴板 [英] TreeViewer selections and the Clipboard

查看:60
本文介绍了TreeViewer选择和剪贴板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在剪贴板中放置多个对象(代表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选择和剪贴板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆