View Javadoc

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   * <code>AcopVideoTransferable</code> is the implementation of
17   * the Transferable which is used by the AcopVideo. It allows
18   * transferring of the AcopVideoParameters.
19   *
20   * @author <a href="mailto:jaka.bobnar@cosylab.com">Jaka Bobnar</a>
21   * @version $Id: Templates.xml,v 1.10 2004/01/13 16:17:13 jbobnar Exp $
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  	 * Constructs a new AcopVideoTransferable.
35  	 * @param parameters
36  	 */
37  	public AcopVideoTransferable(AcopVideoParameters parameters) {
38  		this.parameters = parameters;
39  	}
40  	
41  	/*
42  	 * (non-Javadoc)
43  	 * @see java.awt.datatransfer.Transferable#getTransferData(java.awt.datatransfer.DataFlavor)
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  	 * (non-Javadoc)
63  	 * @see java.awt.datatransfer.Transferable#getTransferDataFlavors()
64  	 */
65  	public DataFlavor[] getTransferDataFlavors() {
66  		return flavors;
67  	}
68  	
69  	/*
70  	 * (non-Javadoc)
71  	 * @see java.awt.datatransfer.Transferable#isDataFlavorSupported(java.awt.datatransfer.DataFlavor)
72  	 */
73  	public boolean isDataFlavorSupported(DataFlavor flavor) {
74  		return Arrays.asList(flavors).contains(flavor);
75  	}
76  	
77  }