--- DocumentDialog.java	Thu Feb 12 08:28:46 2004
+++ DocumentDialog.java	Mon Feb 23 16:19:28 2004
@@ -82,6 +82,14 @@
 import com.jgoodies.forms.factories.Borders;
 import com.jgoodies.forms.layout.FormLayout;
 
+import java.awt.datatransfer.UnsupportedFlavorException;
+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 java.net.URI;
 
 public class DocumentDialog extends StandardDialog {
     private AlternateListener alternateListener = new AlternateListener();
@@ -176,6 +184,44 @@
     private boolean editingDefault;
     private EntryTextField cronText;
 
+    private class MyDropTargetListener implements DropTargetListener
+    {
+        public void drop(DropTargetDropEvent dtde) {
+            try {
+                Transferable tr = dtde.getTransferable();
+                if(dtde.isDataFlavorSupported(DataFlavor.stringFlavor)) {
+                    dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
+                    String filename = (String)tr.getTransferData(DataFlavor.stringFlavor);
+                    uriText.setText(URI.create(filename).toString());
+                    dtde.dropComplete(true);
+                }
+                else if(dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
+                    dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
+                    java.util.List files = (java.util.List)tr.getTransferData(DataFlavor.javaFileListFlavor);
+                    for(Iterator iterator = (Iterator)files.iterator(); iterator.hasNext();) {
+                        File file = (File)iterator.next();
+                        uriText.setText(file.toURI().toString());
+                        break; // only process first file in the list, for now
+                    }
+                    dtde.dropComplete(true);
+                }
+                else {
+                    dtde.rejectDrop();
+                }
+            }
+            catch(IOException ioe) {
+                ioe.printStackTrace();
+            }
+            catch(UnsupportedFlavorException ufe) {
+                ufe.printStackTrace();
+            }
+        }
+        public void dragExit(DropTargetEvent dte) {}
+        public void dragEnter(DropTargetDragEvent dtde) {}
+        public void dragOver(DropTargetDragEvent dtde) {}
+        public void dropActionChanged(DropTargetDragEvent dtde) {}
+    }
+
     protected DocumentDialog(JFrame owner) {
         super(owner);
     }
@@ -628,6 +674,8 @@
         mainBuilder.add(uriBuilder.getPanel(), "3,11");
         GUIUtil.enablePanel(uriBuilder.getPanel(), !editingDefault);
 
+        new DropTarget(uriText,DnDConstants.ACTION_COPY_OR_MOVE,new DocumentDialog.MyDropTargetListener());
+        
         int row = 13;
         if (feed) {
             mainBuilder.addLabel("Structure", "1," + row);
