Ignore:
Timestamp:
2017-11-11T02:03:41+01:00 (6 years 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/src/org/openstreetmap/josm/gui/io
Files:
2 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            }
Note: See TracChangeset for help on using the changeset viewer.