// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.dialogs.relation.actions; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.event.ActionEvent; import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel; import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel; import org.openstreetmap.josm.gui.layer.OsmDataLayer; import org.openstreetmap.josm.tools.ImageProvider; /** * Selects members in the relation editor which refer to primitives in the current selection of the context layer. * @since 9496 */ public class SelectedMembersForSelectionAction extends AddFromSelectionAction { /** * Constructs a new {@code SelectedMembersForSelectionAction}. * @param memberTableModel member table model * @param selectionTableModel selection table model * @param layer OSM data layer */ public SelectedMembersForSelectionAction(MemberTableModel memberTableModel, SelectionTableModel selectionTableModel, OsmDataLayer layer) { super(null, memberTableModel, null, selectionTableModel, null, layer, null); putValue(SHORT_DESCRIPTION, tr("Select relation members which refer to objects in the current selection")); putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "selectmembers")); updateEnabledState(); } @Override protected void updateEnabledState() { boolean enabled = selectionTableModel.getRowCount() > 0 && !memberTableModel.getChildPrimitives(layer.data.getSelected()).isEmpty(); if (enabled) { putValue(SHORT_DESCRIPTION, tr("Select relation members which refer to {0} objects in the current selection", memberTableModel.getChildPrimitives(layer.data.getSelected()).size())); } else { putValue(SHORT_DESCRIPTION, tr("Select relation members which refer to objects in the current selection")); } setEnabled(enabled); } @Override public void actionPerformed(ActionEvent e) { memberTableModel.selectMembersReferringTo(layer.data.getSelected()); } }