Changeset 13109 in josm


Ignore:
Timestamp:
2017-11-11T02:03:41+01:00 (8 days ago)
Author:
Don-vip
Message:

fix #15537 - Support changeset hashtags (hashtags changeset tag, extracted from comment at upload, or set by remote control through new changeset_hashtags parameter)

Location:
trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/io/ChangesetCommentModel.java

    r10210 r13109  
    22package org.openstreetmap.josm.gui.io;
    33
     4import java.util.Arrays;
     5import java.util.List;
    46import java.util.Objects;
     7import java.util.stream.Collectors;
    58
    69import org.openstreetmap.josm.gui.util.ChangeNotifier;
     
    3538        return comment == null ? "" : comment;
    3639    }
     40
     41    /**
     42     * Extracts the list of hashtags from the comment text.
     43     * @return the list of hashtags from the comment text. Can be empty, but not null.
     44     * @since 13109
     45     */
     46    public List<String> findHashTags() {
     47        return Arrays.stream(comment.split("\\s")).filter(s -> s.length() >= 2 && s.charAt(0) == '#').collect(Collectors.toList());
     48    }
    3749}
  • trunk/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java

    r12726 r13109  
    4848        this.changesetSourceModel = changesetSourceModel;
    4949        this.changesetReviewModel = changesetReviewModel;
    50         changesetCommentModel.addChangeListener(new ChangesetCommentChangeListener("comment"));
     50        changesetCommentModel.addChangeListener(new ChangesetCommentChangeListener("comment", "hashtags"));
    5151        changesetSourceModel.addChangeListener(new ChangesetCommentChangeListener("source"));
    5252        changesetReviewModel.addChangeListener(new ChangesetReviewChangeListener());
     
    135135
    136136        private final String key;
     137        private final String hashtagsKey;
    137138
    138139        ChangesetCommentChangeListener(String key) {
     140            this(key, null);
     141        }
     142
     143        ChangesetCommentChangeListener(String key, String hashtagsKey) {
    139144            this.key = key;
     145            this.hashtagsKey = hashtagsKey;
    140146        }
    141147
     
    143149        public void stateChanged(ChangeEvent e) {
    144150            if (e.getSource() instanceof ChangesetCommentModel) {
    145                 String newValue = ((ChangesetCommentModel) e.getSource()).getComment();
     151                ChangesetCommentModel model = ((ChangesetCommentModel) e.getSource());
     152                String newValue = model.getComment();
    146153                String oldValue = Optional.ofNullable(getTagEditorValue(key)).orElse("");
    147154                if (!oldValue.equals(newValue)) {
    148155                    setProperty(key, newValue);
     156                    if (hashtagsKey != null) {
     157                        String newHashTags = String.join(";", model.findHashTags());
     158                        String oldHashTags = Optional.ofNullable(getTagEditorValue(hashtagsKey)).orElse("");
     159                        if (!oldHashTags.equals(newHashTags)) {
     160                            setProperty(hashtagsKey, newHashTags);
     161                        }
     162                    }
    149163                }
    150164            }
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java

    r12846 r13109  
    66import java.awt.geom.Area;
    77import java.awt.geom.Rectangle2D;
     8import java.util.Arrays;
    89import java.util.Collection;
    910import java.util.Collections;
     
    7778    @Override
    7879    public String[] getOptionalParams() {
    79         return new String[] {"new_layer", "layer_name", "addtags", "select", "zoom_mode", "changeset_comment", "changeset_source", "search"};
     80        return new String[] {"new_layer", "layer_name", "addtags", "select", "zoom_mode",
     81                "changeset_comment", "changeset_source", "changeset_hashtags", "search"};
    8082    }
    8183
     
    213215
    214216        // add changeset tags after download if necessary
    215         if (args.containsKey("changeset_comment") || args.containsKey("changeset_source")) {
     217        if (args.containsKey("changeset_comment") || args.containsKey("changeset_source") || args.containsKey("changeset_hashtags")) {
    216218            MainApplication.worker.submit(() -> {
    217                 if (MainApplication.getLayerManager().getEditDataSet() != null) {
    218                     if (args.containsKey("changeset_comment")) {
    219                         MainApplication.getLayerManager().getEditDataSet().addChangeSetTag("comment", args.get("changeset_comment"));
    220                     }
    221                     if (args.containsKey("changeset_source")) {
    222                         MainApplication.getLayerManager().getEditDataSet().addChangeSetTag("source", args.get("changeset_source"));
     219                DataSet ds = MainApplication.getLayerManager().getEditDataSet();
     220                if (ds != null) {
     221                    for (String tag : Arrays.asList("changeset_comment", "changeset_source", "changeset_hashtags")) {
     222                        if (args.containsKey(tag)) {
     223                            ds.addChangeSetTag(tag.substring("changeset_".length()), args.get(tag));
     224                        }
    223225                    }
    224226                }
Note: See TracChangeset for help on using the changeset viewer.