package de.unisiegen.gtitool.ui.swing.dnd; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import javax.swing.ListModel; /** * Transferable for {@link JGTIListModelRows}. * * @author Christian Fehler * @version $Id: JGTIListModelRowsTransferable.java 728 2008-04-04 12:28:48Z * fehler $ */ public final class JGTIListModelRowsTransferable implements Transferable { /** * The {@link DataFlavor} used to identify data transfers of rows from a * {@link ListModel}. */ public static final DataFlavor dataFlavor; static { try { dataFlavor = new DataFlavor ( DataFlavor.javaJVMLocalObjectMimeType + ";class=" //$NON-NLS-1$ + JGTIListModelRows.class.getCanonicalName () ); } catch ( ClassNotFoundException e ) { throw new RuntimeException ( e ); } } /** * The {@link JGTIListModelRows}. * * @see #getRows() */ private final JGTIListModelRows listModelRows; /** * Allocates a new {@link JGTIListModelRowsTransferable} for the specified * rows. * * @param listModelRows The {@link JGTIListModelRows} to transfer. * @throws NullPointerException if <code>rows</code> is <code>null</code>. */ public JGTIListModelRowsTransferable ( JGTIListModelRows listModelRows ) { if ( listModelRows == null ) { throw new NullPointerException ( "rows can not be null" ); //$NON-NLS-1$ } this.listModelRows = listModelRows; } /** * Returns the {@link JGTIListModelRows}. * * @return The {@link JGTIListModelRows}. */ public final JGTIListModelRows getRows () { return this.listModelRows; } /** * {@inheritDoc} * * @see Transferable#getTransferData(DataFlavor) */ @SuppressWarnings ( "unused" ) public final Object getTransferData ( DataFlavor flavor ) throws UnsupportedFlavorException, IOException { if ( isDataFlavorSupported ( flavor ) ) { return this.listModelRows; } throw new UnsupportedFlavorException ( flavor ); } /** * {@inheritDoc} * * @see Transferable#getTransferDataFlavors() */ public final DataFlavor [] getTransferDataFlavors () { return new DataFlavor [] { dataFlavor }; } /** * {@inheritDoc} * * @see Transferable#isDataFlavorSupported(DataFlavor) */ public final boolean isDataFlavorSupported ( DataFlavor checkDataFlavor ) { for ( DataFlavor supportedFlavor : getTransferDataFlavors () ) { if ( supportedFlavor.equals ( checkDataFlavor ) ) { return true; } } return false; } }