クリップボードに複数のオブジェクト(TreeViewer
を表す)を配置することは可能ですか?ここに私のカットコードがあります。私がやろうとしている何TreeViewerの選択とクリップボード
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
は私がDNDにも使用しているByteArrayTransfer
クラスです。それはうまく動作しますが、私はsetContents()
が実際にオブジェクトの配列(これは私が欲しいものです)とは対照的に1つだけFileEntry
オブジェクトを送信することに気付きました。
アイデア?
[編集] vanaprogejaのおかげで、私がどのように
cb.setContents(new Object[]{ objects }, new Transfer[] { FileEntryTransfer.getInstance() });
はあなたが別のClipboardオブジェクトを使用してもらえますか?申し訳ありませんが、私はこれを経験していない、ちょうどそこにそれを投げる。 –
オブジェクトごとにsetContents()を呼び出すには?そうではありません。 setContents()は、クリップボードにあるものを置き換えます。 – BloodyNobody