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.Main;
009import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.AddAbortException;
010import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
011import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
012import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
013import org.openstreetmap.josm.tools.ImageProvider;
014
015/**
016 * Add all objects selected in the current dataset before the first member.
017 * @since 9496
018 */
019public class AddSelectedAtStartAction extends AddFromSelectionAction {
020
021    /**
022     * Constructs a new {@code AddSelectedAtStartAction}.
023     * @param memberTableModel member table model
024     * @param selectionTableModel selection table model
025     * @param editor relation editor
026     */
027    public AddSelectedAtStartAction(MemberTableModel memberTableModel, SelectionTableModel selectionTableModel, IRelationEditor editor) {
028        super(null, memberTableModel, null, selectionTableModel, null, null, editor);
029        putValue(SHORT_DESCRIPTION, tr("Add all objects selected in the current dataset before the first member"));
030        putValue(SMALL_ICON, ImageProvider.get("dialogs/conflict", "copystartright"));
031        updateEnabledState();
032    }
033
034    @Override
035    protected void updateEnabledState() {
036        setEnabled(selectionTableModel.getRowCount() > 0);
037    }
038
039    @Override
040    public void actionPerformed(ActionEvent e) {
041        try {
042            memberTableModel.addMembersAtBeginning(filterConfirmedPrimitives(selectionTableModel.getSelection()));
043        } catch (AddAbortException ex) {
044            Main.trace(ex);
045        }
046    }
047}