rendered paste bodypackage dnd;
import java.io.*;
import java.net.URL;
import java.awt.datatransfer.*;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.TransferHandler;
class CoverTransferHandler extends TransferHandler {
private DataFlavor fileFlavor = DataFlavor.javaFileListFlavor;
private DataFlavor stringFlavor = DataFlavor.stringFlavor;
private JLabel cover;
CoverTransferHandler(JLabel cover) {
this.cover = cover;
}
public boolean importData(JComponent c, Transferable t) {
if (!canImport(c, t.getTransferDataFlavors())) {
return false;
}
try {
if (hasFileFlavor(t.getTransferDataFlavors())) {
java.util.List files = (java.util.List) t
.getTransferData(fileFlavor);
for (int i = 0; i < files.size(); i++) {
File file = (File) files.get(i);
ImageIcon image = new ImageIcon(file.toURL());
if (image.getIconHeight() > 1 && image.getIconWidth() > 1) {
this.cover.setIcon(image);
return true;
} else {
System.err.println("no image");
}
}
return true;
} else if (hasStringFlavor(t.getTransferDataFlavors())) {
String str;
str = (String) t.getTransferData(stringFlavor);
ImageIcon image = new ImageIcon(new URL(str));
if (image.getIconHeight() > 1 && image.getIconWidth() > 1) {
this.cover.setIcon(image);
return true;
} else {
System.err.println("no image");
}
}
} catch (UnsupportedFlavorException ufe) {
System.out.println("importData: unsupported data flavor");
} catch (IOException e) {
System.err.println(e);
}
return false;
}
public int getSourceActions(JComponent c) {
return COPY;
}
public boolean canImport(JComponent c, DataFlavor[] flavors) {
if (hasFileFlavor(flavors)) {
return true;
}
if (hasStringFlavor(flavors)) {
return true;
}
return false;
}
private boolean hasFileFlavor(DataFlavor[] flavors) {
for (int i = 0; i < flavors.length; i++) {
if (fileFlavor.equals(flavors[i])) {
return true;
}
}
return false;
}
private boolean hasStringFlavor(DataFlavor[] flavors) {
for (int i = 0; i < flavors.length; i++) {
if (stringFlavor.equals(flavors[i])) {
return true;
}
}
return false;
}
}