Index: /trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 5210)
+++ /trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 5211)
@@ -10,5 +10,6 @@
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
 import java.awt.event.KeyEvent;
 import java.lang.reflect.InvocationTargetException;
@@ -139,8 +140,10 @@
         );
 
-        cbType.addActionListener(new ActionListener() {
+        cbType.addItemListener(new ItemListener() {
 
             @Override
-            public void actionPerformed(ActionEvent ae) {
+            public void itemStateChanged(ItemEvent e) {
+                tfId.setType(cbType.getType());
+                tfId.performValidation();
                 referrers.setText(cbType.getType() == OsmPrimitiveType.NODE
                         ? tr("Download referrers (parent relations and ways)")
@@ -186,9 +189,9 @@
 
         tfId.setType(cbType.getType());
-        if(tfId.readOsmIds()==false) {
+        if(!tfId.readOsmIds()) {
             JOptionPane.showMessageDialog(
                     Main.parent,
                     tr("Invalid ID list specified\n"
-                    + " Cannot download object."),
+                    + "Cannot download object."),
                     tr("Information"),
                     JOptionPane.INFORMATION_MESSAGE
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java	(revision 5210)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java	(revision 5211)
@@ -30,8 +30,4 @@
     }
 
-    public long getOsmId() {
-        return validator.getOsmId();
-    }
-
     /**
      * Get entered ID list - supports "1,2,3" "1 2   ,3" or even "1 2 3 v2 6 v8"
@@ -46,4 +42,7 @@
     }
 
+    public void performValidation() {
+        validator.validate();
+    }
 
     /**
@@ -66,5 +65,5 @@
         @Override
         public boolean isValid() {
-            return getOsmId() > 0 || readOsmIds() != false;
+            return readOsmIds();
         }
 
@@ -78,17 +77,4 @@
         }
 
-        public long getOsmId() {
-            String value  = getComponent().getText();
-            if (value == null || value.trim().length() == 0) return 0;
-            try {
-                long osmId = Long.parseLong(value.trim());
-                if (osmId > 0) 
-                    return osmId;
-                return 0;
-            } catch(NumberFormatException e) {
-                return 0;
-            }
-        }
-        
         public boolean readOsmIds() {
             String value = getComponent().getText();
@@ -110,11 +96,15 @@
                         ids.add(SimplePrimitiveId.fromString(s));
                     } catch (IllegalArgumentException ex) {
-                        if (type == OsmPrimitiveType.NODE) {
-                            ids.add(new SimplePrimitiveId(Long.parseLong(s), OsmPrimitiveType.NODE));
-                        } else if (type == OsmPrimitiveType.WAY) {
-                            ids.add(new SimplePrimitiveId(Long.parseLong(s), OsmPrimitiveType.WAY));
-                        } else if (type == OsmPrimitiveType.RELATION) {
-                            ids.add(new SimplePrimitiveId(Long.parseLong(s), OsmPrimitiveType.RELATION));
-                        } else {
+                        try {
+                            if (type == OsmPrimitiveType.NODE) {
+                                ids.add(new SimplePrimitiveId(Long.parseLong(s), OsmPrimitiveType.NODE));
+                            } else if (type == OsmPrimitiveType.WAY) {
+                                ids.add(new SimplePrimitiveId(Long.parseLong(s), OsmPrimitiveType.WAY));
+                            } else if (type == OsmPrimitiveType.RELATION) {
+                                ids.add(new SimplePrimitiveId(Long.parseLong(s), OsmPrimitiveType.RELATION));
+                            } else {
+                                return false;
+                            }
+                        } catch (IllegalArgumentException ex2) {
                             return false;
                         }
