All pastes #256891 Raw Edit

Someone

public text v1 · immutable
#256891 ·published 2006-11-24 19:26 UTC
rendered paste body
package 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;
	}
}