[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);
}
}