import java.awt.*;
import java.awt.datatransfer.*;

/**
 * A Transferable wrapper for an Image object.
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version For use with an ImageTransferHandler
 */
public class ImageSelection implements Transferable
{
  public static final DataFlavor IMAGE_FLAVOR = DataFlavor.imageFlavor;

  private Image image;
  
  /**
   * Construct an ImageSelection.
   * 
   * @param image  The Image to wrap
   */
  public ImageSelection(Image image)
  {
    this.image = image;
  }
  
  /**
   * Get the DataFlavor objects supported by this Transferable.
   * 
   * @return The DataFlavor objects
   */
  public DataFlavor[] getTransferDataFlavors()
  {
    return new DataFlavor[] { DataFlavor.imageFlavor };
  }

  /**
   * Is the given DataFlavor supported by this Transferable?
   * 
   * @param DataFlavor  The DataFlavor of interest
   * @return true if it is supported; false otherwise
   */
  public boolean isDataFlavorSupported(DataFlavor flavor)
  {
    for (DataFlavor supported: getTransferDataFlavors())
    {
      if (flavor.equals(supported)) return true;
    }
    return false;
  }

  /**
   * Get the Transferable Object for a particular DataFlavor.
   * 
   * @param flavor   The DataFlavor of interest
   */
  public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException
  {
    if (!isDataFlavorSupported(flavor)) throw new UnsupportedFlavorException(flavor);
    
    return image;
  }
}
