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.MemberTable;
010import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
011import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
012import org.openstreetmap.josm.gui.layer.OsmDataLayer;
013import org.openstreetmap.josm.gui.tagging.TagEditorModel;
014import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
015import org.openstreetmap.josm.tools.ImageProvider;
016
017/**
018 * Apply the updates and close the dialog.
019 */
020public class OKAction extends SavingAction {
021
022    /**
023     * Constructs a new {@code OKAction}.
024     * @param memberTable member table
025     * @param memberTableModel member table model
026     * @param tagModel tag editor model
027     * @param layer OSM data layer
028     * @param editor relation editor
029     * @param tfRole role text field
030     */
031    public OKAction(MemberTable memberTable, MemberTableModel memberTableModel, TagEditorModel tagModel, OsmDataLayer layer,
032            IRelationEditor editor, AutoCompletingTextField tfRole) {
033        super(memberTable, memberTableModel, tagModel, layer, editor, tfRole);
034        putValue(SHORT_DESCRIPTION, tr("Apply the updates and close the dialog"));
035        putValue(SMALL_ICON, ImageProvider.get("ok"));
036        putValue(NAME, tr("OK"));
037        setEnabled(true);
038    }
039
040    @Override
041    public void actionPerformed(ActionEvent e) {
042        Main.pref.put("relation.editor.generic.lastrole", tfRole.getText());
043        memberTable.stopHighlighting();
044        if (!applyChanges())
045            return;
046        hideEditor();
047    }
048}