Skip to content

Commit 0bb2fe5

Browse files
committed
Fix missing context menu for certain controls widgets
... that use 'options' in their Confirmation Dialog meaning that this property value cannot be converted to a Boolean and so an exception is being thrown. See ISSUE 3407.
1 parent 8ba0923 commit 0bb2fe5

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/ContextMenuSupport.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package org.csstudio.display.builder.runtime.app;
99

1010
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propConfirmDialog;
11+
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propConfirmDialogOptions;
1112
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propPassword;
1213

1314
import javafx.collections.ObservableList;
@@ -21,6 +22,7 @@
2122
import org.csstudio.display.builder.model.Widget;
2223
import org.csstudio.display.builder.model.WidgetProperty;
2324
import org.csstudio.display.builder.model.properties.CommonWidgetProperties;
25+
import org.csstudio.display.builder.model.properties.ConfirmDialog;
2426
import org.csstudio.display.builder.model.spi.ActionInfo;
2527
import org.csstudio.display.builder.representation.ToolkitListener;
2628
import org.csstudio.display.builder.representation.javafx.widgets.JFXBaseRepresentation;
@@ -134,8 +136,17 @@ private void fillMenu(Runnable setFocus, final Widget widget) {
134136
// because in here we would invoke actions without those constraints
135137
final Optional<WidgetProperty<String>> pass = widget.checkProperty(propPassword);
136138
final Optional<WidgetProperty<Boolean>> prompt = widget.checkProperty(propConfirmDialog);
139+
final Optional<WidgetProperty<ConfirmDialog>> promptOptions = widget.checkProperty(propConfirmDialogOptions);
140+
Boolean promptBool = false;
141+
if (promptOptions.get().getValue() instanceof ConfirmDialog) {
142+
if (((ConfirmDialog) promptOptions.get().getValue()) != ConfirmDialog.NONE) {
143+
promptBool = true;
144+
}
145+
} else {
146+
promptBool = prompt.get().getValue();
147+
}
137148
final boolean need_dialog = (pass.isPresent() && !pass.get().getValue().isBlank()) ||
138-
(prompt.isPresent() && prompt.get().getValue());
149+
(prompt.isPresent() && promptBool );
139150

140151
if (! need_dialog)
141152
for (ActionInfo info : widget.propActions().getValue().getActions()) {

0 commit comments

Comments
 (0)