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.gui.MainApplication; 010import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask; 011import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor; 012import org.openstreetmap.josm.gui.dialogs.relation.MemberTable; 013import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel; 014import org.openstreetmap.josm.gui.layer.OsmDataLayer; 015import org.openstreetmap.josm.tools.ImageProvider; 016 017/** 018 * Download selected incomplete members. 019 * @since 9496 020 */ 021public class DownloadSelectedIncompleteMembersAction extends AbstractRelationEditorAction { 022 023 /** 024 * Constructs a new {@code DownloadSelectedIncompleteMembersAction}. 025 * @param memberTable member table 026 * @param memberTableModel member table model 027 * @param actionMapKey action map key 028 * @param layer OSM data layer 029 * @param editor relation editor 030 */ 031 public DownloadSelectedIncompleteMembersAction(MemberTable memberTable, MemberTableModel memberTableModel, String actionMapKey, 032 OsmDataLayer layer, IRelationEditor editor) { 033 super(memberTable, memberTableModel, actionMapKey, layer, editor); 034 putValue(SHORT_DESCRIPTION, tr("Download selected incomplete members")); 035 new ImageProvider("dialogs/relation", "downloadincompleteselected").getResource().attachImageIcon(this, true); 036 putValue(NAME, tr("Download Members")); 037 updateEnabledState(); 038 } 039 040 @Override 041 public void actionPerformed(ActionEvent e) { 042 if (!isEnabled()) 043 return; 044 MainApplication.worker.submit(new DownloadRelationMemberTask( 045 editor.getRelation(), 046 memberTableModel.getSelectedIncompleteMemberPrimitives(), 047 layer, 048 (Dialog) editor) 049 ); 050 } 051 052 @Override 053 protected void updateEnabledState() { 054 setEnabled(memberTableModel.hasIncompleteSelectedMembers() && canDownload()); 055 } 056}