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}