Ticket #23179: v2-0001-Include-changeset-in-note-comment-if-feasible.patch

File v2-0001-Include-changeset-in-note-comment-if-feasible.patch, 3.9 KB (added by qeef, 14 months ago)
  • src/org/openstreetmap/josm/gui/NoteInputDialog.java

    From 0ae7f2e96ef6aa139bd61c7b6ba9f3a7bcf9f210 Mon Sep 17 00:00:00 2001
    From: Jiri Vlasak <jiri.hubacek@gmail.com>
    Date: Tue, 19 Sep 2023 01:02:05 +0200
    Subject: [PATCH v2] Include changeset in note comment if feasible
    
    When closing a note, check for the changeset in the changeset cache. If
    there is a changeset with the comment that contains a link to the note
    being closed, put the link to the changeset as the default text of the
    closing note comment.
    ---
     .../openstreetmap/josm/gui/NoteInputDialog.java  | 12 ++++++++++++
     .../josm/gui/dialogs/NotesDialog.java            | 16 ++++++++++++++--
     2 files changed, 26 insertions(+), 2 deletions(-)
    
    diff --git a/src/org/openstreetmap/josm/gui/NoteInputDialog.java b/src/org/openstreetmap/josm/gui/NoteInputDialog.java
    index 779959b856..c2881d5d13 100644
    a b public class NoteInputDialog extends ExtendedDialog {  
    4444     * @param icon Icon to display in the action button
    4545     */
    4646    public void showNoteDialog(String message, Icon icon) {
     47        showNoteDialog(message, icon, "");
     48    }
     49
     50    /**
     51     * Displays the dialog to the user
     52     * @param message Translated message to display to the user as input prompt
     53     * @param icon Icon to display in the action button
     54     * @param text Default text of the note's comment
     55     * @param since xxx
     56     */
     57    public void showNoteDialog(String message, Icon icon, String text) {
     58        textArea.setText(text);
    4759        textArea.setRows(6);
    4860        textArea.setColumns(30);
    4961        textArea.setLineWrap(true);
  • src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java

    diff --git a/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java b/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
    index 6e0fc7e8ff..922846535d 100644
    a b import org.openstreetmap.josm.actions.mapmode.AddNoteAction;  
    4040import org.openstreetmap.josm.data.notes.Note;
    4141import org.openstreetmap.josm.data.notes.Note.State;
    4242import org.openstreetmap.josm.data.notes.NoteComment;
     43import org.openstreetmap.josm.data.osm.Changeset;
     44import org.openstreetmap.josm.data.osm.ChangesetCache;
    4345import org.openstreetmap.josm.data.osm.NoteData;
    4446import org.openstreetmap.josm.data.osm.NoteData.NoteDataUpdateListener;
    4547import org.openstreetmap.josm.gui.MainApplication;
    public class NotesDialog extends ToggleDialog implements LayerChangeListener, No  
    422424
    423425        @Override
    424426        public void actionPerformed(ActionEvent e) {
     427            Note note = displayList.getSelectedValue();
     428            String changesetUrl = "";
     429            if (note != null) {
     430                String noteUrlShort = "osm.org/note/" + note.getId();
     431                String noteUrlLong = "openstreetmap.org/note/" + note.getId();
     432                for (Changeset cs: ChangesetCache.getInstance().getChangesets()) {
     433                    if (cs.getComment().indexOf(noteUrlShort) > -1 || cs.getComment().indexOf(noteUrlLong) > -1) {
     434                        changesetUrl = "https://www.osm.org/changeset/" + cs.getId();
     435                    }
     436                }
     437            }
    425438            NoteInputDialog dialog = new NoteInputDialog(MainApplication.getMainFrame(), tr("Close note"), tr("Close note"));
    426             dialog.showNoteDialog(tr("Close note with message:"), ImageProvider.get("dialogs/notes", "note_closed"));
     439            dialog.showNoteDialog(tr("Close note with message:"), ImageProvider.get("dialogs/notes", "note_closed"), changesetUrl);
    427440            if (dialog.getValue() != 1) {
    428441                return;
    429442            }
    430             Note note = displayList.getSelectedValue();
    431443            if (note != null) {
    432444                int selectedIndex = displayList.getSelectedIndex();
    433445                noteData.closeNote(note, dialog.getInputText());