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}