Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 1830)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 1831)
@@ -723,6 +723,17 @@
                     KeyEvent.VK_S, Shortcut.GROUP_MNEMONIC);
 
+            updateEnabledState();
+        }
+
+        protected void updateEnabledState() {
             DataSet ds = getLayer().data;
-            setEnabled(ds != null && !ds.getSelected().isEmpty());
+            if (ds == null || ds.getSelected().isEmpty()) {
+                setEnabled(false);
+                return;
+            }
+            // only enable the action if we have members referring to the
+            // selected primitives
+            //
+            setEnabled(memberTableModel.hasMembersReferringTo(ds.getSelected()));
         }
 
@@ -732,5 +743,5 @@
 
         public void tableChanged(TableModelEvent e) {
-            setEnabled(selectionTableModel.getRowCount() > 0);
+            updateEnabledState();
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 1830)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 1831)
@@ -6,4 +6,5 @@
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -403,4 +404,30 @@
         return !r.incomplete;
     }
+
+    /**
+     * Replies true if there is at least one relation member in this model
+     * which refers to at least on the primitives in <code>primitives</code>.
+     * 
+     * @param primitives the collection of primitives
+     * @return true if there is at least one relation member in this model
+     * which refers to at least on the primitives in <code>primitives</code>; false
+     * otherwise
+     */
+    public boolean hasMembersReferringTo(Collection<OsmPrimitive> primitives) {
+        if (primitives == null || primitives.isEmpty())
+            return false;
+        HashSet<OsmPrimitive> referrers = new HashSet<OsmPrimitive>();
+        for(RelationMember member : members) {
+            referrers.add(member.member);
+        }
+        Iterator<OsmPrimitive> it = primitives.iterator();
+        while(it.hasNext()) {
+            OsmPrimitive referred = it.next();
+            if (referrers.contains(referred))
+                return true;
+        }
+        return false;
+    }
+
 
     void sort() {
