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