net.iharder.dnd
Class TransferableObject

java.lang.Object
  extended by net.iharder.dnd.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:

Copyright ? 2001 Robert Harder

Version:
1.1
Author:
Robert.Harder
copyright 2001

Nested Class Summary
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
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.
 
Constructor Summary
TransferableObject(java.lang.Class dataClass, TransferableObject.Fetcher fetcher)
          Creates a new TransferableObject that will return the object that is returned by fetcher.
TransferableObject(java.lang.Object data)
          Creates a new TransferableObject that wraps data.
TransferableObject(TransferableObject.Fetcher fetcher)
          Creates a new TransferableObject that will return the object that is returned by fetcher.
 
Method Summary
 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 TransferableObject, and third the 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
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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 TransferableObject has the representation class net.iharder.dnd.TransferableObject.class and the MIME type application/x-net.iharder.dnd.TransferableObject.

Since:
1.1
Constructor Detail

TransferableObject

public TransferableObject(java.lang.Object data)
Creates a new TransferableObject that wraps data. Along with the DATA_FLAVOR associated with this class, this creates a custom data flavor with a representation class determined from data.getClass() and the MIME type application/x-net.iharder.dnd.TransferableObject.

Parameters:
data - The data to transfer
Since:
1.1

TransferableObject

public TransferableObject(TransferableObject.Fetcher fetcher)
Creates a new TransferableObject that will return the object that is returned by fetcher. No custom data flavor is set other than the default DATA_FLAVOR.

Parameters:
fetcher - The TransferableObject.Fetcher that will return the data object
Since:
1.1
See Also:
TransferableObject.Fetcher

TransferableObject

public TransferableObject(java.lang.Class dataClass,
                          TransferableObject.Fetcher fetcher)
Creates a new TransferableObject that will return the object that is returned by fetcher. Along with the DATA_FLAVOR associated with this class, this creates a custom data flavor with a representation class dataClass and the MIME type application/x-net.iharder.dnd.TransferableObject.

Parameters:
dataClass - The Class to use in the custom data flavor
fetcher - The TransferableObject.Fetcher that will return the data object
Since:
1.1
See Also:
TransferableObject.Fetcher
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 TransferableObject, and third the 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