// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.turnrestrictions.qa;

import static org.openstreetmap.josm.tools.I18n.tr;

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;

import org.openstreetmap.josm.plugins.turnrestrictions.editor.TurnRestrictionLegRole;

/**
 * Issue when a turn restriction has multiple members with role 'from' or 'to'.
 *
 */
public class MultipleTurnRestrictionLegError extends Issue {
    private TurnRestrictionLegRole role;
    private int numLegs;

    /**
     * Create the issue
     *
     * @param parent the parent model
     * @param role the role of the turn restriction leg with multiple entries
     * @param numLegs the number of legs
     */
    public MultipleTurnRestrictionLegError(IssuesModel parent, TurnRestrictionLegRole role, int numLegs) {
        super(parent, Severity.ERROR);
        this.role = role;
        this.numLegs = numLegs;
        actions.add(new FixAction());
    }

    @Override
    public String getText() {
        switch(role) {
        case FROM:
            return tr("A turn restriction requires exactly one way with role <tt>from</tt>. "
                + "This turn restriction has {0} ways in this role. Please remove "
                + "{1} of them.",
                numLegs,
                numLegs -1
            );
        case TO:
            return tr("A turn restriction requires exactly one way with role <tt>to</tt>. "
                    + "This turn restriction has {0} ways in this role. Please remove "
                    + "{1} of them.",
                    numLegs,
                    numLegs -1
                );
        }
        return "";
    }

    class FixAction extends AbstractAction {
        FixAction() {
            putValue(NAME, tr("Fix in editor"));
            putValue(SHORT_DESCRIPTION, tr("Go to the Advanced Editor and remove the members"));
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            getIssuesModel().getNavigationControler().gotoAdvancedEditor();
        }
    }
}
