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.tools.ImageProvider;
012
013/**
014 * Download selected incomplete members.
015 * @since 9496
016 */
017public class DownloadSelectedIncompleteMembersAction extends AbstractRelationEditorAction {
018    private static final long serialVersionUID = 1L;
019
020    /**
021     * Constructs a new {@code DownloadSelectedIncompleteMembersAction}.
022     * @param editorAccess An interface to access the relation editor contents.
023     */
024    public DownloadSelectedIncompleteMembersAction(IRelationEditorActionAccess editorAccess) {
025        super(editorAccess, IRelationEditorUpdateOn.MEMBER_TABLE_CHANGE, IRelationEditorUpdateOn.MEMBER_TABLE_SELECTION);
026        putValue(SHORT_DESCRIPTION, tr("Download selected incomplete members"));
027        new ImageProvider("dialogs/relation", "downloadincompleteselected").getResource().attachImageIcon(this, true);
028        putValue(NAME, tr("Download members"));
029        updateEnabledState();
030    }
031
032    @Override
033    public void actionPerformed(ActionEvent e) {
034        if (!isEnabled())
035            return;
036        MainApplication.worker.submit(new DownloadRelationMemberTask(
037                getEditor().getRelation(),
038                getMemberTableModel().getSelectedIncompleteMemberPrimitives(),
039                getLayer(),
040                (Dialog) getEditor())
041        );
042    }
043
044    @Override
045    protected void updateEnabledState() {
046        setEnabled(getMemberTableModel().hasIncompleteSelectedMembers() && canDownload());
047    }
048}