Index: trunk/src/org/openstreetmap/josm/data/osm/Tags.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Tags.java	(revision 15376)
+++ trunk/src/org/openstreetmap/josm/data/osm/Tags.java	(revision 15376)
@@ -0,0 +1,44 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.osm;
+
+import java.io.Serializable;
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ * Class representing multiple values of a given key.
+ * @since 15376
+ */
+public class Tags implements Serializable {
+
+    private static final long serialVersionUID = 1;
+
+    private final String key;
+    private final Set<String> values;
+
+    /**
+     * Constructs a new {@code Tags}.
+     * @param key the key. Must not be null
+     * @param values the values. Must not be null
+     */
+    public Tags(String key, Set<String> values) {
+        this.key = Objects.requireNonNull(key);
+        this.values = Objects.requireNonNull(values);
+    }
+
+    /**
+     * Returns the key.
+     * @return the key
+     */
+    public String getKey() {
+        return key;
+    }
+
+    /**
+     * Returns the values.
+     * @return the values
+     */
+    public Set<String> getValues() {
+        return values;
+    }
+}
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 15375)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 15376)
@@ -70,4 +70,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.osm.Tags;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
@@ -714,14 +715,24 @@
 
     /**
-     * Returns the selected tag.
+     * Returns the selected tag. Value is empty if several tags are selected for a given key.
      * @return The current selected tag
      */
     public Tag getSelectedProperty() {
+        Tags tags = getSelectedProperties();
+        return tags == null ? null : new Tag(
+                tags.getKey(),
+                tags.getValues().size() > 1 ? "" : tags.getValues().iterator().next());
+    }
+
+    /**
+     * Returns the selected tags. Contains all values if several are selected for a given key.
+     * @return The current selected tags
+     * @since 15376
+     */
+    public Tags getSelectedProperties() {
         int row = tagTable.getSelectedRow();
         if (row == -1) return null;
         Map<String, Integer> map = editHelper.getDataValues(row);
-        return new Tag(
-                editHelper.getDataKey(row),
-                map.size() > 1 ? "" : map.keySet().iterator().next());
+        return new Tags(editHelper.getDataKey(row), map.keySet());
     }
 
