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; 008import java.awt.event.KeyEvent; 009 010import org.openstreetmap.josm.Main; 011import org.openstreetmap.josm.gui.MainApplication; 012import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask; 013import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor; 014import org.openstreetmap.josm.gui.dialogs.relation.MemberTable; 015import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel; 016import org.openstreetmap.josm.gui.layer.OsmDataLayer; 017import org.openstreetmap.josm.tools.ImageProvider; 018import org.openstreetmap.josm.tools.Shortcut; 019 020/** 021 * Download all incomplete members. 022 * @since 9496 023 */ 024public class DownloadIncompleteMembersAction extends AbstractRelationEditorAction { 025 026 /** 027 * Constructs a new {@code DownloadIncompleteMembersAction}. 028 * @param memberTable member table 029 * @param memberTableModel member table model 030 * @param actionMapKey action map key 031 * @param layer OSM data layer 032 * @param editor relation editor 033 */ 034 public DownloadIncompleteMembersAction(MemberTable memberTable, MemberTableModel memberTableModel, String actionMapKey, 035 OsmDataLayer layer, IRelationEditor editor) { 036 super(memberTable, memberTableModel, actionMapKey, layer, editor); 037 Shortcut sc = Shortcut.registerShortcut("relationeditor:downloadincomplete", tr("Relation Editor: Download Members"), 038 KeyEvent.VK_HOME, Shortcut.ALT); 039 sc.setAccelerator(this); 040 putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tr("Download all incomplete members"), sc)); 041 new ImageProvider("dialogs/relation", "downloadincomplete").getResource().attachImageIcon(this, true); 042 putValue(NAME, tr("Download Members")); 043 updateEnabledState(); 044 } 045 046 @Override 047 public void actionPerformed(ActionEvent e) { 048 if (!isEnabled()) 049 return; 050 MainApplication.worker.submit(new DownloadRelationMemberTask( 051 editor.getRelation(), 052 memberTableModel.getIncompleteMemberPrimitives(), 053 layer, 054 (Dialog) editor) 055 ); 056 } 057 058 @Override 059 protected void updateEnabledState() { 060 setEnabled(memberTableModel.hasIncompleteMembers() && canDownload()); 061 } 062}