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()); |