// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.actions; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.event.ActionEvent; import java.util.List; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.actions.upload.UploadNotesTask; import org.openstreetmap.josm.data.osm.NoteData; import org.openstreetmap.josm.gui.layer.NoteLayer; import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor; import org.openstreetmap.josm.tools.ImageProvider; /** * Action to initiate uploading changed notes to the OSM server. * On click, it finds the note layer and fires off an upload task * with the note data contained in the layer. * */ public class UploadNotesAction extends JosmAction { /** Create a new action to upload notes */ public UploadNotesAction() { putValue(SHORT_DESCRIPTION, tr("Upload note changes to server")); putValue(NAME, tr("Upload notes")); new ImageProvider("upload").getResource().attachImageIcon(this, true); } @Override public void actionPerformed(ActionEvent e) { List noteLayers = Main.getLayerManager().getLayersOfType(NoteLayer.class); NoteLayer layer; if (!noteLayers.isEmpty()) { layer = noteLayers.get(0); } else { Main.error("No note layer found"); return; } Main.debug("uploading note changes"); NoteData noteData = layer.getNoteData(); if (noteData == null || !noteData.isModified()) { Main.debug("No changed notes to upload"); return; } new UploadNotesTask().uploadNotes(noteData, new PleaseWaitProgressMonitor(tr("Uploading notes to server"))); } }