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 {
|
44 | 44 | * @param icon Icon to display in the action button |
45 | 45 | */ |
46 | 46 | 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); |
47 | 58 | textArea.setRows(6); |
48 | 59 | textArea.setColumns(30); |
49 | 60 | textArea.setLineWrap(true); |
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;
|
40 | 40 | import org.openstreetmap.josm.data.notes.Note; |
41 | 41 | import org.openstreetmap.josm.data.notes.Note.State; |
42 | 42 | import org.openstreetmap.josm.data.notes.NoteComment; |
| 43 | import org.openstreetmap.josm.data.osm.Changeset; |
| 44 | import org.openstreetmap.josm.data.osm.ChangesetCache; |
43 | 45 | import org.openstreetmap.josm.data.osm.NoteData; |
44 | 46 | import org.openstreetmap.josm.data.osm.NoteData.NoteDataUpdateListener; |
45 | 47 | import org.openstreetmap.josm.gui.MainApplication; |
… |
… |
public class NotesDialog extends ToggleDialog implements LayerChangeListener, No
|
422 | 424 | |
423 | 425 | @Override |
424 | 426 | 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 | } |
425 | 440 | 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); |
427 | 442 | if (dialog.getValue() != 1) { |
428 | 443 | return; |
429 | 444 | } |
430 | | Note note = displayList.getSelectedValue(); |
431 | 445 | if (note != null) { |
432 | 446 | int selectedIndex = displayList.getSelectedIndex(); |
433 | 447 | noteData.closeNote(note, dialog.getInputText()); |