package Rotapanel;
|
|
|
import art.library.model.devices.DeviceCommands;
|
import art.library.model.devices.DeviceGraphicsRuntime;
|
import com.kitfox.svg.SVGDiagram;
|
import com.kitfox.svg.SVGElement;
|
|
|
public class RotapanelCommands extends DeviceGraphicsRuntime
|
{
|
|
public RotapanelCommands(art.library.model.devices.Device device, DeviceCommands commands, SVGDiagram diagram)
|
{
|
super(device, commands, diagram);
|
}
|
|
public void status()
|
{
|
art.library.model.devices.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());
|
|
}
|
|
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);
|
checkForbiddenFace(getDevice());
|
getElementsContainingField("art.translate").forEach(this::translateText);
|
}
|
|
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(art.library.model.devices.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.VmsRotapanelCommands commands = (art.library.model.devices.vms.rotapanel.VmsRotapanelCommands) getDeviceCommands();
|
|
boolean forbiddenFace = information.isForbiddenFace(commands.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);
|
//
|
}
|