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.tools.ImageProvider; 014import org.openstreetmap.josm.tools.Shortcut; 015 016/** 017 * Download all incomplete members. 018 * @since 9496 019 */ 020public class DownloadIncompleteMembersAction extends AbstractRelationEditorAction { 021 private static final long serialVersionUID = 1L; 022 023 /** 024 * Constructs a new {@code DownloadIncompleteMembersAction}. 025 * @param editorAccess An interface to access the relation editor contents. 026 * @param actionMapKey action map key 027 */ 028 public DownloadIncompleteMembersAction(IRelationEditorActionAccess editorAccess, String actionMapKey) { 029 super(editorAccess, actionMapKey, IRelationEditorUpdateOn.MEMBER_TABLE_CHANGE); 030 Shortcut sc = Shortcut.registerShortcut("relationeditor:downloadincomplete", tr("Relation Editor: Download Members"), 031 KeyEvent.VK_HOME, Shortcut.ALT); 032 sc.setAccelerator(this); 033 putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tr("Download all incomplete members"), sc)); 034 new ImageProvider("dialogs/relation", "downloadincomplete").getResource().attachImageIcon(this, true); 035 putValue(NAME, tr("Download members")); 036 updateEnabledState(); 037 } 038 039 @Override 040 public void actionPerformed(ActionEvent e) { 041 if (!isEnabled()) 042 return; 043 MainApplication.worker.submit(new DownloadRelationMemberTask( 044 getEditor().getRelation(), 045 getMemberTableModel().getIncompleteMemberPrimitives(), 046 getLayer(), 047 (Dialog) getEditor()) 048 ); 049 } 050 051 @Override 052 protected void updateEnabledState() { 053 setEnabled(getMemberTableModel().hasIncompleteMembers() && canDownload()); 054 } 055}