Class TransferableObject

  • All Implemented Interfaces:
    java.awt.datatransfer.Transferable

    public class TransferableObject
    extends java.lang.Object
    implements java.awt.datatransfer.Transferable
    At last an easy way to encapsulate your custom objects for dragging and dropping in your Java programs! When you need to create a Transferable object, use this class to wrap your object. For example:
    
          ...
          MyCoolClass myObj = new MyCoolClass();
          Transferable xfer = new TransferableObject( myObj );
          ...
     
    Or if you need to know when the data was actually dropped, like when you're moving data out of a list, say, you can use the TransferableObject.Fetcher inner class to return your object Just in Time. For example:
    
          ...
          final MyCoolClass myObj = new MyCoolClass();
    
          TransferableObject.Fetcher fetcher = new TransferableObject.Fetcher()
          {   public Object getObject(){ return myObj; }
          }; // end fetcher
    
          Transferable xfer = new TransferableObject( fetcher );
          ...
     
    The DataFlavor associated with TransferableObject has the representation class net.iharder.dnd.TransferableObject.class and MIME type application/x-net.iharder.dnd.TransferableObject. This data flavor is accessible via the static DATA_FLAVOR property.

    This code is licensed for public use under the Common Public License version 0.5.
    The Common Public License, developed by IBM and modeled after their industry-friendly IBM Public License, differs from other common open source licenses in several important ways:

    • You may include this software with other software that uses a different (even non-open source) license.
    • You may use this software to make for-profit software.
    • Your patent rights, should you generate patents, are protected.

    Copyright 2001 Robert Harder

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static interface  TransferableObject.Fetcher
      Instead of passing your data directly to the TransferableObject constructor, you may want to know exactly when your data was received in case you need to remove it from its source (or do anyting else to it).
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.awt.datatransfer.DataFlavor DATA_FLAVOR
      The default DataFlavor for TransferableObject has the representation class net.iharder.dnd.TransferableObject.class and the MIME type application/x-net.iharder.dnd.TransferableObject.
      static java.lang.String MIME_TYPE
      The MIME type for DATA_FLAVOR is application/x-net.iharder.dnd.TransferableObject.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.awt.datatransfer.DataFlavor getCustomDataFlavor()
      Returns the custom DataFlavor associated with the encapsulated object or null if the TransferableObject.Fetcher constructor was used without passing a Class.
      java.lang.Object getTransferData​(java.awt.datatransfer.DataFlavor flavor)
      Returns the data encapsulated in this TransferableObject.
      java.awt.datatransfer.DataFlavor[] getTransferDataFlavors()
      Returns a two- or three-element array containing first the custom data flavor, if one was created in the constructors, second the default DATA_FLAVOR associated with the TransferableObject, and third the java.awt.datatransfer.DataFlavor.stringFlavor.
      boolean isDataFlavorSupported​(java.awt.datatransfer.DataFlavor flavor)
      Returns true if flavor is one of the supported flavors.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DATA_FLAVOR

        public static final java.awt.datatransfer.DataFlavor DATA_FLAVOR
        The default DataFlavor for TransferableObject has the representation class net.iharder.dnd.TransferableObject.class and the MIME type application/x-net.iharder.dnd.TransferableObject.
        Since:
        1.1
    • Method Detail

      • getCustomDataFlavor

        public java.awt.datatransfer.DataFlavor getCustomDataFlavor()
        Returns the custom DataFlavor associated with the encapsulated object or null if the TransferableObject.Fetcher constructor was used without passing a Class.
        Returns:
        The custom data flavor for the encapsulated object
        Since:
        1.1
      • getTransferDataFlavors

        public java.awt.datatransfer.DataFlavor[] getTransferDataFlavors()
        Returns a two- or three-element array containing first the custom data flavor, if one was created in the constructors, second the default DATA_FLAVOR associated with the TransferableObject, and third the java.awt.datatransfer.DataFlavor.stringFlavor.
        Specified by:
        getTransferDataFlavors in interface java.awt.datatransfer.Transferable
        Returns:
        An array of supported data flavors
        Since:
        1.1
      • getTransferData

        public java.lang.Object getTransferData​(java.awt.datatransfer.DataFlavor flavor)
                                         throws java.awt.datatransfer.UnsupportedFlavorException,
                                                java.io.IOException
        Returns the data encapsulated in this TransferableObject. If the TransferableObject.Fetcher constructor was used, then this is when the getObject() method will be called. If the requested data flavor is not supported, then the getObject() method will not be called.
        Specified by:
        getTransferData in interface java.awt.datatransfer.Transferable
        Parameters:
        flavor - The data flavor for the data to return
        Returns:
        The dropped data
        Throws:
        java.awt.datatransfer.UnsupportedFlavorException
        java.io.IOException
        Since:
        1.1
      • isDataFlavorSupported

        public boolean isDataFlavorSupported​(java.awt.datatransfer.DataFlavor flavor)
        Returns true if flavor is one of the supported flavors. Flavors are supported using the equals(...) method.
        Specified by:
        isDataFlavorSupported in interface java.awt.datatransfer.Transferable
        Parameters:
        flavor - The data flavor to check
        Returns:
        Whether or not the flavor is supported
        Since:
        1.1