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.MemberTable;
012import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
013import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
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        //  Shortcut.register Shortcut("relationeditor:downloadincomplete", tr("Relation Editor: Download Members"),
036            // KeyEvent.VK_K, Shortcut.ALT)
037        putValue(SHORT_DESCRIPTION, tr("Download selected incomplete members"));
038        putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "downloadincompleteselected"));
039        putValue(NAME, tr("Download Members"));
040        updateEnabledState();
041    }
042
043    @Override
044    public void actionPerformed(ActionEvent e) {
045        if (!isEnabled())
046            return;
047        Main.worker.submit(new DownloadRelationMemberTask(
048                editor.getRelation(),
049                memberTableModel.getSelectedIncompleteMemberPrimitives(),
050                layer,
051                (Dialog) editor)
052        );
053    }
054
055    @Override
056    protected void updateEnabledState() {
057        setEnabled(memberTableModel.hasIncompleteSelectedMembers() && !Main.isOffline(OnlineResource.OSM_API));
058    }
059}