Index: trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 5353)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 5354)
@@ -181,4 +181,9 @@
         dialog.configureContextsensitiveHelp("/Action/DownloadObject", true /* show help button */);
         cbType.setSelectedIndex(Main.pref.getInteger("downloadprimitive.lasttype", 0));
+        tfId.setType(cbType.getType());
+        if (Main.pref.getBoolean("downloadprimitive.autopaste", true)) { 
+            tryToPasteFromClipboard(tfId, cbType);
+        }
+        
         dialog.showDialog();
         if (dialog.getValue() != 1) return;
@@ -310,3 +315,20 @@
             .setContent(p, false);
     }
+
+    private void tryToPasteFromClipboard(OsmIdTextField tfId, OsmPrimitiveTypesComboBox cbType) {
+        String buf = Utils.getClipboardContent();
+        if (buf.contains("node")) cbType.setSelectedIndex(0);
+        if (buf.contains("way")) cbType.setSelectedIndex(1);
+        if (buf.contains("relation")) cbType.setSelectedIndex(2);
+        String[] res = buf.split("/");
+        String txt;
+        if (res.length>0) {
+            txt = res[res.length-1];
+            if (txt.isEmpty() && txt.length()>1) txt=res[res.length-2];
+        } else {
+            txt=buf;
+        }
+        tfId.setText(txt);
+        tfId.clearTextIfInvalid();
+    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java	(revision 5353)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java	(revision 5354)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -43,4 +44,10 @@
 
     public void performValidation() {
+        validator.validate();
+    }
+
+    public void clearTextIfInvalid() {
+        if (!validator.isValid()) 
+            setText("");
         validator.validate();
     }
