// 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.data.osm.DataSet; 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; /** * Remove all members referring to one of the selected objects. * @since 9496 */ public class RemoveSelectedAction extends AddFromSelectionAction { /** * Constructs a new {@code RemoveSelectedAction}. * @param memberTableModel member table model * @param selectionTableModel selection table model * @param layer OSM data layer */ public RemoveSelectedAction(MemberTableModel memberTableModel, SelectionTableModel selectionTableModel, OsmDataLayer layer) { super(null, memberTableModel, null, selectionTableModel, null, layer, null); putValue(SHORT_DESCRIPTION, tr("Remove all members referring to one of the selected objects")); putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "deletemembers")); updateEnabledState(); } @Override protected void updateEnabledState() { DataSet ds = layer.data; if (ds == null || ds.selectionEmpty()) { setEnabled(false); return; } // only enable the action if we have members referring to the selected primitives setEnabled(memberTableModel.hasMembersReferringTo(ds.getSelected())); } @Override public void actionPerformed(ActionEvent e) { memberTableModel.removeMembersReferringTo(selectionTableModel.getSelection()); } }