diff --git a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/RegionBaseRepresentation.java b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/RegionBaseRepresentation.java index 7e4cf542a4..694eaa17c8 100644 --- a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/RegionBaseRepresentation.java +++ b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/RegionBaseRepresentation.java @@ -255,22 +255,19 @@ private void connectionOrValueChanged(final WidgetProperty property, final Ob AlarmSeverity severity = AlarmSeverity.NONE; // Ignore custom border and value of primary PV, show disconnected - if (! model_widget.runtimePropConnected().getValue()) + final VType value = value_prop.getValue(); + final Alarm alarm = Alarm.alarmOf(value); + if (! model_widget.runtimePropConnected().getValue() || alarm.equals(Alarm.disconnected())) severity = AlarmSeverity.UNDEFINED; else { // Reflect severity of primary PV's value if (value_prop != null && alarm_sensitive_border_prop.getValue()) { - final Object value = value_prop.getValue(); - final Alarm alarm = Alarm.alarmOf(value); if (alarm != null && alarm.getSeverity() != AlarmSeverity.NONE) // Have alarm info severity = alarm.getSeverity(); - else if (value instanceof VType) - // VType that doesn't provide alarm, always OK - severity = AlarmSeverity.NONE; else if (value != null) - // Not a vtype, but non-null, assume OK + // VType that doesn't provide alarm, always OK severity = AlarmSeverity.NONE; else // null severity = AlarmSeverity.UNDEFINED; diff --git a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/SpinnerRepresentation.java b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/SpinnerRepresentation.java index 74ec7a5c8a..f8ee0881db 100644 --- a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/SpinnerRepresentation.java +++ b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/SpinnerRepresentation.java @@ -24,6 +24,7 @@ import org.csstudio.display.builder.model.widgets.SpinnerWidget; import org.csstudio.display.builder.representation.javafx.Cursors; import org.csstudio.display.builder.representation.javafx.JFXUtil; +import org.epics.vtype.Alarm; import org.epics.vtype.Display; import org.epics.vtype.VNumber; import org.epics.vtype.VType; @@ -374,7 +375,8 @@ private void writeResultingValue(double change) */ private String computeText(final VType value) { - if (value == null) + Alarm alarm = Alarm.alarmOf(value); + if (value == null || alarm.equals(Alarm.disconnected())) return "<" + model_widget.propPVName().getValue() + ">"; return FormatOptionHandler.format(value, model_widget.propFormat().getValue(), diff --git a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TextEntryRepresentation.java b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TextEntryRepresentation.java index 3792dc2673..6ae8f2c1a9 100644 --- a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TextEntryRepresentation.java +++ b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TextEntryRepresentation.java @@ -27,6 +27,7 @@ import org.csstudio.display.builder.model.widgets.TextEntryWidget; import org.csstudio.display.builder.representation.javafx.Cursors; import org.csstudio.display.builder.representation.javafx.JFXUtil; +import org.epics.vtype.Alarm; import org.epics.vtype.VType; import org.phoebus.ui.javafx.Styles; import org.phoebus.ui.vtype.FormatOptionHandler; @@ -345,7 +346,8 @@ private void styleChanged(final WidgetProperty property, final Object old_val */ private String computeText(final VType value) { - if (value == null) + Alarm alarm = Alarm.alarmOf(value); + if (value == null || alarm.equals(Alarm.disconnected())) return "<" + model_widget.propPVName().getValue() + ">"; if (value == PVWidget.RUNTIME_VALUE_NO_PV) return ""; diff --git a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TextUpdateRepresentation.java b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TextUpdateRepresentation.java index 4287458de9..e87fc13772 100644 --- a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TextUpdateRepresentation.java +++ b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TextUpdateRepresentation.java @@ -20,6 +20,7 @@ import org.csstudio.display.builder.model.widgets.PVWidget; import org.csstudio.display.builder.model.widgets.TextUpdateWidget; import org.csstudio.display.builder.representation.javafx.JFXUtil; +import org.epics.vtype.Alarm; import org.epics.vtype.VType; import org.phoebus.ui.vtype.FormatOptionHandler; @@ -167,7 +168,8 @@ private void styleChanged(final WidgetProperty property, final Object old_val private String computeText(final VType value) { Objects.requireNonNull(model_widget, "No widget"); - if (value == null) + Alarm alarm = Alarm.alarmOf(value); + if (value == null || alarm.equals(Alarm.disconnected())) return "<" + model_widget.propPVName().getValue() + ">"; if (value == PVWidget.RUNTIME_VALUE_NO_PV) return ""; diff --git a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TooltipSupport.java b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TooltipSupport.java index c40f741593..ab1d0c0b08 100644 --- a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TooltipSupport.java +++ b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/TooltipSupport.java @@ -105,7 +105,7 @@ public static void attach(final Node node, final WidgetProperty tooltip_ // If 'vtype' supports it (i.e., it is an instance of "DisplayProvider"), // append the alarm limits to $(pv_value): - if (vtype instanceof DisplayProvider) { + if (vtype instanceof DisplayProvider && !Alarm.alarmOf(vtype).equals(Alarm.disconnected()) ) { Range alarmRange = display.getAlarmRange(); double lolo = alarmRange.getMinimum();