Class FileDrop.TransferableObject

  • All Implemented Interfaces:
    java.awt.datatransfer.Transferable
    Enclosing class:
    FileDrop

    public static class FileDrop.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 FileDrop.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 FileDrop.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.

    I'm releasing this code into the Public Domain. Enjoy.

    Version:
    1.2
    • Field Detail

      • MIME_TYPE

        public static final java.lang.String MIME_TYPE
        The MIME type for DATA_FLAVOR is application/x-net.iharder.dnd.TransferableObject.
        Since:
        1.1
        See Also:
        Constant Field Values
      • DATA_FLAVOR

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

        private java.lang.Object data
      • customFlavor

        private java.awt.datatransfer.DataFlavor customFlavor
    • Method Detail

      • getCustomDataFlavor

        public java.awt.datatransfer.DataFlavor getCustomDataFlavor()
        Returns the custom DataFlavor associated with the encapsulated object or null if the FileDrop.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 FileDrop.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 FileDrop.TransferableObject. If the FileDrop.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