]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.ui/src/org/simantics/ui/dnd/MultiTransferable.java
Sync git svn branch with SVN repository r33269.
[simantics/platform.git] / bundles / org.simantics.ui / src / org / simantics / ui / dnd / MultiTransferable.java
1 package org.simantics.ui.dnd;\r
2 \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.Collection;\r
10 import java.util.HashMap;\r
11 import java.util.Map;\r
12 \r
13 public class MultiTransferable implements Transferable, ClipboardOwner {\r
14         \r
15         Map<DataFlavor, Transferable> transferables = new HashMap<>();\r
16         \r
17         public MultiTransferable(Transferable ... tr) {\r
18                 for(Transferable t : tr) {\r
19                         for(DataFlavor f : t.getTransferDataFlavors()) {\r
20                                 transferables.put(f, t);\r
21                         }\r
22                 }\r
23         }\r
24 \r
25         public MultiTransferable(Collection<Transferable> tr) {\r
26                 for(Transferable t : tr) {\r
27                         for(DataFlavor f : t.getTransferDataFlavors()) {\r
28                                 transferables.put(f, t);\r
29                         }\r
30                 }\r
31         }\r
32 \r
33         @Override\r
34         public void lostOwnership(Clipboard arg0, Transferable arg1) {\r
35                 for(Transferable t : transferables.values())\r
36                         if(t instanceof ClipboardOwner) ((ClipboardOwner) t).lostOwnership(arg0, arg1);\r
37         }\r
38 \r
39         @Override\r
40         public Object getTransferData(DataFlavor arg0) throws UnsupportedFlavorException, IOException {\r
41                 Transferable t = transferables.get(arg0);\r
42                 if(t == null) return t;\r
43                 return t.getTransferData(arg0);\r
44         }\r
45 \r
46         @Override\r
47         public DataFlavor[] getTransferDataFlavors() {\r
48                 return transferables.keySet().toArray(new DataFlavor[transferables.size()]);\r
49         }\r
50 \r
51         @Override\r
52         public boolean isDataFlavorSupported(DataFlavor arg0) {\r
53                 return transferables.containsKey(arg0);\r
54         }\r
55 \r
56         @Override\r
57         public String toString() {\r
58                 return "MultiTransferable " + transferables.toString();\r
59         }\r
60 \r
61 }\r