1 import java.awt.datatransfer.Transferable; 2 import java.awt.dnd.*; 3 import java.awt.*; 4 import java.awt.datatransfer.DataFlavor; 5 import java.awt.datatransfer.UnsupportedFlavorException; 6 import java.io.IOException; 7 import java.util.Timer; 8 import java.util.TimerTask; 9 10 public class TargetPanel extends Panel implements DropTargetListener { 11 12 13 //private final CustomDropTargetListener dropTargetListener = new CustomDropTargetListener(); 14 15 private Frame frame; 16 DataFlavor dataFlavor; 17 18 public TargetPanel(Frame frame, DataFlavor dataFlavor) { 19 this.dataFlavor = dataFlavor; 20 this.frame = frame; 21 setBackground(Color.DARK_GRAY); 22 setPreferredSize(new Dimension(200, 200)); 23 setDropTarget(new DropTarget(this, this)); 24 } 25 26 public void dragEnter(DropTargetDragEvent dtde) { 27 if (dtde.isDataFlavorSupported(dataFlavor)) { 28 dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE); 29 } 30 } 31 32 public void dragOver(DropTargetDragEvent dtde) { 33 if (dtde.isDataFlavorSupported(dataFlavor)) { 34 dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE); 35 } 36 } 37 38 public void dropActionChanged(DropTargetDragEvent dtde) { 39 if (dtde.isDataFlavorSupported(dataFlavor)) { 40 dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE); 41 } 42 } 43 44 public void dragExit(DropTargetEvent dte) { 45 46 } 47 48 public void drop(DropTargetDropEvent dtde) { 49 dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); 50 if (dtde.isDataFlavorSupported(dataFlavor)) { 51 String result = null; 52 try { 53 Transferable t = dtde.getTransferable(); 54 byte[] data = (byte[]) dtde.getTransferable().getTransferData(dataFlavor); 55 result = new String(data, "UTF-16"); 56 repaint(); 57 } catch (UnsupportedFlavorException e) { 58 e.printStackTrace(); 59 } catch (IOException e) { 60 e.printStackTrace(); 61 } 62 dtde.dropComplete(true); 63 64 65 if (result != null && result.contains(MyTransferable.TEST_DATA)) { 66 System.err.println(InterprocessMessages.EXECUTION_IS_SUCCESSFULL); 67 Timer t = new Timer(); 68 t.schedule(new TimerTask() { 69 @Override 70 public void run() { 71 System.exit(0); 72 } 73 }, 2000); 74 return; 75 76 } 77 } 78 dtde.rejectDrop(); 79 System.err.println(InterprocessMessages.DATA_IS_CORRUPTED); 80 System.exit(InterprocessMessages.DATA_IS_CORRUPTED); 81 } 82 83 }