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}