Ticket #18038: 18038.patch

File 18038.patch, 2.0 KB (added by taylor.smock, 5 weeks ago)

Add changeset_tags to LoadAndZoomHandler, changeset_tags can be overriden with changeset_source (and other existing tags) in the current implementation

  • src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java

     
    99import java.util.Collection;
    1010import java.util.Collections;
    1111import java.util.HashSet;
     12import java.util.LinkedHashSet;
    1213import java.util.Set;
    1314import java.util.concurrent.Future;
    1415
     
    224225            zoom(Collections.<OsmPrimitive>emptySet(), bbox);
    225226        }
    226227
     228        // This comes before the other changeset tags, so that they can be overridden
     229        if (args.containsKey("changeset_tags")) {
     230            MainApplication.worker.submit(() -> {
     231                DataSet ds = MainApplication.getLayerManager().getEditDataSet();
     232                if (ds != null) {
     233                    // This logic is (largely) stolen from the AddTagsDialog.
     234                    args.get("changeset_tags");
     235                    Set<String> tagSet = new LinkedHashSet<>();
     236                    for (String tag : args.get("changeset_tags").split("\\|")) {
     237                        if (!tag.trim().isEmpty() && tag.contains("=")) {
     238                            tagSet.add(tag.trim());
     239                        }
     240                    }
     241                    if (!tagSet.isEmpty()) {
     242                        for (String tag : tagSet) {
     243                            // support a  =   b===c as "a"="b===c"
     244                            String[] pair = tag.split("\\s*=\\s*", 2);
     245                            ds.addChangeSetTag(pair[0], pair.length < 2 ? "" : pair[1]);
     246                        }
     247                    }
     248                }
     249            });
     250        }
     251
    227252        // add changeset tags after download if necessary
    228253        if (args.containsKey("changeset_comment") || args.containsKey("changeset_source") || args.containsKey("changeset_hashtags")) {
    229254            MainApplication.worker.submit(() -> {