- // TODO when ManualSwitch supports it, add listeners
- end.addObserver((i, o) -> callComponentLookChangedListeners());
+ registerLogicObs(end);
+ registerLogicObs(logicSwitch);
+ }
+
+ public boolean hasLogicModelBinding()
+ {
+ return logicSwitch != null;
+ }
+
+ @Override
+ public void setHighLevelState(String stateID, Object newState)
+ {
+ switch (stateID)
+ {
+ case "out":
+ if (logicSwitch != null)
+ logicSwitch.setToValueOf((Bit) newState);
+ break;
+ default:
+ super.setHighLevelState(stateID, newState);
+ break;
+ }
+ }
+
+ @Override
+ public Object getHighLevelState(String stateID)
+ {
+ switch (stateID)
+ {
+ case "out":
+ if (logicSwitch != null)
+ return logicSwitch.getValue();
+ return null;
+ default:
+ return super.getHighLevelState(stateID);
+ }
+ }
+
+ private void registerLogicObs(LogicObservable observable)
+ {
+ if (observable != null)
+ observable.registerObserver(logicObs);
+ }
+
+ private void deregisterLogicObs(LogicObservable observable)
+ {
+ if (observable != null)
+ observable.deregisterObserver(logicObs);