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;
008import java.awt.event.KeyEvent;
009
010import org.openstreetmap.josm.Main;
011import org.openstreetmap.josm.gui.MainApplication;
012import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
013import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
014import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
015import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
016import org.openstreetmap.josm.gui.layer.OsmDataLayer;
017import org.openstreetmap.josm.tools.ImageProvider;
018import org.openstreetmap.josm.tools.Shortcut;
019
020/**
021 * Download all incomplete members.
022 * @since 9496
023 */
024public class DownloadIncompleteMembersAction extends AbstractRelationEditorAction {
025
026    /**
027     * Constructs a new {@code DownloadIncompleteMembersAction}.
028     * @param memberTable member table
029     * @param memberTableModel member table model
030     * @param actionMapKey action map key
031     * @param layer OSM data layer
032     * @param editor relation editor
033     */
034    public DownloadIncompleteMembersAction(MemberTable memberTable, MemberTableModel memberTableModel, String actionMapKey,
035            OsmDataLayer layer, IRelationEditor editor) {
036        super(memberTable, memberTableModel, actionMapKey, layer, editor);
037        Shortcut sc = Shortcut.registerShortcut("relationeditor:downloadincomplete", tr("Relation Editor: Download Members"),
038            KeyEvent.VK_HOME, Shortcut.ALT);
039        sc.setAccelerator(this);
040        putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tr("Download all incomplete members"), sc));
041        new ImageProvider("dialogs/relation", "downloadincomplete").getResource().attachImageIcon(this, true);
042        putValue(NAME, tr("Download Members"));
043        updateEnabledState();
044    }
045
046    @Override
047    public void actionPerformed(ActionEvent e) {
048        if (!isEnabled())
049            return;
050        MainApplication.worker.submit(new DownloadRelationMemberTask(
051                editor.getRelation(),
052                memberTableModel.getIncompleteMemberPrimitives(),
053                layer,
054                (Dialog) editor)
055        );
056    }
057
058    @Override
059    protected void updateEnabledState() {
060        setEnabled(memberTableModel.hasIncompleteMembers() && canDownload());
061    }
062}