package Bollard; import art.library.model.devices.Device; import art.library.model.devices.DeviceGraphicsRuntime; import com.kitfox.svg.SVGDiagram; import com.kitfox.svg.SVGElement; public class BollardStatusAspect extends DeviceGraphicsRuntime { public BollardStatusAspect(art.library.model.devices.Device device, SVGDiagram diagram) { super(device, diagram); } private boolean flashOn = false; public void timer() { flashOn = !flashOn; status(); } public void status() { try { Device device = getDevice(); art.library.model.devices.bollard.BollardStatus status = (art.library.model.devices.bollard.BollardStatus) device.getDeviceStatus(); art.library.model.devices.bollard.BollardRealtime realtime = (art.library.model.devices.bollard.BollardRealtime) device.getDeviceRealtime(); art.library.model.devices.bollard.BollardAlarms alarms = (art.library.model.devices.bollard.BollardAlarms) device.getDeviceAlarms(); for (int i = 0; i <= 5; i++) { setAttribute("alarm-" + i, "display", (alarms.getServerityAlarm() == i) ? "inline" : "none", 999); } SVGElement bollard_down = getElement("bollard-down"); SVGElement bollard_up = getElement("bollard-up"); SVGElement bollard_moving = getElement("bollard-moving"); SVGElement arrow_up = getElement("moving_up"); SVGElement arrow_down = getElement("moving_down"); SVGElement arrow_moving = getElement("moving"); SVGElement loop_input = getElement("loop_input"); SVGElement loop_ouput = getElement("loop_output"); SVGElement loop_control = getElement("loop_control"); SVGElement loop_input_text = getElement("loop_input_text"); SVGElement loop_output_text = getElement("loop_output_text"); SVGElement loop_control_text = getElement("loop_control_text"); SVGElement lock = getElement("lock"); SVGElement lock_disabled = getElement("lock_disabled"); setText(loop_control_text, art.client.models.Shared.getMessage("Loop control point")); setText(loop_input_text, art.client.models.Shared.getMessage("Loop input")); setText(loop_output_text, art.client.models.Shared.getMessage("Loop output")); hideElements(bollard_down, bollard_up, bollard_moving, arrow_down, arrow_up, arrow_moving, lock,lock_disabled); setLoopStateOff(loop_input, loop_ouput, loop_control); if (status.general != null) { switch (status.general.lock) { case art.library.model.devices.bollard.status.BollardStatusGeneral.LOCK_LOCK: showElements(lock); break; default: showElements(lock_disabled); break; } } if (realtime.general != null) { switch (realtime.general.position) { case art.library.model.devices.bollard.realtime.BollardRealtimeGeneral.POSITION_UP: showElements(bollard_up); break; case art.library.model.devices.bollard.realtime.BollardRealtimeGeneral.POSITION_DOWN: showElements(bollard_down); break; case art.library.model.devices.bollard.realtime.BollardRealtimeGeneral.POSITION_GOING_UP: showElements(bollard_moving, arrow_up); break; case art.library.model.devices.bollard.realtime.BollardRealtimeGeneral.POSITION_GOING_DOWN: showElements(bollard_moving, arrow_down); break; case art.library.model.devices.bollard.realtime.BollardRealtimeGeneral.POSITION_MOVING: showElements(bollard_moving, arrow_moving); break; } if(realtime.general.loopInput == art.library.model.devices.bollard.realtime.BollardRealtimeGeneral.LOOP_ACTIVE) setLoopStateOn(loop_input); if(realtime.general.loopOutput == art.library.model.devices.bollard.realtime.BollardRealtimeGeneral.LOOP_ACTIVE) setLoopStateOn(loop_ouput); if(realtime.general.loopControlPoint == art.library.model.devices.bollard.realtime.BollardRealtimeGeneral.LOOP_ACTIVE) setLoopStateOn(loop_control); } } catch (Exception ex) { } } private void showElements(SVGElement... elements) { setProperty("display", "inline", elements); } private void hideElements(SVGElement... elements) { setProperty("display", "none", elements); } private void setLoopStateOff(SVGElement... elements) { setProperty("fill", "#C8C8C8", elements); } private void setLoopStateOn(SVGElement... elements) { setProperty("fill", "#FFFF00", elements); } private void setProperty(String property, String value, SVGElement... elements) { java.util.stream.Stream.of(elements).forEach(element -> setAttribute(element, property, value, 999)); } // java.io.StringWriter sw = new java.io.StringWriter(); // art.library.gui.flat.FlatDialog.showDialog(null, "Error", e.getMessage() + "\n\n" + sw.toString(), true, art.library.gui.flat.FlatDialog.DIALOG_ERROR); // }