import java
import java.beans
import jmri
import jmri.jmrit.logixng
class MyAction(jmri.jmrit.logixng.actions.AbstractScriptDigitalAction, jmri.jmrit.logixng.FemaleSocketListener):
l = lights.provideLight("IL1")
s = sensors.provideSensor("IS2")
def registerScriptListeners(self):
self.s.addPropertyChangeListener("KnownState", self)
def unregisterScriptListeners(self):
self.s.removePropertyChangeListener("KnownState", self)
def getChild(self, index):
if index == 0:
return self.childAnalogAction
elif index == 1:
return self.childAnalogExpression
elif index == 2:
return self.childDigitalAction
elif index == 3:
return self.childDigitalBooleanAction
elif index == 4:
return self.childDigitalExpression
elif index == 5:
return self.childStringAction
elif index == 6:
return self.childStringExpression
else:
raise java.lang.IllegalArgumentException("index is bad")
def getChildCount(self):
return 7
def connected(self, femaleSocket):
self.firePropertyChange(jmri.jmrit.logixng.Base.PROPERTY_SOCKET_CONNECTED, None, femaleSocket)
def disconnected(self, femaleSocket):
self.firePropertyChange(jmri.jmrit.logixng.Base.PROPERTY_SOCKET_DISCONNECTED, None, femaleSocket)
def execute(self):
if self.l is None:
raise java.lang.NullPointerException()
self.l.commandedState = ON
def setup(self):
// Do something
def vetoableChange(self,evt):
if ("CanDelete" == evt.getPropertyName()):
if (isinstance(evt.getOldValue(),jmri.Light)):
if (evt.getOldValue() is self.l):
raise java.beans.PropertyVetoException(self.getDisplayName(), evt)
if ("DoDelete" == evt.getPropertyName()):
if (isinstance(evt.getOldValue(),jmri.Light)):
if (evt.getOldValue() is self.l):
self.l = None
myClass = MyAction(params._parentAction)
myClass.childAnalogAction = analogActions.createFemaleSocket(myClass, myClass, "AA")
myClass.childAnalogExpression = analogExpressions.createFemaleSocket(myClass, myClass, "AE")
myClass.childDigitalAction = digitalActions.createFemaleSocket(myClass, myClass, "DA")
myClass.childDigitalBooleanAction = digitalBooleanActions.createFemaleSocket(myClass, myClass, "DBA")
myClass.childDigitalExpression = digitalExpressions.createFemaleSocket(myClass, myClass, "DE")
myClass.childStringAction = stringActions.createFemaleSocket(myClass, myClass, "SA")
myClass.childStringExpression = stringExpressions.createFemaleSocket(myClass, myClass, "SE")
lights.addVetoableChangeListener(myClass)
params._scriptClass.set(myClass);
|