Index: /trunk/scripts/TagInfoExtract.groovy
===================================================================
--- /trunk/scripts/TagInfoExtract.groovy	(revision 12759)
+++ /trunk/scripts/TagInfoExtract.groovy	(revision 12760)
@@ -386,5 +386,5 @@
         tmpdir.toFile().deleteOnExit()
         System.setProperty("josm.home", tmpdir.toString())
-        DeleteCommand.setDeletionCallback(DeleteAction.&checkAndConfirmOutlyingDelete)
+        DeleteCommand.setDeletionCallback(DeleteAction.defaultDeletionCallback)
         Territories.initialize()
         RightAndLefthandTraffic.initialize()
Index: /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 12759)
+++ /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 12760)
@@ -4,12 +4,23 @@
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trn;
 
+import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.util.Collection;
 
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.DeleteCommand.DeletionCallback;
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -19,4 +30,21 @@
  */
 public final class DeleteAction extends JosmAction {
+
+    /**
+     * The default {@link DeletionCallback} for {@code DeleteCommand}.
+     * @since 12760
+     */
+    public static final DeletionCallback defaultDeletionCallback = new DeletionCallback() {
+        @Override
+        public boolean checkAndConfirmOutlyingDelete(Collection<? extends OsmPrimitive> primitives,
+                Collection<? extends OsmPrimitive> ignore) {
+            return checkAndConfirmOutlyingDelete(primitives, ignore);
+        }
+
+        @Override
+        public boolean confirmRelationDeletion(Collection<Relation> relations) {
+            return confirmRelationDeletion(relations);
+        }
+    };
 
     /**
@@ -70,3 +98,34 @@
                 primitives, ignore);
     }
+
+    /**
+     * Confirm before deleting a relation, as it is a common newbie error.
+     * @param relations relation to check for deletion
+     * @return {@code true} if user confirms the deletion
+     * @since 12760
+     */
+    public static boolean confirmRelationDeletion(Collection<Relation> relations) {
+        JPanel msg = new JPanel(new GridBagLayout());
+        msg.add(new JMultilineLabel("<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(), DefaultNameFormatter.getInstance().formatAsHtmlUnorderedList(relations, 20))
+                + "</html>"));
+        return ConditionalOptionPaneUtil.showConfirmationDialog(
+                "delete_relations",
+                Main.parent,
+                msg,
+                tr("Delete relation?"),
+                JOptionPane.YES_NO_OPTION,
+                JOptionPane.QUESTION_MESSAGE,
+                JOptionPane.YES_OPTION);
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/command/DeleteCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/DeleteCommand.java	(revision 12759)
+++ /trunk/src/org/openstreetmap/josm/command/DeleteCommand.java	(revision 12760)
@@ -6,5 +6,4 @@
 import static org.openstreetmap.josm.tools.I18n.trn;
 
-import java.awt.GridBagLayout;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -22,8 +21,5 @@
 
 import javax.swing.Icon;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-
-import org.openstreetmap.josm.Main;
+
 import org.openstreetmap.josm.actions.SplitWayAction;
 import org.openstreetmap.josm.actions.SplitWayAction.SplitWayResult;
@@ -38,8 +34,6 @@
 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.dialogs.DeleteFromRelationConfirmationDialog;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -83,5 +77,4 @@
      * @since 12749
      */
-    @FunctionalInterface
     public interface DeletionCallback {
         /**
@@ -93,4 +86,12 @@
          */
         boolean checkAndConfirmOutlyingDelete(Collection<? extends OsmPrimitive> primitives, Collection<? extends OsmPrimitive> ignore);
+
+        /**
+         * Confirm before deleting a relation, as it is a common newbie error.
+         * @param relations relation to check for deletion
+         * @return {@code true} if user confirms the deletion
+         * @since 12760
+         */
+        boolean confirmRelationDeletion(Collection<Relation> relations);
     }
 
@@ -545,5 +546,5 @@
 
         Collection<Relation> relationsToDelete = Utils.filteredCollection(primitivesToDelete, Relation.class);
-        if (!relationsToDelete.isEmpty() && !silent && !confirmRelationDeletion(relationsToDelete))
+        if (!relationsToDelete.isEmpty() && !silent && !callback.confirmRelationDeletion(relationsToDelete))
             return null;
 
@@ -658,29 +659,4 @@
     }
 
-    private static boolean confirmRelationDeletion(Collection<Relation> relations) {
-        JPanel msg = new JPanel(new GridBagLayout());
-        msg.add(new JMultilineLabel("<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(), DefaultNameFormatter.getInstance().formatAsHtmlUnorderedList(relations, 20))
-                + "</html>"));
-        return ConditionalOptionPaneUtil.showConfirmationDialog(
-                "delete_relations",
-                Main.parent,
-                msg,
-                tr("Delete relation?"),
-                JOptionPane.YES_NO_OPTION,
-                JOptionPane.QUESTION_MESSAGE,
-                JOptionPane.YES_OPTION);
-    }
-
     @Override
     public int hashCode() {
Index: /trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 12759)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 12760)
@@ -968,5 +968,5 @@
 
     static void setupCallbacks() {
-        DeleteCommand.setDeletionCallback(DeleteAction::checkAndConfirmOutlyingDelete);
+        DeleteCommand.setDeletionCallback(DeleteAction.defaultDeletionCallback);
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 12759)
+++ /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 12760)
@@ -128,5 +128,5 @@
 
         // Setup callbacks
-        DeleteCommand.setDeletionCallback(DeleteAction::checkAndConfirmOutlyingDelete);
+        DeleteCommand.setDeletionCallback(DeleteAction.defaultDeletionCallback);
 
         if (createGui) {
Index: /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 12759)
+++ /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 12760)
@@ -272,5 +272,5 @@
         User.clearUserMap();
         // Setup callbacks
-        DeleteCommand.setDeletionCallback(DeleteAction::checkAndConfirmOutlyingDelete);
+        DeleteCommand.setDeletionCallback(DeleteAction.defaultDeletionCallback);
 
         // Set up i18n
