Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 53 additions & 4 deletions app/display/model/.classpath
Original file line number Diff line number Diff line change
@@ -1,12 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="src" path="src/main/resources"/>
<classpathentry kind="src" path="src/test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/core-framework"/>
<classpathentry combineaccessrules="false" kind="src" path="/core-util"/>
<classpathentry combineaccessrules="false" kind="src" path="/core-ui"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="target/generated-sources/annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
17 changes: 17 additions & 0 deletions app/display/model/.project
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,25 @@
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
<filteredResources>
<filter>
<id>1775148788479</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import org.csstudio.display.builder.model.widgets.PolygonWidget;
import org.csstudio.display.builder.model.widgets.PolylineWidget;
import org.csstudio.display.builder.model.widgets.ProgressBarWidget;
import org.csstudio.display.builder.model.widgets.PVASecurityWidget;
import org.csstudio.display.builder.model.widgets.RadioWidget;
import org.csstudio.display.builder.model.widgets.RectangleWidget;
import org.csstudio.display.builder.model.widgets.ScaledSliderWidget;
Expand Down Expand Up @@ -90,6 +91,7 @@ public Collection<WidgetDescriptor> getWidgetDescriptors()
PolygonWidget.WIDGET_DESCRIPTOR,
PolylineWidget.WIDGET_DESCRIPTOR,
ProgressBarWidget.WIDGET_DESCRIPTOR,
PVASecurityWidget.WIDGET_DESCRIPTOR,
RadioWidget.WIDGET_DESCRIPTOR,
RectangleWidget.WIDGET_DESCRIPTOR,
ScaledSliderWidget.WIDGET_DESCRIPTOR,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
/*******************************************************************************
* Copyright (c) 2026 Oak Ridge National Laboratory.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.csstudio.display.builder.model.widgets;

import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.newBooleanPropertyDescriptor;
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.newStringPropertyDescriptor;

import java.util.List;

import org.csstudio.display.builder.model.Widget;
import org.csstudio.display.builder.model.WidgetCategory;
import org.csstudio.display.builder.model.WidgetDescriptor;
import org.csstudio.display.builder.model.WidgetProperty;
import org.csstudio.display.builder.model.WidgetPropertyCategory;
import org.csstudio.display.builder.model.WidgetPropertyDescriptor;
import org.csstudio.display.builder.model.properties.EnumWidgetProperty;

@SuppressWarnings("nls")
public class PVASecurityWidget extends PVWidget
{
public enum PVASecurityMode
{
TLS_STATUS,
SERVER_IDENTITY,
CLIENT_IDENTITY,
AUTH_METHOD
}

public static final WidgetDescriptor WIDGET_DESCRIPTOR =
new WidgetDescriptor("pva_security", WidgetCategory.MONITOR,
"PVA Security",
"/icons/led.png",
"PVAccess TLS security status and identity")
{
@Override
public Widget createWidget()
{
return new PVASecurityWidget();
}
};

public static final WidgetPropertyDescriptor<PVASecurityMode> propDisplayMode =
new WidgetPropertyDescriptor<>(WidgetPropertyCategory.DISPLAY, "display_mode", "Display Mode")
{
@Override
public EnumWidgetProperty<PVASecurityMode> createProperty(final Widget widget, final PVASecurityMode default_value)

Check warning on line 51 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RR&open=AZ2RmuQjqLdx4W_fv1RR&pullRequest=3785
{
return new EnumWidgetProperty<>(this, widget, default_value);
}
};

public static final WidgetPropertyDescriptor<Boolean> propTLSActive =
newBooleanPropertyDescriptor(WidgetPropertyCategory.RUNTIME, "tls_active", "TLS Active");

public static final WidgetPropertyDescriptor<String> propServerIdentity =
newStringPropertyDescriptor(WidgetPropertyCategory.RUNTIME, "server_identity", "Server Identity");

public static final WidgetPropertyDescriptor<String> propClientIdentity =
newStringPropertyDescriptor(WidgetPropertyCategory.RUNTIME, "client_identity", "Client Identity");

public static final WidgetPropertyDescriptor<String> propAuthMethod =
newStringPropertyDescriptor(WidgetPropertyCategory.RUNTIME, "auth_method", "Auth Method");

private volatile WidgetProperty<PVASecurityMode> display_mode;

Check warning on line 69 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename this field "display_mode" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RS&open=AZ2RmuQjqLdx4W_fv1RS&pullRequest=3785
private volatile WidgetProperty<Boolean> tls_active;

Check warning on line 70 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename this field "tls_active" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RT&open=AZ2RmuQjqLdx4W_fv1RT&pullRequest=3785
private volatile WidgetProperty<String> server_identity;

Check warning on line 71 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename this field "server_identity" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RU&open=AZ2RmuQjqLdx4W_fv1RU&pullRequest=3785
private volatile WidgetProperty<String> client_identity;

Check warning on line 72 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename this field "client_identity" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RV&open=AZ2RmuQjqLdx4W_fv1RV&pullRequest=3785
private volatile WidgetProperty<String> auth_method;

Check warning on line 73 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename this field "auth_method" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RW&open=AZ2RmuQjqLdx4W_fv1RW&pullRequest=3785

public PVASecurityWidget()
{
super(WIDGET_DESCRIPTOR.getType(), 200, 25);
}

@Override
protected void defineProperties(final List<WidgetProperty<?>> properties)
{
super.defineProperties(properties);
properties.add(display_mode = propDisplayMode.createProperty(this, PVASecurityMode.TLS_STATUS));

Check warning on line 84 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Extract the assignment out of this expression.

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RM&open=AZ2RmuQjqLdx4W_fv1RM&pullRequest=3785
properties.add(tls_active = propTLSActive.createProperty(this, false));

Check warning on line 85 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Extract the assignment out of this expression.

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RN&open=AZ2RmuQjqLdx4W_fv1RN&pullRequest=3785
properties.add(server_identity = propServerIdentity.createProperty(this, ""));

Check warning on line 86 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Extract the assignment out of this expression.

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RO&open=AZ2RmuQjqLdx4W_fv1RO&pullRequest=3785
properties.add(client_identity = propClientIdentity.createProperty(this, ""));

Check warning on line 87 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Extract the assignment out of this expression.

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RP&open=AZ2RmuQjqLdx4W_fv1RP&pullRequest=3785
properties.add(auth_method = propAuthMethod.createProperty(this, ""));

Check warning on line 88 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Extract the assignment out of this expression.

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RQ&open=AZ2RmuQjqLdx4W_fv1RQ&pullRequest=3785
}

public WidgetProperty<PVASecurityMode> propDisplayMode()

Check failure on line 91 in app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/PVASecurityWidget.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename method "propDisplayMode" to prevent any misunderstanding/clash with field "propDisplayMode".

See more on https://sonarcloud.io/project/issues?id=ControlSystemStudio_phoebus&issues=AZ2RmuQjqLdx4W_fv1RX&open=AZ2RmuQjqLdx4W_fv1RX&pullRequest=3785
{
return display_mode;
}

public WidgetProperty<Boolean> runtimePropTLSActive()
{
return tls_active;
}

public WidgetProperty<String> runtimePropServerIdentity()
{
return server_identity;
}

public WidgetProperty<String> runtimePropClientIdentity()
{
return client_identity;
}

public WidgetProperty<String> runtimePropAuthMethod()
{
return auth_method;
}
}
58 changes: 53 additions & 5 deletions app/display/representation-javafx/.classpath
Original file line number Diff line number Diff line change
@@ -1,11 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="src" path="src/main/resources"/>
<classpathentry kind="src" path="src/test/java"/>
<classpathentry kind="src" path="src/test/resources"/>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/phoebus-target"/>
<classpathentry combineaccessrules="false" kind="src" path="/core-framework"/>
<classpathentry combineaccessrules="false" kind="src" path="/core-ui"/>
Expand All @@ -18,5 +44,27 @@
<classpathentry combineaccessrules="false" kind="src" path="/app-display-representation"/>
<classpathentry combineaccessrules="false" kind="src" path="/app-databrowser"/>
<classpathentry combineaccessrules="false" kind="src" path="/app-3d-viewer"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="target/generated-sources/annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
17 changes: 17 additions & 0 deletions app/display/representation-javafx/.project
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,25 @@
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
<filteredResources>
<filter>
<id>1775148840228</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import org.csstudio.display.builder.model.widgets.PolygonWidget;
import org.csstudio.display.builder.model.widgets.PolylineWidget;
import org.csstudio.display.builder.model.widgets.ProgressBarWidget;
import org.csstudio.display.builder.model.widgets.PVASecurityWidget;
import org.csstudio.display.builder.model.widgets.RadioWidget;
import org.csstudio.display.builder.model.widgets.RectangleWidget;
import org.csstudio.display.builder.model.widgets.ScaledSliderWidget;
Expand Down Expand Up @@ -106,6 +107,7 @@ public Widget createWidget()
entry(PolygonWidget.WIDGET_DESCRIPTOR, () -> (WidgetRepresentation) new PolygonRepresentation()),
entry(PolylineWidget.WIDGET_DESCRIPTOR, () -> (WidgetRepresentation) new PolylineRepresentation()),
entry(ProgressBarWidget.WIDGET_DESCRIPTOR, () -> (WidgetRepresentation) new ProgressBarRepresentation()),
entry(PVASecurityWidget.WIDGET_DESCRIPTOR, () -> (WidgetRepresentation) new PVASecurityRepresentation()),
entry(RadioWidget.WIDGET_DESCRIPTOR, () -> (WidgetRepresentation) new RadioRepresentation()),
entry(RectangleWidget.WIDGET_DESCRIPTOR, () -> (WidgetRepresentation) new RectangleRepresentation()),
entry(ScaledSliderWidget.WIDGET_DESCRIPTOR, () -> (WidgetRepresentation) new ScaledSliderRepresentation()),
Expand Down
Loading