001package jmri.jmrit.logixng.actions; 002 003import java.util.*; 004 005import jmri.*; 006import jmri.jmrit.logixng.*; 007import jmri.jmrit.logixng.util.LogixNG_SelectNamedBean; 008import jmri.jmrit.logixng.util.parser.ParserException; 009 010/** 011 * Sets a StringIO. 012 * 013 * @author Daniel Bergqvist Copyright 2021 014 */ 015public class StringActionStringIO extends AbstractStringAction { 016 017 private final LogixNG_SelectNamedBean<StringIO> _selectNamedBean = 018 new LogixNG_SelectNamedBean<>( 019 this, StringIO.class, InstanceManager.getDefault(StringIOManager.class)); 020 021 public StringActionStringIO(String sys, String user) { 022 super(sys, user); 023 } 024 025 @Override 026 public Base getDeepCopy(Map<String, String> systemNames, Map<String, String> userNames) throws ParserException { 027 StringActionManager manager = InstanceManager.getDefault(StringActionManager.class); 028 String sysName = systemNames.get(getSystemName()); 029 String userName = userNames.get(getSystemName()); 030 if (sysName == null) sysName = manager.getAutoSystemName(); 031 StringActionStringIO copy = new StringActionStringIO(sysName, userName); 032 copy.setComment(getComment()); 033 _selectNamedBean.copy(copy._selectNamedBean); 034 return manager.registerAction(copy); 035 } 036 037 public LogixNG_SelectNamedBean<StringIO> getSelectNamedBean() { 038 return _selectNamedBean; 039 } 040 041 /** {@inheritDoc} */ 042 @Override 043 public void setValue(String value) throws JmriException { 044 StringIO stringIO = _selectNamedBean.evaluateNamedBean(getConditionalNG()); 045 if (stringIO != null) { 046 stringIO.setCommandedStringValue(value); 047 } 048 } 049 050 /** {@inheritDoc} */ 051 @Override 052 public FemaleSocket getChild(int index) throws IllegalArgumentException, UnsupportedOperationException { 053 throw new UnsupportedOperationException("Not supported."); 054 } 055 056 /** {@inheritDoc} */ 057 @Override 058 public int getChildCount() { 059 return 0; 060 } 061 062 /** {@inheritDoc} */ 063 @Override 064 public LogixNG_Category getCategory() { 065 return LogixNG_Category.ITEM; 066 } 067 068 /** {@inheritDoc} */ 069 @Override 070 public String getShortDescription(Locale locale) { 071 return Bundle.getMessage(locale, "StringActionStringIO_Short"); 072 } 073 074 /** {@inheritDoc} */ 075 @Override 076 public String getLongDescription(Locale locale) { 077 return Bundle.getMessage(locale, "StringActionStringIO_Long", _selectNamedBean.getDescription(locale)); 078 } 079 080 /** {@inheritDoc} */ 081 @Override 082 public void setup() { 083 // Do nothing 084 } 085 086 /** {@inheritDoc} */ 087 @Override 088 public void disposeMe() { 089 } 090 091 /** {@inheritDoc} */ 092 @Override 093 public void getUsageDetail(int level, NamedBean bean, List<NamedBeanUsageReport> report, NamedBean cdl) { 094 _selectNamedBean.getUsageDetail(level, bean, report, cdl, this, LogixNG_SelectNamedBean.Type.Action); 095 } 096 097// private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(StringActionStringIO.class); 098 099}