1 package org.simantics.ui.dnd;
\r
3 import java.awt.datatransfer.Clipboard;
\r
4 import java.awt.datatransfer.ClipboardOwner;
\r
5 import java.awt.datatransfer.DataFlavor;
\r
6 import java.awt.datatransfer.Transferable;
\r
7 import java.awt.datatransfer.UnsupportedFlavorException;
\r
8 import java.io.IOException;
\r
9 import java.util.HashMap;
\r
10 import java.util.Map;
\r
12 public class MultiTransferable implements Transferable, ClipboardOwner {
\r
14 Map<DataFlavor, Transferable> transferables = new HashMap<>();
\r
16 public MultiTransferable(Transferable ... tr) {
\r
17 for(Transferable t : tr) {
\r
18 for(DataFlavor f : t.getTransferDataFlavors()) {
\r
19 transferables.put(f, t);
\r
25 public void lostOwnership(Clipboard arg0, Transferable arg1) {
\r
26 for(Transferable t : transferables.values())
\r
27 if(t instanceof ClipboardOwner) ((ClipboardOwner) t).lostOwnership(arg0, arg1);
\r
31 public Object getTransferData(DataFlavor arg0) throws UnsupportedFlavorException, IOException {
\r
32 Transferable t = transferables.get(arg0);
\r
33 if(t == null) return t;
\r
34 return t.getTransferData(arg0);
\r
38 public DataFlavor[] getTransferDataFlavors() {
\r
39 return transferables.keySet().toArray(new DataFlavor[transferables.size()]);
\r
43 public boolean isDataFlavorSupported(DataFlavor arg0) {
\r
44 return transferables.containsKey(arg0);
\r