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}