package net.sf.openrocket.gui.main.componenttree;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import net.sf.openrocket.rocketcomponent.RocketComponent;
/**
* A transferable that provides a reference to a (JVM-local) RocketComponent object.
*
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
*/
public class RocketComponentTransferable implements Transferable {
public static final DataFlavor ROCKET_COMPONENT_DATA_FLAVOR = new DataFlavor(
DataFlavor.javaJVMLocalObjectMimeType + "; class=" + RocketComponent.class.getCanonicalName(),
"OpenRocket component");
private final RocketComponent component;
public RocketComponentTransferable(RocketComponent component) {
this.component = component;
}
@Override
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if (!isDataFlavorSupported(flavor)) {
throw new UnsupportedFlavorException(flavor);
}
return component;
}
@Override
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[] { ROCKET_COMPONENT_DATA_FLAVOR };
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor) {
return flavor.equals(ROCKET_COMPONENT_DATA_FLAVOR);
}
}