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.data.osm.DataSet; 009import org.openstreetmap.josm.tools.ImageProvider; 010 011/** 012 * Remove all members referring to one of the selected objects. 013 * @since 9496 014 */ 015public class RemoveSelectedAction extends AddFromSelectionAction { 016 private static final long serialVersionUID = 1L; 017 018 /** 019 * Constructs a new {@code RemoveSelectedAction}. 020 * @param editorAccess An interface to access the relation editor contents. 021 */ 022 public RemoveSelectedAction(IRelationEditorActionAccess editorAccess) { 023 super(editorAccess, IRelationEditorUpdateOn.SELECTION_TABLE_CHANGE); 024 putValue(SHORT_DESCRIPTION, tr("Remove all members referring to one of the selected objects")); 025 new ImageProvider("dialogs/relation", "deletemembers").getResource().attachImageIcon(this, true); 026 updateEnabledState(); 027 } 028 029 @Override 030 protected void updateEnabledState() { 031 DataSet ds = getLayer().data; 032 if (ds == null || ds.selectionEmpty()) { 033 setEnabled(false); 034 return; 035 } 036 // only enable the action if we have members referring to the selected primitives 037 setEnabled(editorAccess.getMemberTableModel().hasMembersReferringTo(ds.getSelected())); 038 } 039 040 @Override 041 public void actionPerformed(ActionEvent e) { 042 editorAccess.getMemberTableModel().removeMembersReferringTo(getSelectionTableModel().getSelection()); 043 } 044}