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 Memory. 012 * 013 * @author Daniel Bergqvist Copyright 2018 014 */ 015public class AnalogActionMemory extends AbstractAnalogAction { 016 017 private final LogixNG_SelectNamedBean<Memory> _selectNamedBean = 018 new LogixNG_SelectNamedBean<>( 019 this, Memory.class, InstanceManager.getDefault(MemoryManager.class)); 020 021 public AnalogActionMemory(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 AnalogActionManager manager = InstanceManager.getDefault(AnalogActionManager.class); 028 String sysName = systemNames.get(getSystemName()); 029 String userName = userNames.get(getSystemName()); 030 if (sysName == null) sysName = manager.getAutoSystemName(); 031 AnalogActionMemory copy = new AnalogActionMemory(sysName, userName); 032 copy.setComment(getComment()); 033 _selectNamedBean.copy(copy._selectNamedBean); 034 return manager.registerAction(copy); 035 } 036 037 public LogixNG_SelectNamedBean<Memory> getSelectNamedBean() { 038 return _selectNamedBean; 039 } 040 041 /** {@inheritDoc} */ 042 @Override 043 public void setValue(double value) throws JmriException { 044 Memory memory = _selectNamedBean.evaluateNamedBean(getConditionalNG()); 045 if (memory != null) { 046 jmri.util.ThreadingUtil.runOnLayoutWithJmriException(() -> { 047 memory.setValue(value); 048 }); 049 } 050 } 051 052 /** {@inheritDoc} */ 053 @Override 054 public FemaleSocket getChild(int index) 055 throws IllegalArgumentException, UnsupportedOperationException { 056 throw new UnsupportedOperationException("Not supported."); 057 } 058 059 /** {@inheritDoc} */ 060 @Override 061 public int getChildCount() { 062 return 0; 063 } 064 065 /** {@inheritDoc} */ 066 @Override 067 public LogixNG_Category getCategory() { 068 return LogixNG_Category.ITEM; 069 } 070 071 /** {@inheritDoc} */ 072 @Override 073 public String getShortDescription(Locale locale) { 074 return Bundle.getMessage(locale, "AnalogActionMemory_Short"); 075 } 076 077 /** {@inheritDoc} */ 078 @Override 079 public String getLongDescription(Locale locale) { 080 return Bundle.getMessage(locale, "AnalogActionMemory_Long", _selectNamedBean.getDescription(locale)); 081 } 082 083 /** {@inheritDoc} */ 084 @Override 085 public void setup() { 086 // Do nothing 087 } 088 089 /** {@inheritDoc} */ 090 @Override 091 public void disposeMe() { 092 } 093 094 /** {@inheritDoc} */ 095 @Override 096 public void getUsageDetail(int level, NamedBean bean, List<NamedBeanUsageReport> report, NamedBean cdl) { 097 _selectNamedBean.getUsageDetail(level, bean, report, cdl, this, LogixNG_SelectNamedBean.Type.Action); 098 } 099 100// private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(AnalogActionMemory.class); 101 102}