1 package org.simantics.ui.dnd;
3 import java.awt.datatransfer.Clipboard;
4 import java.awt.datatransfer.ClipboardOwner;
5 import java.awt.datatransfer.DataFlavor;
6 import java.awt.datatransfer.Transferable;
7 import java.awt.datatransfer.UnsupportedFlavorException;
8 import java.io.IOException;
9 import java.util.Collection;
10 import java.util.HashMap;
13 public class MultiTransferable implements Transferable, ClipboardOwner {
15 Map<DataFlavor, Transferable> transferables = new HashMap<>();
17 public MultiTransferable(Transferable ... tr) {
18 for(Transferable t : tr) {
19 for(DataFlavor f : t.getTransferDataFlavors()) {
20 transferables.put(f, t);
25 public MultiTransferable(Collection<Transferable> tr) {
26 for(Transferable t : tr) {
27 for(DataFlavor f : t.getTransferDataFlavors()) {
28 transferables.put(f, t);
34 public void lostOwnership(Clipboard arg0, Transferable arg1) {
35 for(Transferable t : transferables.values())
36 if(t instanceof ClipboardOwner) ((ClipboardOwner) t).lostOwnership(arg0, arg1);
40 public Object getTransferData(DataFlavor arg0) throws UnsupportedFlavorException, IOException {
41 Transferable t = transferables.get(arg0);
42 if(t == null) return t;
43 return t.getTransferData(arg0);
47 public DataFlavor[] getTransferDataFlavors() {
48 return transferables.keySet().toArray(new DataFlavor[transferables.size()]);
52 public boolean isDataFlavorSupported(DataFlavor arg0) {
53 return transferables.containsKey(arg0);
57 public String toString() {
58 return "MultiTransferable " + transferables.toString();