diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
index b00a423..c9a7461 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
@@ -23,6 +23,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
@@ -440,7 +441,13 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
     }
 
     RelationMember getRelationMemberForPrimitive(final OsmPrimitive primitive) {
-        final Collection<TaggingPreset> presets = TaggingPresets.getMatchingPresets(EnumSet.of(TaggingPresetType.forPrimitive(relation)),
+        TaggingPresetType presetType;
+        if (relation != null) {
+            presetType = TaggingPresetType.forPrimitive(relation);
+        } else {
+            presetType = TaggingPresetType.forPrimitiveType(OsmPrimitiveType.RELATION);
+        }
+        final Collection<TaggingPreset> presets = TaggingPresets.getMatchingPresets(EnumSet.of(presetType),
                 presetHandler.getSelection().iterator().next().getKeys(), false);
         Collection<String> potentialRoles = new TreeSet<>();
         for (TaggingPreset tp : presets) {
