In this case you just need to define the label
attribute not on the components directly, but on the input paramter.
Try something like this:
dialogs.createInputDialog(view)
.withHeader("Send Promotion Email")
.withLabelsPosition(Dialogs.InputDialogBuilder.LabelsPosition.TOP)
.withParameters(
InputParameter.parameter("addr")
.withLabel("Address")
.withField(() -> {
TextField field = uiComponents.create(TextField.class);
field.setReadOnly(true);
field.setValue(fullMember.getUsableEmail());
field.setWidthFull();
return field;
}),
InputParameter.parameter("rank")
.withLabel("New rank")
.withField(() -> {
TextField field = uiComponents.create(TextField.class);
field.setReadOnly(true);
field.setValue(fullMember.getRank().getDisplayName());
field.setWidthFull();
return field;
}),
InputParameter.parameter("comment")
.withLabel("Comment")
.withField(() -> {
TextArea field = uiComponents.create(TextArea.class);
field.setWidthFull();
return field;
}),
InputParameter.booleanParameter("bccMe")
.withLabel("BCC Me")
.withField(() -> {
Checkbox field = uiComponents.create(Checkbox.class);
field.setValue(false);
return field;
})
)
.withActions(DialogActions.OK_CANCEL)
.withCloseListener(closeEvent -> {
if (closeEvent.closedWith(DialogOutcome.OK)) {
String comment = closeEvent.getValue("comment");
fullMember.setOneTimeComment(comment);
Boolean bccMe = closeEvent.getValue("bccMe");
String bccEmail = Boolean.TRUE.equals(bccMe) ? ((User) currentAuthentication.getUser()).getEmail() : "";
memberService.sendMemberEmailAsync(fullMember, MemberEmailType.RANK_CONFIRM, "", bccEmail);
notifications.create("Email sent to: " + fullMember.getUsableEmail())
.withType(Notifications.Type.SUCCESS)
.show();
}
})
.open();
Best regards,
Dmitriy