Index: trunk/src/org/openstreetmap/josm/command/DeleteCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/DeleteCommand.java	(revision 4676)
+++ trunk/src/org/openstreetmap/josm/command/DeleteCommand.java	(revision 4677)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.command;
 
+import java.awt.GridBagLayout;
 import java.awt.geom.Area;
 import static org.openstreetmap.josm.tools.I18n.marktr;
@@ -21,4 +22,7 @@
 import javax.swing.JLabel;
 
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.SplitWayAction;
 import org.openstreetmap.josm.data.osm.Node;
@@ -30,4 +34,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.actionsupport.DeleteFromRelationConfirmationDialog;
@@ -35,4 +40,5 @@
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -317,4 +323,10 @@
 
         Set<OsmPrimitive> primitivesToDelete = new HashSet<OsmPrimitive>(selection);
+
+        Collection<Relation> relationsToDelete = Utils.filteredCollection(primitivesToDelete, Relation.class);
+        if(!relationsToDelete.isEmpty() && !silent && !confirmRelationDeletion(relationsToDelete)) {
+            return null;
+        }
+
         Collection<Way> waysToBeChanged = new HashSet<Way>();
 
@@ -441,3 +453,33 @@
     }
 
+    private static boolean confirmRelationDeletion(Collection<Relation> relations) {
+        String relationString = "<ul>";
+        for(Relation r:relations) {
+            relationString += "<li>"+DefaultNameFormatter.getInstance().format(r) + "</li>";
+        }
+        relationString += "</ul>";
+        
+        JPanel msg = new JPanel(new GridBagLayout());
+        msg.add(new JLabel("<html>" + trn(
+                "You are about to delete {0} relation: {1}"
+                + "<br/>"
+                + "This step is rarely necessary and cannot be undone easily after being uploaded to the server."
+                + "<br/>"
+                + "Do you really want to delete?",
+                "You are about to delete {0} relations: {1}"
+                + "<br/>"
+                + "This step is rarely necessary and cannot be undone easily after being uploaded to the server."
+                + "<br/>"
+                + "Do you really want to delete?",
+                relations.size(), relations.size(), relationString) + "</html>"));
+        boolean answer = ConditionalOptionPaneUtil.showConfirmationDialog(
+                "delete_relations",
+                Main.parent,
+                msg,
+                tr("Delete relation?"),
+                JOptionPane.YES_NO_OPTION,
+                JOptionPane.QUESTION_MESSAGE,
+                JOptionPane.YES_OPTION);
+        return answer;
+    }
 }
