package Rtz; import art.library.model.devices.DeviceGraphicsRuntime; import com.kitfox.svg.SVGDiagram; import com.kitfox.svg.SVGElement; public class RtzMapComplex extends DeviceGraphicsRuntime { public RtzMapComplex(art.library.model.devices.Device device, SVGDiagram diagram) { super(device, diagram); } public RtzMapComplex(art.library.model.devices.Device device, art.library.model.devices.DeviceCommands commands, SVGDiagram diagram) { super(device, commands, diagram); } public void status() { try { statusSubcontroller(); } catch (Exception e) { } } public void statusSubcontroller() { java.util.Calendar calendardate = java.util.Calendar.getInstance(); calendardate.set(java.util.Calendar.MILLISECOND, 0); long seconds = calendardate.getTimeInMillis() / 1000; boolean even = seconds % 2 == 0; art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller controller = (art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller) getDevice(); art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerStatus controllerStatus = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerStatus) controller.getDeviceStatus(); art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation controllerInformation = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation) controller.getDeviceInformation(); art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status subcontrollerStatus = controllerStatus.rtz32; art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerRealtime subcontrollerRealtime = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerRealtime) device.getDeviceRealtime(); art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerConfiguration subcontrollerConfiguration = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerConfiguration) device.getDeviceConfiguration(); SVGElement emergency = getElement("Emergency"); SVGElement lock = getElement("Lock"); SVGElement run = getElement("Run"); SVGElement remote = getElement("Remote"); SVGElement background = getElement("Background"); SVGElement border = getElement("Border"); SVGElement ribbon = getElement("Ribbon"); SVGElement elapsed1 = getElement("Elapsed1"); SVGElement elapsed2 = getElement("Elapsed2"); setAttribute(emergency, "fill-opacity", "1.0", 999); setAttribute(lock, "fill-opacity", "1.0", 999); setAttribute(run, "fill-opacity", "1.0", 999); setAttribute(remote, "fill-opacity", "1.0", 999); setAttribute(emergency, "fill", "#804080", 999); setAttribute(lock, "fill", "#804080", 999); setAttribute(run, "fill", "#804080", 999); setAttribute(remote, "fill", "#804080", 999); setText("Text number", String.format("%04d", controllerInformation.number)); setText("Text information", ""); setText("Text offset", ""); setText("Text cycle", ""); setText("Text elapsed", ""); try { if (art.client.models.Shared.configuration.general.darkMap == true) { setAttribute("Text number", "fill", "#FFFFFF"); setAttribute("Text information", "fill", "#FFFFFF"); setAttribute("Text offset", "fill", "#FFFFFF"); setAttribute("Text cycle", "fill", "#FFFFFF"); } else { setAttribute("Text number", "fill", "#000000"); setAttribute("Text information", "fill", "#000000"); setAttribute("Text offset", "fill", "#000000"); setAttribute("Text cycle", "fill", "#000000"); } } catch (Exception ex) { } setAttribute(elapsed1, "display", "none"); setAttribute(elapsed2, "display", "none"); /* setAttribute(border, "stroke", "#800080");*/ setAttribute(border, "display", "inline"); setAttribute(border, "stroke-width", 6.5); setAttribute(border, "stroke-opacity", 0.75); setAttribute(ribbon, "stroke-opacity", 0.50); setAttribute(ribbon, "stroke", "#FF80FF"); setAttribute(background, "fill", "#FF80FF"); if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_NON_CENTRALIZED) { setAttribute(border, "stroke", "#FFFFFF",999); setAttribute(background, "fill", "#FFFFFF",999); setAttribute(ribbon, "stroke", "#FFFFFF",999); } else { setAttribute(border, "display", "none", 999); if (controllerStatus.rtz32.centralized.centralized == false) { setAttribute(border, "fill", "#808080", 999); setAttribute(background, "fill", "#808080", 999); setAttribute(ribbon, "stroke", "#808080", 999); } else { boolean semiactuated = controllerStatus.rtz32.general.semiactuated ; boolean offline = false; if (device.getAlarm("alarm_controller_offline") > 0 || device.getAlarm("alarm_offline") > 0) { offline = true; setAttribute(background, "display", even ? "inline" : "none", 999); } if (controllerStatus.rtz32.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_COMPUTER) { setAttribute(background, "fill", "#00FF00", 999); setAttribute(ribbon, "stroke", "#00FF00", 999); if(offline == true) { setAttribute(background, "display", even || semiactuated ? "none" : "inline", 999); } } else if (controllerStatus.rtz32.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL) { setAttribute(background, "fill", "#FF0000", 999); setAttribute(ribbon, "stroke", "#FF0000", 999); if (offline == true) { setAttribute(background, "display", even ? "none" : "inline", 999); } } if (device.getAlarm("alarm_controller_offline") <= 0 && device.getAlarm("alarm_offline") <= 0) { if (art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller.class.cast(device).getDeviceAlarms().rtz32.flashing.getServerityAlarm() > 0) { setAttribute(background, "fill", "#FFFF00", 999); setAttribute(ribbon, "stroke", "#FFFF00", 999); setAttribute(background, "display", even ? "inline" : "none", 999); } } } } if (subcontrollerStatus.forcings != null && (subcontrollerStatus.forcings.centralized != null || subcontrollerStatus.forcings.colorsMode != null || subcontrollerStatus.forcings.computerMode != null || subcontrollerStatus.forcings.control != null || subcontrollerStatus.forcings.plan != null)) { setAttribute(lock, "fill-opacity", "1.0", 999); setAttribute(lock, "fill", "#FF0000", 999); } else { setAttribute(lock, "fill-opacity", "0.15", 999); setAttribute(lock, "fill", "#000000", 999); } if (subcontrollerStatus.general.emergency == true) { setAttribute(emergency, "fill-opacity", "1.0", 999); } else if (subcontrollerStatus.general.emergency == false) { setAttribute(emergency, "fill-opacity", "0.15", 999); setAttribute(emergency, "fill", "#000000", 999); } setAttribute("Text information", "display", "iniline", 999); setAttribute("Text offset", "display", "iniline", 999); setAttribute("Text cycle", "display", "iniline", 999); if ((subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_COMPUTER)) { setAttribute(remote, "fill-opacity", "1.0", 999); setAttribute(remote, "fill", "#0000FF", 999); } else { setAttribute(remote, "fill-opacity", "0.15", 999); setAttribute(remote, "fill", "#000000", 999); } if (subcontrollerRealtime != null && subcontrollerRealtime.rtz32 != null && subcontrollerRealtime.rtz32.junctionRealtime == true) { setAttribute(run, "fill-opacity", "1.0", 999); setAttribute(run, "fill", "#0000FF", 999); } else { setAttribute(run, "fill-opacity", "0.15", 999); setAttribute(run, "fill", "#000000", 999); } double strokeopacity = Math.pow(2, controller.getDeviceAlarms().getServerityAlarm()) / 32; /* if (controller.getDeviceAlarms().getServerityAlarm() > 0) { setAttribute(border, "display", "inline"); setAttribute(border, "stroke", "#FF0000"); setAttribute(border, "stroke-opacity", strokeopacity); setAttribute(border, "stroke-width", 6.5 + (6.5 * strokeopacity)); } else { setAttribute(border, "stroke", "#808080"); setAttribute(border, "display", "inline"); setAttribute(border, "stroke-width", 6.5); setAttribute(border, "stroke-opacity", 1.0); }*/ switch (subcontrollerStatus.general.state) { case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_UNKNOWN: /*setAttribute(background, "fill", "#808080"); setAttribute(ribbon, "stroke", "#808080");*/ setAttribute(elapsed2, "fill", "#808080"); setText("Text information", "OFF"); return; case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_FLASHING: setAttribute("Text information", "display","none",999); setAttribute("Text offset", "display","none",999); setAttribute("Text cycle", "display","none",999); if (even) { /* setAttribute(background, "fill", "#FFFF00"); setAttribute(ribbon, "stroke", "#FFFF00");*/ setAttribute(elapsed2, "fill", "#FFFF00"); } else { /* setAttribute(background, "fill", "#808000"); setAttribute(ribbon, "stroke", "#808000");*/ setAttribute(elapsed2, "fill", "#808000"); } setText("Text information", "Y^"); break; case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_STARTUP: if (subcontrollerStatus.general.emergency == true) { /* setAttribute(background, "fill", even ? "#FF8000" : "#804000"); setAttribute(ribbon, "stroke", even ? "#FF8000" : "#804000");*/ setAttribute(elapsed2, "fill", even ? "#FF8000" : "#804000"); } else if (subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL) { /* setAttribute(background, "fill", even ? "#008000" : "#004000"); setAttribute(ribbon, "stroke", even ?"#008000" : "#004000");*/ setAttribute(elapsed2, "fill",even ? "#008000" : "#004000"); } else { /* setAttribute(background, "fill", even ? "#00FF00" : "#008000"); setAttribute(ribbon, "stroke", even ? "#00FF00" : "#008000");*/ setAttribute(elapsed2, "fill", even ? "#00FF00" : "#008000"); } break; case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.STATE_COLORS: if (subcontrollerStatus.general.emergency == true) { /* setAttribute(background, "fill", "#FF8000"); */ setAttribute(ribbon, "stroke", "#FF8000"); setAttribute(elapsed2, "fill", "#FF8000"); } else if (subcontrollerStatus.general.control == art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.CONTROL_LOCAL) { /* setAttribute(background, "fill", "#008000"); setAttribute(ribbon, "stroke", "#008000");*/ setAttribute(elapsed2, "fill", "#008000"); } else { /* setAttribute(background, "fill", "#00FF00"); setAttribute(ribbon, "stroke", "#00FF00");*/ setAttribute(elapsed2, "fill", "#00FF00"); } break; } art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration_Program plan = null; if (subcontrollerStatus.plan != null && subcontrollerStatus.plan.number > 0) { try { plan = subcontrollerConfiguration.rtz32.getProgram(subcontrollerStatus.plan.number); } catch (Exception e) { } } if (plan != null) { String information = ""; if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED) information = "C"; else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_MASTER) information = "M"; else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_MASTER_SLAVE) information = "M-E"; else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_SLAVE) information = "E"; else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_SLAVE_MASTER) information = "E-M"; else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_CENTRALIZED_TROLLEY) information = "CTw"; else if (controllerInformation.mode == art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation.MODE_NON_CENTRALIZED) information = "NC"; else information = "?"; information = information + plan.number; switch (subcontrollerStatus.general.planMode) { case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_DELAYED_ORDERS: information = information + "d"; break; case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_DYNAMIC_SELECTION: information = information + "ds"; break; case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_FORCED: information = information + "f"; break; case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_ONLINE_ORDERS: information = information + "o"; break; case art.library.model.devices.colors.controller.RTZ32.status.RTZ32_Status_General.PLAN_MODE_TIMETABLE: information = information + "t"; break; } setText("Text information", information); if (plan.offset > 0) { setText("Text offset", "" + plan.offset); } else { setText("Text offset", ""); } setText("Text cycle", "" + plan.cycle); if (subcontrollerRealtime != null) { try { String text = subcontrollerRealtime.rtz32.phase.phaseNumber + ":" + subcontrollerRealtime.rtz32.counters.cycle; setText("Text elapsed", text); setAttribute(elapsed1, "display", "inline"); setAttribute(elapsed2, "display", "inline"); int elapsedWidth = getAttributeInteger(elapsed1, "width") - 2; float ratio = 1; setAttribute(elapsed2, "width", (elapsedWidth * Math.min(1.0f, ratio))); update(elapsed2); } catch (Exception ex) { } } java.awt.Color bckColor = java.awt.Color.decode(background.getStyleAbsolute("fill").getStringValue()); java.awt.Color darkerColor = bckColor.darker(); String darkHex = String.format("#%02x%02x%02x", darkerColor.darker().getRed(), darkerColor.darker().getGreen(), darkerColor.darker().getBlue()); setAttribute("Text information", "fill", darkHex, 999); setAttribute("Text offset", "fill", darkHex, 999); setAttribute("Text cycle", "fill", darkHex, 999); setAttribute(emergency, "fill", darkHex, 999); setAttribute(lock, "fill", darkHex, 999); setAttribute(run, "fill", darkHex, 999); setAttribute(remote, "fill", darkHex, 999); } } public void paintNoStatusAvailable() { art.library.model.devices.colors.controller.M.M_Controller controller = (art.library.model.devices.colors.controller.M.M_Controller) getDevice(); SVGElement thunderbolt = getElement("Thunderbolt"); SVGElement emergency = getElement("Emergency"); SVGElement lock = getElement("Lock"); SVGElement calendar = getElement("Calendar"); SVGElement run = getElement("Run"); SVGElement remote = getElement("Remote"); SVGElement background = getElement("Background"); SVGElement border = getElement("Border"); SVGElement ribbon = getElement("Ribbon"); SVGElement elapsed1 = getElement("Elapsed1"); SVGElement elapsed2 = getElement("Elapsed2"); setAttribute(thunderbolt, "fill-opacity", "1.0", 999); setAttribute(emergency, "fill-opacity", "1.0", 999); setAttribute(lock, "fill-opacity", "1.0", 999); setAttribute(calendar, "fill-opacity", "1.0", 999); setAttribute(run, "fill-opacity", "1.0", 999); setAttribute(remote, "fill-opacity", "1.0", 999); setAttribute(thunderbolt, "fill", "#804080", 999); setAttribute(emergency, "fill", "#804080", 999); setAttribute(lock, "fill", "#804080", 999); setAttribute(calendar, "fill", "#804080", 999); setAttribute(run, "fill", "#804080", 999); setAttribute(remote, "fill", "#804080", 999); setText("Text number", String.format("%04d", controller.getDeviceInformation().number)); setText("Text information", ""); setText("Text offset", ""); setText("Text cycle", ""); setText("Text elapsed", ""); setAttribute(elapsed1, "display", "none"); setAttribute(elapsed2, "display", "none"); setAttribute(ribbon, "stroke-opacity", 0.50); setAttribute(background, "fill", "#FF00FF"); setAttribute(ribbon, "stroke", "#FF00FF"); setAttribute(border, "stroke", "#FF00FF"); setAttribute(border, "display", "inline"); setAttribute(border, "stroke-width", 6.5); setAttribute(border, "stroke-opacity", 1.0); } public void commands() { final String colorNoCommandsBorder = "#00007C"; final String colorNoCommandsBackground = "#7C7CFA"; final String colorCommandsBorder = "#007C00"; final String colorCommandsBackground = "#7CFA7C"; art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller controller = (art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller) getDevice(); art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation controllerInformation = (art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerInformation) controller.getDeviceInformation(); SVGElement background = getElement("Background"); SVGElement border = getElement("Border"); SVGElement ribbon = getElement("Ribbon"); SVGElement emergency = getElement("Emergency"); SVGElement lock = getElement("Lock"); SVGElement run = getElement("Run"); SVGElement remote = getElement("Remote"); setAttribute(border, "stroke", !getDeviceCommands().isEmpty() ? colorCommandsBorder : colorNoCommandsBorder); setAttribute(border, "display", "inline"); setAttribute(border, "stroke-width", 6.5); setAttribute(border, "stroke-opacity", 0.75); setAttribute(ribbon, "stroke-opacity", 0.50); setAttribute(ribbon, "stroke", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground); setAttribute(background, "fill", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground); setAttribute(emergency, "fill", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999); setAttribute(lock, "fill", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999); setAttribute(run, "fill", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999); setAttribute(remote, "fill", !getDeviceCommands().isEmpty() ? colorCommandsBackground : colorNoCommandsBackground, 999); setText("Text number", String.format("%04d", controllerInformation.number)); setAttribute("Text information", "display", "none", 999); setAttribute("Text offset", "display", "none", 999); setAttribute("Text cycle", "display", "none", 999); setAttribute("Text elapsed", "display", "none", 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); // }