001package jmri.jmrit.logixng.actions; 002 003import java.util.Locale; 004import java.util.Map; 005 006import jmri.*; 007import jmri.jmrit.logixng.*; 008 009/** 010 * Sets all engine slots to status common 011 * 012 * @author Daniel Bergqvist Copyright 2022 013 */ 014public class ActionRequestUpdateAllSensors extends AbstractDigitalAction { 015 016 private SystemConnectionMemo _memo; 017 018 public ActionRequestUpdateAllSensors(String sys, String user, SystemConnectionMemo memo) { 019 super(sys, user); 020 _memo = memo; 021 } 022 023 @Override 024 public Base getDeepCopy(Map<String, String> systemNames, Map<String, String> userNames) throws JmriException { 025 DigitalActionManager manager = InstanceManager.getDefault(DigitalActionManager.class); 026 String sysName = systemNames.get(getSystemName()); 027 String userName = userNames.get(getSystemName()); 028 if (sysName == null) sysName = manager.getAutoSystemName(); 029 ActionRequestUpdateAllSensors copy = new ActionRequestUpdateAllSensors(sysName, userName, _memo); 030 return manager.registerAction(copy).deepCopyChildren(this, systemNames, userNames); 031 } 032 033 /** {@inheritDoc} */ 034 @Override 035 public Category getCategory() { 036 return Category.ITEM; 037 } 038 039 public void setMemo(SystemConnectionMemo memo) { 040 assertListenersAreNotRegistered(log, "setMemo"); 041 _memo = memo; 042 } 043 044 public SystemConnectionMemo getMemo() { 045 return _memo; 046 } 047 048 /** {@inheritDoc} */ 049 @Override 050 public void execute() { 051 if (_memo != null) { 052 if (_memo.provides(SensorManager.class)) { 053 _memo.get(SensorManager.class).updateAll(); 054 } else { 055 throw new RuntimeException("_memo doesn't provide a sensor manager"); 056 } 057 } else { 058 InstanceManager.getDefault(SensorManager.class).updateAll(); 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, "ActionRequestUpdateAllSensors_Short"); 075 } 076 077 @Override 078 public String getLongDescription(Locale locale) { 079 if (_memo != null) { 080 return Bundle.getMessage(locale, "ActionRequestUpdateAllSensors_LongConnection", 081 _memo.getUserName()); 082 } else { 083 return Bundle.getMessage(locale, "ActionRequestUpdateAllSensors_Long"); 084 } 085 } 086 087 /** {@inheritDoc} */ 088 @Override 089 public void setup() { 090 // Do nothing 091 } 092 093 /** {@inheritDoc} */ 094 @Override 095 public void registerListenersForThisClass() { 096 if (!_listenersAreRegistered) { 097 _listenersAreRegistered = true; 098 } 099 } 100 101 /** {@inheritDoc} */ 102 @Override 103 public void unregisterListenersForThisClass() { 104 _listenersAreRegistered = false; 105 } 106 107 /** {@inheritDoc} */ 108 @Override 109 public void disposeMe() { 110 } 111 112 113 private final static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ActionRequestUpdateAllSensors.class); 114 115}