Index: applications/editors/josm/plugins/undelete/src/org/openstreetmap/josm/plugins/undelete/Undelete.java
===================================================================
--- applications/editors/josm/plugins/undelete/src/org/openstreetmap/josm/plugins/undelete/Undelete.java	(revision 34870)
+++ applications/editors/josm/plugins/undelete/src/org/openstreetmap/josm/plugins/undelete/Undelete.java	(revision 34871)
@@ -7,4 +7,7 @@
 import org.openstreetmap.josm.plugins.PluginInformation;
 
+/**
+ * Create the undelete plugin.
+ */
 public class Undelete extends Plugin {
 
Index: applications/editors/josm/plugins/undelete/src/org/openstreetmap/josm/plugins/undelete/UndeleteAction.java
===================================================================
--- applications/editors/josm/plugins/undelete/src/org/openstreetmap/josm/plugins/undelete/UndeleteAction.java	(revision 34870)
+++ applications/editors/josm/plugins/undelete/src/org/openstreetmap/josm/plugins/undelete/UndeleteAction.java	(revision 34871)
@@ -8,9 +8,12 @@
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Set;
 
 import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.actions.AutoScaleAction;
+import org.openstreetmap.josm.actions.AutoScaleAction.AutoScaleMode;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -40,4 +43,7 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
+/**
+ * Undelete one or more objects.
+ */
 public class UndeleteAction extends JosmAction {
 
@@ -49,8 +55,11 @@
         private final List<PrimitiveId> ids;
 
-        private Worker(OsmPrimitive parent, OsmDataLayer layer, List<PrimitiveId> ids) {
+        private Set<OsmPrimitive> restored;
+
+        private Worker(OsmPrimitive parent, OsmDataLayer layer, List<PrimitiveId> ids, Set<OsmPrimitive> restored) {
             this.parent = parent;
             this.layer = layer;
             this.ids = ids;
+            this.restored = restored != null ? restored : new LinkedHashSet<>();
         }
 
@@ -83,4 +92,5 @@
 
                             primitive = layer.data.getPrimitiveById(id, type);
+                            restored.add(primitive);
                         } else {
                             // We search n-1 version with redaction robustness
@@ -88,5 +98,5 @@
                             long n = hPrimitive1.getVersion();
                             while (hPrimitive2 == null && idx < n) {
-                                hPrimitive2 =  h.getByVersion(n - idx++);
+                                hPrimitive2 = h.getByVersion(n - idx++);
                             }
                             if (type.equals(OsmPrimitiveType.NODE)) {
@@ -109,7 +119,4 @@
 
                                 HistoryWay hWay = (HistoryWay) hPrimitive2;
-                                // System.out.println(tr("Primitive {0} version {1}: {2} nodes",
-                                // hPrimitive2.getId(), hPrimitive2.getVersion(),
-                                // hWay.getNumNodes()));
                                 List<PrimitiveId> nodeIds = new ArrayList<>();
                                 if (hWay != null) {
@@ -118,5 +125,5 @@
                                     }
                                 }
-                                undelete(false, nodeIds, way);
+                                undelete(false, nodeIds, way, restored);
 
                                 primitive = way;
@@ -147,4 +154,5 @@
                                             }
                                             layer.data.addPrimitive(p);
+                                            restored.add(p);
                                         }
                                         members.add(new RelationMember(m.getRole(), p));
@@ -164,4 +172,5 @@
 
                                 layer.data.addPrimitive(primitive);
+                                restored.add(primitive);
                             } else {
                               final String msg = OsmPrimitiveType.NODE.equals(type)
@@ -186,7 +195,9 @@
             if (parent instanceof Way && !nodes.isEmpty()) {
                 ((Way) parent).setNodes(nodes);
-                MainApplication.getMap().repaint();
             }
-            GuiHelper.runInEDT(() -> AutoScaleAction.zoomTo(layer.data.allNonDeletedPrimitives()));
+            if (!restored.isEmpty()) {
+                layer.data.setSelected(restored);
+                GuiHelper.runInEDT(() -> AutoScaleAction.autoScale(AutoScaleMode.SELECTION));
+            }
         }
     }
@@ -208,4 +219,8 @@
 
     public void undelete(boolean newLayer, final List<PrimitiveId> ids, final OsmPrimitive parent) {
+        undelete(newLayer, ids, parent, new LinkedHashSet<>());
+    }
+
+    private void undelete(boolean newLayer, final List<PrimitiveId> ids, final OsmPrimitive parent, Set<OsmPrimitive> restored) {
 
         // TODO: undelete relation members if necessary
@@ -226,5 +241,5 @@
 
         MainApplication.worker.execute(task);
-        MainApplication.worker.submit(new Worker(parent, layer, ids));
+        MainApplication.worker.submit(new Worker(parent, layer, ids, restored));
     }
 }
Index: applications/editors/josm/plugins/undelete/src/org/openstreetmap/josm/plugins/undelete/UndeleteDialog.java
===================================================================
--- applications/editors/josm/plugins/undelete/src/org/openstreetmap/josm/plugins/undelete/UndeleteDialog.java	(revision 34870)
+++ applications/editors/josm/plugins/undelete/src/org/openstreetmap/josm/plugins/undelete/UndeleteDialog.java	(revision 34871)
@@ -20,4 +20,8 @@
 import org.openstreetmap.josm.spi.preferences.Config;
 
+/**
+ *
+ * Popup for undelete action. Allows to enter a list of objects.
+ */
 public class UndeleteDialog extends ExtendedDialog {
 
@@ -26,5 +30,5 @@
 
     public UndeleteDialog(Component parent) {
-        super(parent, tr("Undelete Object"), new String[] {tr("Undelete object"), tr("Cancel")});
+        super(parent, tr("Undelete Object"), tr("Undelete object"), tr("Cancel"));
 
         JPanel all = new JPanel(new GridBagLayout());
@@ -52,6 +56,6 @@
         all.add(layer, gc);
         setContent(all, false);
-        setButtonIcons(new String[] {"undelete.png", "cancel.png"});
-        setToolTipTexts(new String[] {tr("Start undeleting"), tr("Close dialog and cancel")});
+        setButtonIcons("undelete.png", "cancel.png");
+        setToolTipTexts(tr("Start undeleting"), tr("Close dialog and cancel"));
         setDefaultButton(1);
     }
