001package jmri.jmrit.logixng.actions;
002
003import java.beans.PropertyChangeEvent;
004import java.beans.PropertyChangeListener;
005import java.util.Locale;
006import java.util.Map;
007
008import jmri.InstanceManager;
009import jmri.JmriException;
010import jmri.jmrit.logixng.*;
011import jmri.jmrit.logixng.util.LogixNG_SelectString;
012
013/**
014 * Returns from a Module or a ConditionalNG.
015 *
016 * @author Daniel Bergqvist Copyright 2022
017 */
018public class Error extends AbstractDigitalAction
019        implements PropertyChangeListener {
020
021    private final LogixNG_SelectString _selectMessage =
022            new LogixNG_SelectString(this, this);
023
024    public Error(String sys, String user) {
025        super(sys, user);
026    }
027
028    @Override
029    public Base getDeepCopy(Map<String, String> systemNames, Map<String, String> userNames) throws JmriException {
030        DigitalActionManager manager = InstanceManager.getDefault(DigitalActionManager.class);
031        String sysName = systemNames.get(getSystemName());
032        String userName = userNames.get(getSystemName());
033        if (sysName == null) sysName = manager.getAutoSystemName();
034        Error copy = new Error(sysName, userName);
035        copy.setComment(getComment());
036        getSelectMessage().copy(copy._selectMessage);
037        return manager.registerAction(copy);
038    }
039
040    public LogixNG_SelectString getSelectMessage() {
041        return _selectMessage;
042    }
043
044    /** {@inheritDoc} */
045    @Override
046    public LogixNG_Category getCategory() {
047        return LogixNG_Category.FLOW_CONTROL;
048    }
049
050    /** {@inheritDoc} */
051    @Override
052    public void execute() throws JmriException {
053        String message = _selectMessage.evaluateValue(getConditionalNG());
054        throw new JmriException(message);
055    }
056
057    @Override
058    public String getShortDescription(Locale locale) {
059        return Bundle.getMessage(locale, "Error_Short");
060    }
061
062    @Override
063    public String getLongDescription(Locale locale) {
064        return Bundle.getMessage(locale, "Error_Long",
065                _selectMessage.getDescription(locale));
066    }
067
068    /** {@inheritDoc} */
069    @Override
070    public void setup() {
071        // Do nothing
072    }
073
074    @Override
075    public void propertyChange(PropertyChangeEvent evt) {
076        getConditionalNG().execute();
077    }
078
079//    private final static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(WebBrowser.class);
080
081}