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 }