import java.awt.Point;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;

import javax.swing.JPanel;


public class DropTargetPanel extends JPanel{
	
	
	private static int action=DnDConstants.ACTION_COPY_OR_MOVE;
	
	public DropTargetPanel() {
		super();
		new DropTarget(this,action,dropTargetListener);
		
		//setLayout(new FlowLayout());
		setLayout(null);
	}
	public void addDroppedText(String text,Point droppedLocation){
		
		MyLabel item=new MyLabel();
		item.setText(text);
		
		item.setLocation(droppedLocation);
		item.setSize(item.getPreferredSize());
		
		add(item);
		repaint();
	}
	
	private DropTargetListener dropTargetListener=new DropTargetListener(){
		
		public void drop(DropTargetDropEvent e) { 
			e.acceptDrop(action);
			
			Transferable tr = e.getTransferable(); 
			
			boolean gotData=false;
			try{
				String data=null;
				if(e.isDataFlavorSupported(DataFlavor.stringFlavor)) { 
					data = (String)tr.getTransferData(DataFlavor.stringFlavor);
				}

				if(data!=null)
					gotData=true;
				
				
				Point droppedLocation=e.getLocation();
				addDroppedText(data,droppedLocation);
			}
			catch(Exception ex){
				ex.printStackTrace();
			}
			finally{
				e.dropComplete(gotData);
			}
		}
		
		//@Override
		public void dragOver(DropTargetDragEvent dtde) { 
		} 
		
		//@Override
		public void dragExit(DropTargetEvent dte) {
		}
		//@Override
		public void dragEnter(DropTargetDragEvent dtde) {
		}
		//@Override
		public void dropActionChanged(DropTargetDragEvent dtde) {
		}
	};


}

