
import java.util.*;
import java.io.*;
import java.awt.datatransfer.*;

public class FooTransferable
    implements Transferable
{
    private ArrayList     _data    = null;
    private DataFlavor[]  _flavors = null;

    //-------------------------------------------------------------------------|

    public FooTransferable( ArrayList     collection,
                            DataFlavor[]  flavors)
    {
        this._data    = collection;
        this._flavors = flavors;
    }

    //-------------------------------------------------------------------------|

    public Object getTransferData( DataFlavor flavor)
    {
        Object val = null;

        if( !isDataFlavorSupported( flavor))
            return null;

        if( flavor.equals( FooDataFlavors.fooTreeDataFlavor) ||
            flavor.equals( FooDataFlavors.fooTableDataFlavor) )
            val = _data;
        else
        if( flavor.equals( FooDataFlavors.stringFlavor))
            val = toString();

        return val;
    }

    //-------------------------------------------------------------------------|

    public DataFlavor[] getTransferDataFlavors()
    {
        return _flavors;
    }

    //-------------------------------------------------------------------------|

    public boolean isDataFlavorSupported( DataFlavor flavor)
    {
        return Arrays.asList( _flavors).contains( flavor);
    }

    //-------------------------------------------------------------------------|

    public String toString()
    {
        StringBuffer str = new StringBuffer();
        Object       obj = null;

        for( int i = 0; i < _data.size(); ++i)
        {
            obj = _data.get( i);

            if( obj instanceof D)
            {
                str.append( (D)obj);
                str.append( "\r\n");
            }
        }
        return str.toString();
    }

    //-------------------------------------------------------------------------|
}
//--< FooTransferable ends here >----------------------------------------------|