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; 007import java.awt.event.KeyEvent; 008 009import org.openstreetmap.josm.Main; 010import org.openstreetmap.josm.gui.dialogs.relation.MemberTable; 011import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel; 012import org.openstreetmap.josm.tools.ImageProvider; 013import org.openstreetmap.josm.tools.Shortcut; 014 015/** 016 * Remove the currently selected members from this relation. 017 * @since 9496 018 */ 019public class RemoveAction extends AbstractRelationEditorAction { 020 021 /** 022 * Constructs a new {@code RemoveAction}. 023 * @param memberTable member table 024 * @param memberTableModel member table model 025 * @param actionMapKey action map key 026 */ 027 public RemoveAction(MemberTable memberTable, MemberTableModel memberTableModel, String actionMapKey) { 028 super(memberTable, memberTableModel, actionMapKey); 029 new ImageProvider("dialogs", "delete").getResource().attachImageIcon(this, true); 030 putValue(NAME, tr("Remove")); 031 Shortcut sc = Shortcut.registerShortcut("relationeditor:remove", tr("Relation Editor: Remove"), KeyEvent.VK_DELETE, Shortcut.ALT); 032 sc.setAccelerator(this); 033 putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tr("Remove the currently selected members from this relation"), sc)); 034 setEnabled(false); 035 } 036 037 @Override 038 public void actionPerformed(ActionEvent e) { 039 memberTableModel.remove(memberTable.getSelectedRows()); 040 } 041 042 @Override 043 protected void updateEnabledState() { 044 setEnabled(memberTableModel.canRemove(memberTable.getSelectedRows())); 045 } 046}