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

File 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 6bf560abde07e614415ecfb86018835363ceb062 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] 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.
    ---
     .../josm/gui/NoteInputDialog.java              | 11 +++++++++++
     .../josm/gui/dialogs/NotesDialog.java          | 18 ++++++++++++++++--
     2 files changed, 27 insertions(+), 2 deletions(-)
    
    diff --git a/src/org/openstreetmap/josm/gui/NoteInputDialog.java b/src/org/openstreetmap/josm/gui/NoteInputDialog.java
    index 779959b856..7c292353cb 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     */
     56    public void showNoteDialog(String message, Icon icon, String text) {
     57        textArea.setText(text);
    4758        textArea.setRows(6);
    4859        textArea.setColumns(30);
    4960        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..a1c1b8600c 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            String note_url_short = "";
     428            String note_url_long = "";
     429            String changeset_url = "";
     430            Note note = displayList.getSelectedValue();
     431            if (note != null) {
     432                note_url_short = "https://www.osm.org/note/" + note.getId();
     433                note_url_long = "https://www.openstreetmap.org/note/" + note.getId();
     434                for (Changeset cs: ChangesetCache.getInstance().getChangesets()) {
     435                    if (cs.getComment().indexOf(note_url_short) > -1 || cs.getComment().indexOf(note_url_long) > -1) {
     436                        changeset_url = "https://www.osm.org/changeset/" + cs.getId();
     437                    }
     438                }
     439            }
    425440            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"));
     441            dialog.showNoteDialog(tr("Close note with message:"), ImageProvider.get("dialogs/notes", "note_closed"), changeset_url);
    427442            if (dialog.getValue() != 1) {
    428443                return;
    429444            }
    430             Note note = displayList.getSelectedValue();
    431445            if (note != null) {
    432446                int selectedIndex = displayList.getSelectedIndex();
    433447                noteData.closeNote(note, dialog.getInputText());