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.tools.ImageProvider; 009 010/** 011 * Sort the selected relation members and all members below. 012 * @since 9496 013 */ 014public class SortBelowAction extends AbstractRelationEditorAction { 015 private static final long serialVersionUID = 1L; 016 017 /** 018 * Constructs a new {@code SortBelowAction}. 019 * @param editorAccess An interface to access the relation editor contents. 020 */ 021 public SortBelowAction(IRelationEditorActionAccess editorAccess) { 022 super(editorAccess, IRelationEditorUpdateOn.MEMBER_TABLE_CHANGE, IRelationEditorUpdateOn.MEMBER_TABLE_SELECTION); 023 new ImageProvider("dialogs", "sort_below").getResource().attachImageIcon(this, true); 024 putValue(NAME, tr("Sort below")); 025 putValue(SHORT_DESCRIPTION, tr("Sort the selected relation members and all members below")); 026 updateEnabledState(); 027 } 028 029 @Override 030 public void actionPerformed(ActionEvent e) { 031 editorAccess.getMemberTableModel().sortBelow(); 032 editorAccess.stopMemberCellEditing(); 033 } 034 035 @Override 036 protected void updateEnabledState() { 037 setEnabled(editorAccess.getMemberTableModel().getRowCount() > 0 038 && !editorAccess.getMemberTableModel().getSelectionModel().isSelectionEmpty()); 039 } 040 041 @Override 042 public boolean isExpertOnly() { 043 return true; 044 } 045}