create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / gui / main / componenttree / RocketComponentTransferable.java
1 package net.sf.openrocket.gui.main.componenttree;
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
8 import net.sf.openrocket.rocketcomponent.RocketComponent;
9
10 /**
11  * A transferable that provides a reference to a (JVM-local) RocketComponent object.
12  * 
13  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
14  */
15 public class RocketComponentTransferable implements Transferable {
16         
17         public static final DataFlavor ROCKET_COMPONENT_DATA_FLAVOR = new DataFlavor(
18                         DataFlavor.javaJVMLocalObjectMimeType + "; class=" + RocketComponent.class.getCanonicalName(),
19                         "OpenRocket component");
20         
21
22         private final RocketComponent component;
23         
24         public RocketComponentTransferable(RocketComponent component) {
25                 this.component = component;
26         }
27         
28         
29         @Override
30         public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
31                 if (!isDataFlavorSupported(flavor)) {
32                         throw new UnsupportedFlavorException(flavor);
33                 }
34                 return component;
35         }
36         
37         @Override
38         public DataFlavor[] getTransferDataFlavors() {
39                 return new DataFlavor[] { ROCKET_COMPONENT_DATA_FLAVOR };
40         }
41         
42         @Override
43         public boolean isDataFlavorSupported(DataFlavor flavor) {
44                 return flavor.equals(ROCKET_COMPONENT_DATA_FLAVOR);
45         }
46         
47 }