1 package de.desy.acop.video;
2
3 import java.awt.datatransfer.DataFlavor;
4 import java.awt.datatransfer.Transferable;
5 import java.awt.datatransfer.UnsupportedFlavorException;
6 import java.io.IOException;
7 import java.util.Arrays;
8
9 import com.cosylab.gui.util.DisplayerParametersFlavor;
10
11 import de.desy.acop.displayers.tools.AcopDisplayerParametersFlavor;
12 import de.desy.acop.displayers.tools.ConnectionParametersFlavor;
13
14
15
16
17
18
19
20
21
22
23
24 public class AcopVideoTransferable implements Transferable {
25
26 private static final DataFlavor[] flavors = new DataFlavor[]{AcopVideoParametersFlavor.FLAVOR,
27 AcopDisplayerParametersFlavor.FLAVOR, DisplayerParametersFlavor.FLAVOR,
28 ConnectionParametersFlavor.FLAVOR, DataFlavor.stringFlavor};
29
30
31 private AcopVideoParameters parameters;
32
33
34
35
36
37 public AcopVideoTransferable(AcopVideoParameters parameters) {
38 this.parameters = parameters;
39 }
40
41
42
43
44
45 public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
46 if (flavor == AcopVideoParametersFlavor.FLAVOR) {
47 return parameters;
48 } else if (flavor == AcopDisplayerParametersFlavor.FLAVOR) {
49 return parameters;
50 } else if (flavor == DisplayerParametersFlavor.FLAVOR) {
51 return parameters;
52 } else if (flavor == ConnectionParametersFlavor.FLAVOR) {
53 return parameters.getConnectionParameters();
54 } else if (flavor == DataFlavor.stringFlavor) {
55 if (parameters.getConnectionParameters() == null) return null;
56 return parameters.getConnectionParameters().getRemoteName();
57 }
58 throw new UnsupportedFlavorException(flavor);
59 }
60
61
62
63
64
65 public DataFlavor[] getTransferDataFlavors() {
66 return flavors;
67 }
68
69
70
71
72
73 public boolean isDataFlavorSupported(DataFlavor flavor) {
74 return Arrays.asList(flavors).contains(flavor);
75 }
76
77 }