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.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.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 putValue(SHORT_DESCRIPTION, tr("Download selected incomplete members")); 036 putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "downloadincompleteselected")); 037 putValue(NAME, tr("Download Members")); 038 updateEnabledState(); 039 } 040 041 @Override 042 public void actionPerformed(ActionEvent e) { 043 if (!isEnabled()) 044 return; 045 Main.worker.submit(new DownloadRelationMemberTask( 046 editor.getRelation(), 047 memberTableModel.getSelectedIncompleteMemberPrimitives(), 048 layer, 049 (Dialog) editor) 050 ); 051 } 052 053 @Override 054 protected void updateEnabledState() { 055 setEnabled(memberTableModel.hasIncompleteSelectedMembers() && !Main.isOffline(OnlineResource.OSM_API)); 056 } 057}