2011-12-14 13 views
2

クリップボードに複数のオブジェクト(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() }); 
+0

はあなたが別のClipboardオブジェクトを使用してもらえますか?申し訳ありませんが、私はこれを経験していない、ちょうどそこにそれを投げる。 –

+0

オブジェクトごとにsetContents()を呼び出すには?そうではありません。 setContents()は、クリップボードにあるものを置き換えます。 – BloodyNobody

答えて

2

でそれをsovled:

cb.setContents(new Object[]{ objects }, 
    new Transfer[] { FileEntryTransfer.getInstance() }); 
+0

構文エラーですが、間違いなく私は正しい軌道に乗りました。 私はちょうどそれを解決しました cb.setContents(新しいオブジェクト[] {オブジェクト}、新しい転送[] {FileEntryTransfer.getInstance()}); – BloodyNobody

関連する問題