[DnD] TransferableLabel extends TransferableObject
28/01/2009
package com.pingus.dnd.transferables; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import java.util.ArrayList; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JLabel; public class TransferableLabel extends TransferableObject { public TransferableLabel(final JLabel label, final DataFlavor[] acceptedFlavors, final Transferable defaultTransferableObject) { super(label, acceptedFlavors, defaultTransferableObject); } public TransferableLabel(final JLabel label, final ArrayList acceptedFlavors, final Transferable defaultTransferableObject) { super(label, acceptedFlavors, defaultTransferableObject); } public Object getTransferData(final DataFlavor flavor) throws UnsupportedFlavorException, IOException { if(flavor.equals(getPreferredFlavor())) { System.out.println("[TransferableLabel] <getTransferData> returning label"); // Return JLabel return this.getObject(); } else if(flavor.equals(DataFlavor.imageFlavor)) { System.out.println("[TransferableLabel] <getTransferData> returning ..."); // Return Image Icon icon = ((JLabel)this.getObject()).getIcon(); if (icon instanceof ImageIcon) { System.out.println("[TransferableLabel] <getTransferData> Image."); return ((ImageIcon) icon).getImage(); } } else if(flavor.equals(DataFlavor.stringFlavor)) { System.out.println("[TransferableLabel] <getTransferData> returning label text"); // Return label text return ((JLabel)this.getObject()).getText(); } else if(flavor.equals(DataFlavor.getTextPlainUnicodeFlavor())) { return TransferableObject.exportAsInputStream(((JLabel)this.getObject()).getText(), flavor); } System.out.println("[TransferableLabel] <getTransferData> returning nothing"); System.out.println("[TransferableLabel] <getTransferData> for flavor "+flavor); return super.getTransferData(flavor); } }