public void	drop(DropTargetDropEvent evt) {

         evt.acceptDrop(evt.getDropAction());
         Transferable t = evt.getTransferable();
         
         //Clear current drop data and repaint tree
         DropData dropData = AppTree.this.currentDropData;
         dndEnd();
         if(dropData == null) {
            evt.rejectDrop();
            evt.dropComplete(false);
            return;
         }
         
         //print out all flavors supported
         DataFlavor flavors[] = t.getTransferDataFlavors();
         for(int i=0;i<flavors.length;i++) {
            System.out.println(flavors[i]);
         }
         
         //Try and obtain Tree Node
         try {
            DataFlavor refFlavor = new DataFlavor("application/x-java-jvm-local-objectref");
            Object obj = t.getTransferData(refFlavor);
            if(obj instanceof MutableTreeNode) {
               evt.dropComplete(true);
               AppTreeModel model = (AppTreeModel)AppTree.this.getModel();
               model.moveNode((MutableTreeNode)obj, dropData.path, dropData.above);
               return;
            }
         }
         catch(UnsupportedFlavorException unsupported){}
         catch(Exception exp) {
            exp.printStackTrace();
         }

         //Try to obtain a URL
         try {
            DataFlavor urlFlavor = new DataFlavor("application/x-java-url; class=java.net.URL");
            URL url = (URL)t.getTransferData(urlFlavor);
            evt.dropComplete(true);
            
            processDrop(url, dropData);
            return;
         }
         catch(UnsupportedFlavorException unsupported){}
         catch(Exception exp) {
            exp.printStackTrace();
         }
         
         //Try to convert String to URL
         try {
            DataFlavor stringFlavor = new DataFlavor("text/plain; class=java.lang.String");
            String s = (String)t.getTransferData(stringFlavor);
            URL url = new URL(s);
            evt.dropComplete(true);
            
            processDrop(url, dropData);
            return;
         }
         catch(UnsupportedFlavorException unsupported){}
         catch(Exception exp) {
            exp.printStackTrace();
         }
         
         //If we made it down here then we can't process the Drop
         evt.dropComplete(false);
      }