package filedrop;

import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.swing.JTextArea;

public class MyDropTargetListener extends DropTargetAdapter {
	private JTextArea textarea;

	public MyDropTargetListener(JTextArea textarea) {
		System.out.println("MyDropTargetListener");
		this.textarea = textarea;
	}

	// @Override
	// public void dragEnter(DropTargetDragEvent dtde) {
	// // TODO 自動生成されたメソッド・スタブ
	// System.out.println("MyDropTargetListener.dragEnter");
	// dtde.acceptDrag(DnDConstants.ACTION_COPY);
	// }

	// @Override
	// public void dragExit(DropTargetEvent dte) {
	// // TODO 自動生成されたメソッド・スタブ
	// System.out.println("MyDropTargetListener.dragExit");
	// }

	// @Override
	// public void dragOver(DropTargetDragEvent dtde) {
	// System.out.println("MyDropTargetListener.dragOver");
	// if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
	// dtde.acceptDrag(DnDConstants.ACTION_COPY);
	// } else {
	// dtde.rejectDrag();
	// }
	// }

	public void drop(DropTargetDropEvent dtde) {
		System.out.println("MyDropTargetListener.drop");
		try {
			if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
				dtde.acceptDrop(DnDConstants.ACTION_COPY);
				Transferable transferable = dtde.getTransferable();
				List<File> list;
				list = (List<File>) transferable
						.getTransferData(DataFlavor.javaFileListFlavor);
				for (File file : list) {
					textarea.setText(file.toString() + "\n");
				}
				dtde.dropComplete(true);
			}
		} catch (UnsupportedFlavorException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}

	// @Override
	// public void dropActionChanged(DropTargetDragEvent dtde) {
	// // TODO 自動生成されたメソッド・スタブ
	// System.out.println("MyDropTargetListener.dropActionChanged");
	// dtde.acceptDrag(DnDConstants.ACTION_COPY);
	// }

}
