001package jmri.jmrit.logixng.actions; 002 003import java.util.*; 004 005import jmri.*; 006import jmri.jmrit.logixng.*; 007import jmri.jmrit.logixng.util.*; 008import jmri.jmrit.logixng.util.parser.*; 009import jmri.util.ThreadingUtil; 010 011/** 012 * This action requests an update from the layout of the state of a turnout. 013 * 014 * @author Daniel Bergqvist Copyright 2025 015 */ 016public class ActionRequestUpdateOfTurnout extends AbstractDigitalAction { 017 018 private final LogixNG_SelectNamedBean<Turnout> _selectNamedBean = 019 new LogixNG_SelectNamedBean<>( 020 this, Turnout.class, InstanceManager.getDefault(TurnoutManager.class)); 021 022 023 public ActionRequestUpdateOfTurnout(String sys, String user) 024 throws BadUserNameException, BadSystemNameException { 025 super(sys, user); 026 } 027 028 @Override 029 public Base getDeepCopy(Map<String, String> systemNames, Map<String, String> userNames) throws ParserException { 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 ActionRequestUpdateOfTurnout copy = new ActionRequestUpdateOfTurnout(sysName, userName); 035 copy.setComment(getComment()); 036 _selectNamedBean.copy(copy._selectNamedBean); 037 return manager.registerAction(copy); 038 } 039 040 public LogixNG_SelectNamedBean<Turnout> getSelectNamedBean() { 041 return _selectNamedBean; 042 } 043 044 /** {@inheritDoc} */ 045 @Override 046 public LogixNG_Category getCategory() { 047 return LogixNG_Category.ITEM; 048 } 049 050 /** {@inheritDoc} */ 051 @Override 052 public void execute() throws JmriException { 053 Turnout turnout = _selectNamedBean.evaluateNamedBean(getConditionalNG()); 054 055 if (turnout == null) return; 056 057 ThreadingUtil.runOnLayoutWithJmriException(() -> { 058 turnout.requestUpdateFromLayout(); 059 }); 060 } 061 062 @Override 063 public FemaleSocket getChild(int index) throws IllegalArgumentException, UnsupportedOperationException { 064 throw new UnsupportedOperationException("Not supported."); 065 } 066 067 @Override 068 public int getChildCount() { 069 return 0; 070 } 071 072 @Override 073 public String getShortDescription(Locale locale) { 074 return Bundle.getMessage(locale, "ActionRequestUpdateOfTurnout_Short"); 075 } 076 077 @Override 078 public String getLongDescription(Locale locale) { 079 String namedBean = _selectNamedBean.getDescription(locale); 080 return Bundle.getMessage(locale, "ActionRequestUpdateOfTurnout_Long", namedBean); 081 } 082 083 /** {@inheritDoc} */ 084 @Override 085 public void setup() { 086 // Do nothing 087 } 088 089 /** {@inheritDoc} */ 090 @Override 091 public void getUsageDetail(int level, NamedBean bean, List<NamedBeanUsageReport> report, NamedBean cdl) { 092 _selectNamedBean.getUsageDetail(level, bean, report, cdl, this, LogixNG_SelectNamedBean.Type.Action); 093 } 094 095 /** {@inheritDoc} */ 096 @Override 097 public void disposeMe() { 098 } 099 100// private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ActionRequestUpdateOfTurnout.class); 101}