Index: applications/editors/josm/plugins/undelete/build.xml
===================================================================
--- applications/editors/josm/plugins/undelete/build.xml	(revision 24904)
+++ applications/editors/josm/plugins/undelete/build.xml	(revision 24905)
@@ -31,5 +31,5 @@
 
 	<!-- enter the SVN commit message -->
-	<property name="commit.message" value="fix main class" />
+	<property name="commit.message" value="add rudimentary support for undeleting relations" />
 	<!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
 	<property name="plugin.main.version" value="2830" />
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 24904)
+++ applications/editors/josm/plugins/undelete/src/org/openstreetmap/josm/plugins/undelete/Undelete.java	(revision 24905)
@@ -26,4 +26,6 @@
 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.SimplePrimitiveId;
 import org.openstreetmap.josm.data.osm.User;
@@ -33,4 +35,5 @@
 import org.openstreetmap.josm.data.osm.history.HistoryNode;
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
+import org.openstreetmap.josm.data.osm.history.HistoryRelation;
 import org.openstreetmap.josm.data.osm.history.HistoryWay;
 import org.openstreetmap.josm.gui.ExtendedDialog;
@@ -44,5 +47,7 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
-
+/**
+ *  // TODO: undelete relation members if necessary
+ */
 
 public class Undelete extends Plugin {
@@ -79,4 +84,5 @@
         OsmPrimitiveTypesComboBox cbType = new OsmPrimitiveTypesComboBox();
         cbType.setToolTipText("Choose the OSM object type");
+        cbType.setSelectedIndex(Main.pref.getInteger("undelete.lasttype", 0));
         gc.weightx = 1;
         all.add(cbType, gc);
@@ -111,4 +117,5 @@
         dialog.showDialog();
         if (dialog.getValue() != 1) return;
+        Main.pref.putInteger("undelete.lasttype", cbType.getSelectedIndex());
         Main.pref.put("undelete.newlayer", layer.isSelected());
         Main.pref.putInteger("undelete.osmid", tfId.getOsmId());
@@ -210,7 +217,29 @@
                   else
                   {
-                      primitive=new Node();
+                      primitive=new Relation();
                       hPrimitive1=h.getLatest();
-                      hPrimitive2=h.getLatest();
+                      hPrimitive2=h.getByVersion(h.getNumVersions()-1);
+                      
+                      Relation rel = new Relation(id, (int) hPrimitive1.getVersion());
+                      
+                      HistoryRelation hRel = (HistoryRelation) hPrimitive2;
+                      
+                      List<RelationMember> members = new ArrayList<RelationMember>(hRel.getNumMembers());
+                      for (org.openstreetmap.josm.data.osm.history.RelationMember m : hRel.getMembers()) {
+                        OsmPrimitive p = datas.getPrimitiveById(m.getPrimitiveId(), m.getPrimitiveType());
+                        if (p == null) {
+                            switch (m.getPrimitiveType()) {
+                            case NODE: p = new Node(m.getPrimitiveId()); break;
+                            case WAY: p = new Way(m.getPrimitiveId()); break;
+                            case RELATION: p = new Relation(m.getPrimitiveId()); break;
+                            }
+                            datas.addPrimitive(p);
+                        }
+                        members.add(new RelationMember(m.getRole(), p));
+                      }
+                      
+                      rel.setMembers(members);
+                      
+                      primitive=rel;
                   }
 
