ImageSelection.java

De ChuWiki
Saltar a: navegación, buscar

Clase de ejemplo del tutorial Drag and Drog (Arrastrar y Soltar)

/*==============================================================================
*
* $RCSfile: cvsmkhd,v $
*
* $Revision: 1.2 $ $Date: 2003/09/22 07:05:39 $
*
* $State: Exp $
*
* AUTOR: paquito
*
==============================================================================*/



import java.awt.Image;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;

import java.io.IOException;


/**
 * Transferable para copiar/pegar, arrastrar/soltar imagenes
 */
public class ImageSelection
        implements Transferable
{
   //~ Variables/Inicializadores estaticos -------------------------------------

   /** Tipos de datos que es capaz de manejar el transferable */
   protected static DataFlavor[] transferDataFlavors;

   //~ Variables de instancia --------------------------------------------------

   /** Imagen  que se quiere transferir */
   protected Image image;

   /**
    * Texto, que se usará en caso de que el destino no sea capaz de
    * manejar imagenes
    */
   protected String texto;

   {
      ImageSelection.transferDataFlavors = new DataFlavor[]
         {
            DataFlavor.imageFlavor,
            DataFlavor.stringFlavor
         };
   }

   //~ Constructores -----------------------------------------------------------

    /**
    * Crea  un nuevo objeto de la clase ImageSelection.
    */
   public ImageSelection( Image imagen )
   {
      this.image = imagen;
   }

   /**
    * Crea  un nuevo objeto de la clase ImageSelection.
    */
   public ImageSelection( 
      Image imagen,
      String texto )
   {
      this.image = imagen;
      this.texto = texto;
   }

   //~ Metodos -----------------------------------------------------------------

   /**
    * Recibe el tipo de dato que desea el destino y, si es posible lo
    * devuelve. En caso contrario lanza una excepcion.
    */
   public Object getTransferData( DataFlavor arg0 )
           throws UnsupportedFlavorException,IOException
   {
      if( DataFlavor.imageFlavor.equals( arg0 ) )
      {
         return this.image;
      }
      else if( DataFlavor.stringFlavor.equals( arg0 ) )
      {
         return this.texto;
      }

      throw new UnsupportedFlavorException( arg0 );
   }

   /**
    * Devuelve los posibles tipos de datos que se puede extraer del
    * Transferable
    */
   public DataFlavor[] getTransferDataFlavors(  )
   {
      return transferDataFlavors;
   }

   /**
    * Indica si un tipo concreto de dato lo soporta este Transferable,
    * es decir si se puede entregar su contenido como un objeto de esa clase
    */
   public boolean isDataFlavorSupported( DataFlavor arg0 )
   {
      if( arg0.equals( DataFlavor.imageFlavor ) )
      {
         return true;
      }
      else if( arg0.equals( DataFlavor.stringFlavor ) )
      {
         return true;
      }

      return false;
   }
}