use of org.eclipse.sirius.components.forms.RadioOption in project sirius-components by eclipse-sirius.
the class WidgetAssert method assertRadio.
private void assertRadio(Radio actualRadio, Radio radio, IdPolicy idPolicy) {
assertThat(actualRadio.getLabel()).isEqualTo(radio.getLabel());
assertThat(actualRadio.getOptions().size()).isEqualTo(radio.getOptions().size());
int size = actualRadio.getOptions().size();
for (int i = 0; i < size; i++) {
RadioOption actualRadioOption = actualRadio.getOptions().get(i);
RadioOption radioOption = radio.getOptions().get(i);
assertThatObject(actualRadioOption).isNotNull();
if (idPolicy == IdPolicy.WITH_ID) {
assertThat(actualRadioOption.getId()).isEqualTo(radioOption.getId());
}
assertThat(actualRadioOption.getLabel()).isEqualTo(radioOption.getLabel());
assertThat(actualRadioOption.isSelected()).isEqualTo(radioOption.isSelected());
}
}
use of org.eclipse.sirius.components.forms.RadioOption in project sirius-components by eclipse-sirius.
the class RadioComponent method render.
@Override
public Element render() {
VariableManager variableManager = this.props.getVariableManager();
RadioDescription radioDescription = this.props.getRadioDescription();
String id = radioDescription.getIdProvider().apply(variableManager);
String label = radioDescription.getLabelProvider().apply(variableManager);
List<?> optionCandidates = radioDescription.getOptionsProvider().apply(variableManager);
List<Element> children = List.of(new Element(DiagnosticComponent.class, new DiagnosticComponentProps(radioDescription, variableManager)));
List<RadioOption> options = new ArrayList<>(optionCandidates.size());
for (Object candidate : optionCandidates) {
VariableManager optionVariableManager = variableManager.createChild();
optionVariableManager.put(CANDIDATE_VARIABLE, candidate);
String optionId = radioDescription.getOptionIdProvider().apply(optionVariableManager);
String optionLabel = radioDescription.getOptionLabelProvider().apply(optionVariableManager);
Boolean optionSelected = radioDescription.getOptionSelectedProvider().apply(optionVariableManager);
// @formatter:off
RadioOption option = RadioOption.newRadioOption(optionId).label(optionLabel).selected(optionSelected).build();
// @formatter:on
options.add(option);
}
BiFunction<VariableManager, String, IStatus> genericHandler = radioDescription.getNewValueHandler();
Function<String, IStatus> specializedHandler = newValue -> {
return genericHandler.apply(variableManager, newValue);
};
// @formatter:off
RadioElementProps radioElementProps = RadioElementProps.newRadioElementProps(id).label(label).options(options).newValueHandler(specializedHandler).children(children).build();
return new Element(RadioElementProps.TYPE, radioElementProps);
// @formatter:on
}
use of org.eclipse.sirius.components.forms.RadioOption in project sirius-components by eclipse-sirius.
the class EditRadioEventHandlerTests method testRadioEdition.
@Test
public void testRadioEdition() {
// $NON-NLS-1$
String id = "Radio id";
// $NON-NLS-1$
var input = new EditRadioInput(UUID.randomUUID(), UUID.randomUUID().toString(), FORM_ID, id, "optionId");
AtomicBoolean hasBeenExecuted = new AtomicBoolean();
Function<String, IStatus> newValueHandler = newValue -> {
hasBeenExecuted.set(true);
return new Success();
};
// @formatter:off
RadioOption option = // $NON-NLS-1$
RadioOption.newRadioOption("optionId").label(// $NON-NLS-1$
"Option label").selected(false).build();
Radio radio = Radio.newRadio(id).label(// $NON-NLS-1$
"label").newValueHandler(newValueHandler).options(List.of(option)).diagnostics(List.of()).build();
Group group = // $NON-NLS-1$
Group.newGroup("groupId").label(// $NON-NLS-1$
"group label").widgets(List.of(radio)).build();
Page page = // $NON-NLS-1$
Page.newPage("pageId").label(// $NON-NLS-1$
"page label").groups(List.of(group)).build();
Form form = Form.newForm(FORM_ID).targetObjectId(// $NON-NLS-1$
"targetObjectId").descriptionId(UUID.randomUUID()).label(// $NON-NLS-1$
"form label").pages(List.of(page)).build();
// @formatter:on
IFormQueryService formQueryService = new IFormQueryService.NoOp() {
@Override
public Optional<AbstractWidget> findWidget(Form form, String widgetId) {
return Optional.of(radio);
}
};
EditRadioEventHandler handler = new EditRadioEventHandler(formQueryService, new ICollaborativeFormMessageService.NoOp(), new SimpleMeterRegistry());
assertThat(handler.canHandle(input)).isTrue();
Many<ChangeDescription> changeDescriptionSink = Sinks.many().unicast().onBackpressureBuffer();
One<IPayload> payloadSink = Sinks.one();
handler.handle(payloadSink, changeDescriptionSink, form, input);
ChangeDescription changeDescription = changeDescriptionSink.asFlux().blockFirst();
assertThat(changeDescription.getKind()).isEqualTo(ChangeKind.SEMANTIC_CHANGE);
IPayload payload = payloadSink.asMono().block();
assertThat(payload).isInstanceOf(EditRadioSuccessPayload.class);
assertThat(hasBeenExecuted.get()).isTrue();
}
Aggregations