001 // License: GPL. For details, see LICENSE file. 002 package org.openstreetmap.josm.io.remotecontrol.handler; 003 004 import static org.openstreetmap.josm.tools.I18n.tr; 005 006 import java.util.HashMap; 007 import org.openstreetmap.josm.Main; 008 import org.openstreetmap.josm.actions.AutoScaleAction; 009 import org.openstreetmap.josm.command.AddCommand; 010 import org.openstreetmap.josm.data.coor.LatLon; 011 import org.openstreetmap.josm.data.osm.Node; 012 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault; 013 014 /** 015 * Handler for add_node request. 016 */ 017 public class AddNodeHandler extends RequestHandler { 018 019 public static final String command = "add_node"; 020 021 @Override 022 protected void handleRequest() { 023 addNode(args); 024 } 025 026 @Override 027 public String[] getMandatoryParams() 028 { 029 return new String[] { "lat", "lon" }; 030 } 031 032 @Override 033 public String getPermissionMessage() { 034 return tr("Remote Control has been asked to create a new node."); 035 } 036 037 @Override 038 public PermissionPrefWithDefault getPermissionPref() { 039 return PermissionPrefWithDefault.CREATE_OBJECTS; 040 } 041 042 /** 043 * Adds a node, implements the GET /add_node?lon=...&lat=... request. 044 * @param args 045 */ 046 private void addNode(HashMap<String, String> args){ 047 048 // Parse the arguments 049 double lat = Double.parseDouble(args.get("lat")); 050 double lon = Double.parseDouble(args.get("lon")); 051 System.out.println("Adding node at (" + lat + ", " + lon + ")"); 052 053 // Create a new node 054 LatLon ll = new LatLon(lat, lon); 055 Node nnew = new Node(ll); 056 057 // Now execute the commands to add this node. 058 Main.main.undoRedo.add(new AddCommand(nnew)); 059 Main.main.getCurrentDataSet().setSelected(nnew); 060 if (PermissionPrefWithDefault.CHANGE_VIEWPORT.isAllowed()) { 061 AutoScaleAction.autoScale("selection"); 062 } else { 063 Main.map.mapView.repaint(); 064 } 065 } 066 }