Index: trunk/src/org/openstreetmap/josm/data/osm/OsmUtils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmUtils.java	(revision 701)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmUtils.java	(revision 702)
@@ -0,0 +1,29 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.osm;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Locale;
+
+public class OsmUtils {
+
+	static ArrayList<String> TRUE_VALUES = new ArrayList<String>(Arrays
+	        .asList(new String[] { "true", "yes", "1", "on" }));
+	static ArrayList<String> FALSE_VALUES = new ArrayList<String>(Arrays
+	        .asList(new String[] { "false", "no", "0", "off" }));
+
+	public static final String trueval = "yes";
+	public static final String falseval = "no";
+
+	public static Boolean getOsmBoolean(String value) {
+		if(value == null) return null;
+		String lowerValue = value.toLowerCase(Locale.ENGLISH);
+		if (TRUE_VALUES.contains(lowerValue)) return Boolean.TRUE;
+		if (FALSE_VALUES.contains(lowerValue)) return Boolean.FALSE;
+		return null;
+	}
+	public static String getNamedOsmBoolean(String value) {
+		Boolean res = getOsmBoolean(value);
+		return res == null ? value : (res ? trueval : falseval);
+	}
+}
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 701)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 702)
@@ -39,4 +39,5 @@
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.gui.QuadStateCheckBox;
 import org.openstreetmap.josm.tools.GBC;
@@ -82,12 +83,5 @@
 		returnValue.values = new HashSet<String>();
 		for (OsmPrimitive s : sel) {
-			String v = s.get(key);
-			if ("true".equalsIgnoreCase(v)) v = "true";
-			else if ("yes".equalsIgnoreCase(v)) v = "true";
-			else if ("1".equals(v)) v = "true";
-			else if ("false".equalsIgnoreCase(v)) v = "false";
-			else if ("no".equalsIgnoreCase(v)) v = "false";
-			else if ("0".equals(v)) v = "false";			
-			returnValue.values.add(v);
+			returnValue.values.add(OsmUtils.getNamedOsmBoolean(s.get(key)));
 		}
 		return returnValue;
@@ -173,10 +167,10 @@
 			String oneValue = null;
 			for (String s : usage.values) oneValue = s;
-			if (usage.values.size() < 2 && (oneValue == null || "true".equals(oneValue) || "false".equals(oneValue))) {
+			if (usage.values.size() < 2 && (oneValue == null || OsmUtils.trueval.equals(oneValue) || OsmUtils.falseval.equals(oneValue))) {
 				// all selected objects share the same value which is either true or false or unset, 
 				// we can display a standard check box.
-				initialState = "true".equals(oneValue) ? 
+				initialState = OsmUtils.trueval.equals(oneValue) ? 
 							QuadStateCheckBox.State.SELECTED :
-							"false".equals(oneValue) ? 
+							OsmUtils.falseval.equals(oneValue) ? 
 							QuadStateCheckBox.State.NOT_SELECTED :
 							QuadStateCheckBox.State.UNSET;
@@ -207,6 +201,6 @@
 			// otherwise change things according to the selected value.
 			cmds.add(new ChangePropertyCommand(sel, key, 
-					check.getState() == QuadStateCheckBox.State.SELECTED ? "true" :
-					check.getState() == QuadStateCheckBox.State.NOT_SELECTED ? "false" :
+					check.getState() == QuadStateCheckBox.State.SELECTED ? OsmUtils.trueval :
+					check.getState() == QuadStateCheckBox.State.NOT_SELECTED ? OsmUtils.falseval :
 					null));
 		}
@@ -355,4 +349,6 @@
 	public void setDisplayName(String name) {
 		putValue(Action.NAME, tr(name));
+		String tooltip = tr("Use presets ''{0}''", tr(name));
+		putValue(SHORT_DESCRIPTION, "<html>"+tooltip+"</html>");
 	}
 
