Index: /src/org/openstreetmap/josm/gui/annotation/AnnotationPreset.java
===================================================================
--- /src/org/openstreetmap/josm/gui/annotation/AnnotationPreset.java	(revision 211)
+++ /src/org/openstreetmap/josm/gui/annotation/AnnotationPreset.java	(revision 212)
@@ -48,10 +48,12 @@
 public class AnnotationPreset extends AbstractAction {
 
-	private static interface Item {
-		void addToPanel(JPanel p);
-		void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds);
+	public static abstract class Item {
+		public boolean focus = false;
+		abstract void addToPanel(JPanel p);
+		abstract void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds);
+		boolean requestFocusInWindow() {return false;}
 	}
 	
-	public static class Text implements Item {
+	public static class Text extends Item {
 		public String key;
 		public String text;
@@ -61,10 +63,10 @@
 		private JTextField value = new JTextField();
 
-		public void addToPanel(JPanel p) {
+		@Override public void addToPanel(JPanel p) {
 			value.setText(default_ == null ? "" : default_);
 			p.add(new JLabel(text), GBC.std().insets(0,0,10,0));
 			p.add(value, GBC.eol().fill(GBC.HORIZONTAL));
 		}
-		public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
+		@Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
 			String v = value.getText();
 			if (delete_if_empty && v.length() == 0)
@@ -72,7 +74,8 @@
 			cmds.add(new ChangePropertyCommand(sel, key, v));
 		}
-	}
-
-	public static class Check implements Item {
+		@Override boolean requestFocusInWindow() {return value.requestFocusInWindow();}
+	}
+
+	public static class Check extends Item {
 		public String key;
 		public String text;
@@ -81,15 +84,16 @@
 		private JCheckBox check = new JCheckBox();
 
-		public void addToPanel(JPanel p) {
+		@Override public void addToPanel(JPanel p) {
 			check.setSelected(default_);
 			check.setText(text);
 			p.add(check, GBC.eol().fill(GBC.HORIZONTAL));
 		}
-		public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
+		@Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
 			cmds.add(new ChangePropertyCommand(sel, key, check.isSelected() ? "true" : null));
 		}
-	}
-
-	public static class Combo implements Item {
+		@Override boolean requestFocusInWindow() {return check.requestFocusInWindow();}
+	}
+
+	public static class Combo extends Item {
 		public String key;
 		public String text;
@@ -102,5 +106,5 @@
 		private JComboBox combo;
 
-		public void addToPanel(JPanel p) {
+		@Override public void addToPanel(JPanel p) {
 			combo = new JComboBox((display_values != null ? display_values : values).split(","));
 			combo.setEditable(editable);
@@ -109,5 +113,5 @@
 			p.add(combo, GBC.eol().fill(GBC.HORIZONTAL));
 		}
-		public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
+		@Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
 			String v = combo.getSelectedIndex() == -1 ? null : values.split(",")[combo.getSelectedIndex()];
 			String str = combo.isEditable()?combo.getEditor().getItem().toString() : v;
@@ -116,21 +120,22 @@
 			cmds.add(new ChangePropertyCommand(sel, key, str));
 		}
-	}
-
-	public static class Label implements Item {
+		@Override boolean requestFocusInWindow() {return combo.requestFocusInWindow();}
+	}
+
+	public static class Label extends Item {
 		public String text;
 
-		public void addToPanel(JPanel p) {
+		@Override public void addToPanel(JPanel p) {
 			p.add(new JLabel(text), GBC.eol());
 		}
-		public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {}
-	}
-
-	public static class Key implements Item {
+		@Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {}
+	}
+
+	public static class Key extends Item {
 		public String key;
 		public String value;
 
-		public void addToPanel(JPanel p) {}
-		public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
+		@Override public void addToPanel(JPanel p) {}
+		@Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
 			cmds.add(new ChangePropertyCommand(sel, key, value != null && !value.equals("") ? value : null));
 		}
@@ -252,9 +257,22 @@
 		if (p == null)
 			return;
-		int answer;
-		if (p.getComponentCount() == 0)
-			answer = JOptionPane.OK_OPTION;
-		else
-			answer = JOptionPane.showConfirmDialog(Main.parent, p, trn("Change {0} object", "Change {0} objects", sel.size(), sel.size()), JOptionPane.OK_CANCEL_OPTION);
+		int answer = JOptionPane.OK_OPTION;
+		if (p.getComponentCount() != 0) {
+			final JOptionPane optionPane = new JOptionPane(p, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION){
+				@Override public void selectInitialValue() {
+					for (Item i : data) {
+						if (i.focus) {
+							System.out.println(i.requestFocusInWindow());
+							return;
+						}
+					}
+				}
+			};
+			optionPane.createDialog(Main.parent, trn("Change {0} object", "Change {0} objects", sel.size(), sel.size())).setVisible(true);
+			Object answerObj = optionPane.getValue();
+			if (answerObj == null || answerObj == JOptionPane.UNINITIALIZED_VALUE ||
+					(answerObj instanceof Integer && (Integer)answerObj != JOptionPane.OK_OPTION))
+				answer = JOptionPane.CANCEL_OPTION;
+		}
 		if (answer == JOptionPane.OK_OPTION) {
 			Command cmd = createCommand(Main.ds.getSelected());
Index: /src/org/openstreetmap/josm/io/IncompleteDownloader.java
===================================================================
--- /src/org/openstreetmap/josm/io/IncompleteDownloader.java	(revision 211)
+++ /src/org/openstreetmap/josm/io/IncompleteDownloader.java	(revision 212)
@@ -45,4 +45,5 @@
 
 	public void parse() throws SAXException, IOException {
+		Main.pleaseWaitDlg.currentAction.setText(tr("Downloading incomplete ways..."));
 		Main.pleaseWaitDlg.progress.setMaximum(toDownload.size());
 		Main.pleaseWaitDlg.progress.setValue(0);
Index: /src/org/openstreetmap/josm/io/RawCsvReader.java
===================================================================
--- /src/org/openstreetmap/josm/io/RawCsvReader.java	(revision 211)
+++ /src/org/openstreetmap/josm/io/RawCsvReader.java	(revision 212)
@@ -34,7 +34,7 @@
 		Collection<GpsPoint> data = new LinkedList<GpsPoint>();
 		String formatStr = Main.pref.get("csv.importstring");
-		if (formatStr == null)
+		if (formatStr == null || formatStr.equals(""))
 			formatStr = in.readLine();
-		if (formatStr == null)
+		if (formatStr == null || formatStr.equals(""))
 			throw new SAXException(tr("Could not detect data format string."));
 
Index: /src/org/openstreetmap/josm/tools/XmlObjectParser.java
===================================================================
--- /src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 211)
+++ /src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 212)
@@ -115,4 +115,5 @@
 				}
 			} catch (Exception e) {
+				e.printStackTrace(); // !"§%$!"§ SAXException does not dump inner exceptions.
 				throw new SAXException(e);
 			}
