Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java	(revision 4832)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java	(revision 4833)
@@ -16,4 +16,5 @@
 
 import org.openstreetmap.josm.io.remotecontrol.handler.AddNodeHandler;
+import org.openstreetmap.josm.io.remotecontrol.handler.AddWayHandler;
 import org.openstreetmap.josm.io.remotecontrol.handler.ImageryHandler;
 import org.openstreetmap.josm.io.remotecontrol.handler.ImportHandler;
@@ -116,4 +117,5 @@
         addRequestHandlerClass(ImageryHandler.command, ImageryHandler.class, true);
         addRequestHandlerClass(AddNodeHandler.command, AddNodeHandler.class, true);
+        addRequestHandlerClass(AddWayHandler.command, AddWayHandler.class, true);
         addRequestHandlerClass(ImportHandler.command, ImportHandler.class, true);
         addRequestHandlerClass(VersionHandler.command, VersionHandler.class, true);
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 4832)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 4833)
@@ -5,6 +5,6 @@
 
 import java.util.HashMap;
-
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -38,6 +38,5 @@
 
     @Override
-    public PermissionPrefWithDefault getPermissionPref()
-    {
+    public PermissionPrefWithDefault getPermissionPref() {
         return new PermissionPrefWithDefault(permissionKey, permissionDefault,
                 "RemoteControl: creating objects forbidden by preferences");
@@ -62,5 +61,9 @@
         Main.main.undoRedo.add(new AddCommand(nnew));
         Main.main.getCurrentDataSet().setSelected(nnew);
-        Main.map.mapView.repaint();
+        if (Main.pref.getBoolean(LoadAndZoomHandler.changeViewportPermissionKey, LoadAndZoomHandler.changeViewportPermissionDefault)) {
+            new AutoScaleAction("selection").actionPerformed(null);
+        } else {
+            Main.map.mapView.repaint();
+        }
     }
 }
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 4833)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 4833)
@@ -0,0 +1,54 @@
+package org.openstreetmap.josm.io.remotecontrol.handler;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.LinkedList;
+import java.util.List;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.AutoScaleAction;
+import org.openstreetmap.josm.command.AddCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.Way;
+
+/**
+ * Adds a way to the current dataset. For instance, {@code /add_way?way=lat1,lon2;lat2,lon2}.
+ */
+public class AddWayHandler extends RequestHandler {
+
+    public static final String command = "add_way";
+
+    @Override
+    protected String[] getMandatoryParams() {
+        return new String[]{"way"};
+    }
+
+    @Override
+    protected void handleRequest() throws RequestHandlerErrorException, RequestHandlerBadRequestException {
+        Way way = new Way();
+        List<Command> commands = new LinkedList<Command>();
+        for (String coordinatesString : args.get("way").split(";\\s*")) {
+            String[] coordinates = coordinatesString.split(",\\s*", 2);
+            double lat = Double.parseDouble(coordinates[0]);
+            double lon = Double.parseDouble(coordinates[1]);
+            Node node = new Node(new LatLon(lat, lon));
+            way.addNode(node);
+            commands.add(new AddCommand(node));
+        }
+        commands.add(new AddCommand(way));
+        Main.main.undoRedo.add(new SequenceCommand(tr("Add way"), commands));
+        Main.main.getCurrentDataSet().setSelected(way);
+        if (Main.pref.getBoolean(LoadAndZoomHandler.changeViewportPermissionKey, LoadAndZoomHandler.changeViewportPermissionDefault)) {
+            new AutoScaleAction("selection").actionPerformed(null);
+        } else {
+            Main.map.mapView.repaint();
+        }
+    }
+
+    @Override
+    public String getPermissionMessage() {
+        return tr("Remote Control has been asked to create a new way.");
+    }
+}
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 4832)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 4833)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.io.remotecontrol.handler;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.LinkedList;
@@ -38,5 +40,5 @@
     @Override
     public String getPermissionMessage() {
-        return "";
+        return tr("Remote Control has been asked to load objects (specified by their id) from the API.");
     }
 }
