Index: /applications/editors/josm/plugins/reverter/build.xml
===================================================================
--- /applications/editors/josm/plugins/reverter/build.xml	(revision 27090)
+++ /applications/editors/josm/plugins/reverter/build.xml	(revision 27091)
@@ -30,5 +30,5 @@
 <project name="reverter" default="dist" basedir=".">
     <!-- enter the SVN commit message -->
-    <property name="commit.message" value="recompile after change in OsmPrimitive in JOSM 4099"/>
+    <property name="commit.message" value="reverter: add support for remotecontrol for curl-scripted reverts"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
     <property name="plugin.main.version" value="4549"/>
Index: /applications/editors/josm/plugins/reverter/src/reverter/RevertChangesetAction.java
===================================================================
--- /applications/editors/josm/plugins/reverter/src/reverter/RevertChangesetAction.java	(revision 27090)
+++ /applications/editors/josm/plugins/reverter/src/reverter/RevertChangesetAction.java	(revision 27091)
@@ -5,15 +5,7 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
-import java.util.List;
-
-import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.command.Command;
-import org.openstreetmap.josm.gui.PleaseWaitRunnable;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
-import org.openstreetmap.josm.gui.progress.ProgressMonitor;
-import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -48,65 +40,5 @@
         if (revertType == null) return;
 
-        Main.worker.submit(new PleaseWaitRunnable(tr("Reverting...")) {
-            private ChangesetReverter rev;
-            private boolean downloadConfirmed = false;
-
-            private boolean checkAndDownloadMissing() throws OsmTransferException {
-                if (!rev.hasMissingObjects()) return true;
-                if (!downloadConfirmed) {
-                    downloadConfirmed = JOptionPane.showConfirmDialog(Main.parent,
-                            tr("This changeset has objects that are not present in current dataset.\n" +
-                                    "It is needed to download them before reverting. Do you want to continue?"),
-                            tr("Confirm"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
-                    if (!downloadConfirmed) return false;
-                }
-                final PleaseWaitProgressMonitor monitor =
-                    new PleaseWaitProgressMonitor(tr("Fetching missing primitives"));
-                try {
-                    rev.downloadMissingPrimitives(monitor);
-                } finally {
-                    monitor.close();
-                }
-                return !monitor.isCanceled();
-            }
-
-            @Override
-            protected void realRun() throws OsmTransferException {
-                progressMonitor.indeterminateSubTask(tr("Downloading changeset"));
-                rev = new ChangesetReverter(changesetId, revertType,
-                        progressMonitor.createSubTaskMonitor(0, true));
-                if (progressMonitor.isCanceled()) return;
-
-                // Check missing objects
-                rev.checkMissingCreated();
-                rev.checkMissingUpdated();
-                if (rev.hasMissingObjects()) {
-                    // If missing created or updated objects, ask user
-                    rev.checkMissingDeleted();
-                    if (!checkAndDownloadMissing()) return;
-                } else {
-                    // Don't ask user to download primitives going to be undeleted
-                    rev.checkMissingDeleted();
-                    rev.downloadMissingPrimitives(progressMonitor.createSubTaskMonitor(0, false));
-                }
-
-                if (progressMonitor.isCanceled()) return;
-                rev.downloadObjectsHistory(progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
-                if (progressMonitor.isCanceled()) return;
-                if (!checkAndDownloadMissing()) return;
-                List<Command> cmds = rev.getCommands();
-                Command cmd = new RevertChangesetCommand(tr(revertType == RevertType.FULL ? "Revert changeset #{0}" :
-                        "Partially revert changeset #{0}",changesetId),cmds);
-                Main.main.undoRedo.add(cmd);
-            }
-
-            @Override
-            protected void cancel() {
-            }
-
-            @Override
-            protected void finish() {
-            }
-        });
+        Main.worker.submit(new RevertChangesetTask(changesetId, revertType));
     }
 }
Index: /applications/editors/josm/plugins/reverter/src/reverter/ReverterPlugin.java
===================================================================
--- /applications/editors/josm/plugins/reverter/src/reverter/ReverterPlugin.java	(revision 27090)
+++ /applications/editors/josm/plugins/reverter/src/reverter/ReverterPlugin.java	(revision 27091)
@@ -11,4 +11,5 @@
 import org.openstreetmap.josm.actions.UploadAction;
 import org.openstreetmap.josm.gui.MainMenu;
+import org.openstreetmap.josm.io.remotecontrol.RemoteControl;
 import org.openstreetmap.josm.plugins.Plugin;
 import org.openstreetmap.josm.plugins.PluginInformation;
@@ -23,4 +24,5 @@
         MainMenu.add(historyMenu, new RevertChangesetAction());
         UploadAction.registerUploadHook(new ReverterUploadHook(this));
+        new RemoteControl().addRequestHandler(RevertChangesetHandler.command, RevertChangesetHandler.class);
     }
 }
