package Rotapanel; import art.library.model.devices.Device; import art.library.model.devices.DeviceGraphicsRuntime; import com.kitfox.svg.SVGDiagram; import com.kitfox.svg.SVGElement; public class RotapanelStatus extends DeviceGraphicsRuntime { public RotapanelStatus(art.library.model.devices.Device device, SVGDiagram diagram) { super(device, diagram); } public void status() { Device device = getDevice(); art.library.model.devices.vms.rotapanel.VmsRotapanelStatus status = (art.library.model.devices.vms.rotapanel.VmsRotapanelStatus) device.getDeviceStatus(); updateFaceElements(status); updateLightModeElements(status); updateControlModeElements(status); updateTestModeElements(status); updateRotationIntervalElements(status); updateAlarmlElements(device.getDeviceAlarms()); checkForbiddenFace(device); for(com.kitfox.svg.SVGElement element : getElementsContainingField("art.tranlsate")) { translateText(element); } } private void updateLightModeElements(art.library.model.devices.vms.rotapanel.VmsRotapanelStatus status) { String fieldValue = "art.field.status.lightActive.visibility"; com.kitfox.svg.SVGElement[] elements = getElementsContainingField(fieldValue).toArray(new com.kitfox.svg.SVGElement[0]); com.kitfox.svg.SVGElement elementActive = java.util.stream.Stream.of(elements).filter(el -> "true".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); com.kitfox.svg.SVGElement elementInactive = java.util.stream.Stream.of(elements).filter(el -> "false".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); setAttribute(elementActive, "display", status.lightActive ? "inline" : "none", 999); setAttribute(elementInactive, "display", status.lightActive ? "none" : "inline", 999); } private void updateControlModeElements(art.library.model.devices.vms.rotapanel.VmsRotapanelStatus status) { String fieldValue = "art.field.status.manualControlActive.visibility"; com.kitfox.svg.SVGElement[] elements = getElementsContainingField(fieldValue).toArray(new com.kitfox.svg.SVGElement[0]); com.kitfox.svg.SVGElement elementActive = java.util.stream.Stream.of(elements).filter(el -> "true".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); com.kitfox.svg.SVGElement elementInactive = java.util.stream.Stream.of(elements).filter(el -> "false".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); setAttribute(elementActive, "display", status.manualControlActive ? "inline" : "none", 999); setAttribute(elementInactive, "display", status.manualControlActive ? "none" : "inline", 999); } private void updateTestModeElements(art.library.model.devices.vms.rotapanel.VmsRotapanelStatus status) { String fieldValue = "art.field.status.turnTestActive.visibility"; com.kitfox.svg.SVGElement[] elements = getElementsContainingField(fieldValue).toArray(new com.kitfox.svg.SVGElement[0]); com.kitfox.svg.SVGElement elementActive = java.util.stream.Stream.of(elements).filter(el -> "true".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); com.kitfox.svg.SVGElement elementInactive = java.util.stream.Stream.of(elements).filter(el -> "false".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); setAttribute(elementActive, "display", status.turnTestActive ? "inline" : "none", 999); setAttribute(elementInactive, "display", status.turnTestActive ? "none" : "inline", 999); } private void updateRotationIntervalElements(art.library.model.devices.vms.rotapanel.VmsRotapanelStatus status) { String fieldValue = "art.field.status.rotationInterval.visibility"; com.kitfox.svg.SVGElement[] elements = getElementsContainingField(fieldValue).toArray(new com.kitfox.svg.SVGElement[0]); com.kitfox.svg.SVGElement elementActive = java.util.stream.Stream.of(elements).filter(el -> "!=0".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); com.kitfox.svg.SVGElement elementInactive = java.util.stream.Stream.of(elements).filter(el -> "0".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); setAttribute(elementActive, "display", status.rotationInterval > 0 ? "inline" : "none", 999); setAttribute(elementInactive, "display", status.rotationInterval > 0 ? "none" : "inline", 999); } private void updateAlarmlElements(art.library.model.devices.DeviceAlarms alarms) { String fieldValue = "art.field.alarms.getServerityAlarm.visibility"; com.kitfox.svg.SVGElement[] elements = getElementsContainingField(fieldValue).toArray(new com.kitfox.svg.SVGElement[0]); for (com.kitfox.svg.SVGElement element : elements) { setAttribute(element, "display", alarms.getServerityAlarm() == element.getPresAbsolute(fieldValue).getIntValue() ? "inline" : "none", 999); } } private void updateFaceElements(art.library.model.devices.vms.rotapanel.VmsRotapanelStatus status) { String fieldValue = "art.field.status.face.visibility"; com.kitfox.svg.SVGElement[] elements = getElementsContainingField(fieldValue).toArray(new com.kitfox.svg.SVGElement[0]); for (com.kitfox.svg.SVGElement element : elements) { setAttribute(element, "display", status.face == element.getPresAbsolute(fieldValue).getIntValue() ? "inline" : "none", 999); } } public void commands() { art.library.model.devices.vms.rotapanel.VmsRotapanelCommands commands = (art.library.model.devices.vms.rotapanel.VmsRotapanelCommands) getDeviceCommands(); updateLightModeElements(commands); updateTestModeElements(commands); updateIntervalModeElements(commands); updateHourOfDayElements(commands); updateFaceElements(commands); } private void updateLightModeElements(art.library.model.devices.vms.rotapanel.VmsRotapanelCommands commands) { String fieldValue = "art.field.light.visibility"; com.kitfox.svg.SVGElement[] elements = getElementsContainingField(fieldValue).toArray(new com.kitfox.svg.SVGElement[0]); com.kitfox.svg.SVGElement element0 = java.util.stream.Stream.of(elements).filter(el -> "0".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); com.kitfox.svg.SVGElement element1 = java.util.stream.Stream.of(elements).filter(el -> "1".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); com.kitfox.svg.SVGElement element2 = java.util.stream.Stream.of(elements).filter(el -> "2".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); setAttribute(element0, "display", commands.light <= 0 ? "inline" : "none", 999); setAttribute(element1, "display", commands.light == 1 ? "inline" : "none", 999); setAttribute(element2, "display", commands.light == 2 ? "inline" : "none", 999); } private void updateTestModeElements(art.library.model.devices.vms.rotapanel.VmsRotapanelCommands commands) { String fieldValue = "art.field.test.visibility"; com.kitfox.svg.SVGElement[] elements = getElementsContainingField(fieldValue).toArray(new com.kitfox.svg.SVGElement[0]); com.kitfox.svg.SVGElement element0 = java.util.stream.Stream.of(elements).filter(el -> "0".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); com.kitfox.svg.SVGElement element1 = java.util.stream.Stream.of(elements).filter(el -> "1".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); com.kitfox.svg.SVGElement element2 = java.util.stream.Stream.of(elements).filter(el -> "2".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); setAttribute(element0, "display", commands.test <= 0 ? "inline" : "none", 999); setAttribute(element1, "display", commands.test == 1 ? "inline" : "none", 999); setAttribute(element2, "display", commands.test == 2 ? "inline" : "none", 999); } private void updateIntervalModeElements(art.library.model.devices.vms.rotapanel.VmsRotapanelCommands commands) { String fieldValue = "art.field.interval.visibility"; com.kitfox.svg.SVGElement[] elements = getElementsContainingField(fieldValue).toArray(new com.kitfox.svg.SVGElement[0]); com.kitfox.svg.SVGElement[] elementEqualOrGreaterThan0 = java.util.stream.Stream.of(elements).filter(el -> ">0".equals(el.getPresAbsolute(fieldValue).getStringValue())).toArray(com.kitfox.svg.SVGElement[]::new); com.kitfox.svg.SVGElement elementMinus1 = java.util.stream.Stream.of(elements).filter(el -> "-1".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); com.kitfox.svg.SVGElement element0 = java.util.stream.Stream.of(elements).filter(el -> "0".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); java.util.stream.Stream.of(elementEqualOrGreaterThan0).forEach(el -> setAttribute(el, "display", commands.interval > 0 ? "inline" : "none", 999)); setAttribute(elementMinus1, "display", commands.interval == -1 ? "inline" : "none", 999); setAttribute(element0, "display", commands.interval == 0 ? "inline" : "none", 999); if (commands.interval > 0) { setText(getElementsContainingField("art.field.interval.text").get(0), String.valueOf(commands.interval) + " '"); } } private void updateHourOfDayElements(art.library.model.devices.vms.rotapanel.VmsRotapanelCommands commands) { String fieldValue = "art.field.hourOfDay.visibility"; com.kitfox.svg.SVGElement[] elements = getElementsContainingField(fieldValue).toArray(new com.kitfox.svg.SVGElement[0]); com.kitfox.svg.SVGElement[] elementEqualOrGreaterThan0 = java.util.stream.Stream.of(elements).filter(el -> ">=0".equals(el.getPresAbsolute(fieldValue).getStringValue())).toArray(com.kitfox.svg.SVGElement[]::new); com.kitfox.svg.SVGElement elementMinus1 = java.util.stream.Stream.of(elements).filter(el -> "-1".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); com.kitfox.svg.SVGElement elementMinus2 = java.util.stream.Stream.of(elements).filter(el -> "-2".equals(el.getPresAbsolute(fieldValue).getStringValue())).findAny().get(); java.util.stream.Stream.of(elementEqualOrGreaterThan0).forEach(el -> setAttribute(el, "display", commands.hourOfDay >= 0 ? "inline" : "none", 999)); setAttribute(elementMinus1, "display", commands.hourOfDay == -1 ? "inline" : "none", 999); setAttribute(elementMinus2, "display", commands.hourOfDay == -2 ? "inline" : "none", 999); if (commands.hourOfDay >= 0) { setText(getElementsContainingField("art.field.hourOfDay.text").get(0), String.valueOf(commands.hourOfDay)); } } private void updateFaceElements(art.library.model.devices.vms.rotapanel.VmsRotapanelCommands commands) { String fieldValue = "art.field.face.visibility"; com.kitfox.svg.SVGElement[] elements = getElementsContainingField(fieldValue).toArray(new com.kitfox.svg.SVGElement[0]); for (com.kitfox.svg.SVGElement element : elements) { setAttribute(element, "display", commands.face == element.getPresAbsolute(fieldValue).getIntValue() ? "inline" : "none", 999); } } private void checkForbiddenFace(Device device) { art.library.model.devices.vms.rotapanel.VmsRotapanel panel = (art.library.model.devices.vms.rotapanel.VmsRotapanel) device; art.library.model.devices.vms.rotapanel.VmsRotapanelInformation information = panel.getDeviceInformation(); art.library.model.devices.vms.rotapanel.VmsRotapanelStatus status = panel.getDeviceStatus(); boolean forbiddenFace = information.isForbiddenFace(status.face); setAttribute("forbidden", "display", forbiddenFace ? "inline" : "none", 999); } private void translateText(SVGElement element) { try { setText(element, art.client.models.Shared.getMessage(getText(element))); } catch (Exception ex) { } } // 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); // }