001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.dialogs.relation.actions; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import java.awt.Dialog; 007import java.awt.event.ActionEvent; 008 009import org.openstreetmap.josm.Main; 010import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask; 011import org.openstreetmap.josm.gui.dialogs.relation.MemberTable; 012import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel; 013import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor; 014import org.openstreetmap.josm.gui.layer.OsmDataLayer; 015import org.openstreetmap.josm.io.OnlineResource; 016import org.openstreetmap.josm.tools.ImageProvider; 017 018/** 019 * Download selected incomplete members. 020 * @since 9496 021 */ 022public class DownloadSelectedIncompleteMembersAction extends AbstractRelationEditorAction { 023 024 /** 025 * Constructs a new {@code DownloadSelectedIncompleteMembersAction}. 026 * @param memberTable member table 027 * @param memberTableModel member table model 028 * @param actionMapKey action map key 029 * @param layer OSM data layer 030 * @param editor relation editor 031 */ 032 public DownloadSelectedIncompleteMembersAction(MemberTable memberTable, MemberTableModel memberTableModel, String actionMapKey, 033 OsmDataLayer layer, IRelationEditor editor) { 034 super(memberTable, memberTableModel, actionMapKey, layer, editor); 035 // Shortcut.register Shortcut("relationeditor:downloadincomplete", tr("Relation Editor: Download Members"), 036 // KeyEvent.VK_K, Shortcut.ALT) 037 putValue(SHORT_DESCRIPTION, tr("Download selected incomplete members")); 038 putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "downloadincompleteselected")); 039 putValue(NAME, tr("Download Members")); 040 updateEnabledState(); 041 } 042 043 @Override 044 public void actionPerformed(ActionEvent e) { 045 if (!isEnabled()) 046 return; 047 Main.worker.submit(new DownloadRelationMemberTask( 048 editor.getRelation(), 049 memberTableModel.getSelectedIncompleteMemberPrimitives(), 050 layer, 051 (Dialog) editor) 052 ); 053 } 054 055 @Override 056 protected void updateEnabledState() { 057 setEnabled(memberTableModel.hasIncompleteSelectedMembers() && !Main.isOffline(OnlineResource.OSM_API)); 058 } 059}