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.event.ActionEvent;
007
008import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
009import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
010import org.openstreetmap.josm.gui.layer.OsmDataLayer;
011import org.openstreetmap.josm.tools.ImageProvider;
012
013/**
014 * Selects primitives in the layer this editor belongs to. The selected primitives are
015 * equal to the set of primitives the currently selected relation members refer to.
016 * @since 9496
017 */
018public class SelectPrimitivesForSelectedMembersAction extends AbstractRelationEditorAction {
019
020    /**
021     * Select objects for selected relation members.
022     * @param memberTable member table
023     * @param memberTableModel member table model
024     * @param layer layer
025     */
026    public SelectPrimitivesForSelectedMembersAction(MemberTable memberTable, MemberTableModel memberTableModel, OsmDataLayer layer) {
027        super(memberTable, memberTableModel, null, layer, null);
028        putValue(SHORT_DESCRIPTION, tr("Select objects for selected relation members"));
029        new ImageProvider("dialogs/relation", "selectprimitives").getResource().attachImageIcon(this, true);
030        updateEnabledState();
031    }
032
033    @Override
034    protected void updateEnabledState() {
035        setEnabled(memberTable.getSelectedRowCount() > 0);
036    }
037
038    @Override
039    public void actionPerformed(ActionEvent e) {
040        layer.data.setSelected(memberTableModel.getSelectedChildPrimitives());
041    }
042}