use of pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth in project unity by unity-idm.
the class EditOAuthClientSubView method buildHeaderSection.
private FormLayoutWithFixedCaptionWidth buildHeaderSection() {
FormLayoutWithFixedCaptionWidth header = new FormLayoutWithFixedCaptionWidth();
header.setMargin(true);
TextField name = new TextField();
name.setCaption(msg.getMessage("EditOAuthClientSubView.name"));
binder.forField(name).withValidator((v, c) -> {
if (v != null && !v.isEmpty() && v.length() < 2) {
return ValidationResult.error(msg.getMessage("toShortValue"));
}
return ValidationResult.ok();
}).bind("name");
header.addComponent(name);
ComboBox<String> type = new ComboBox<>();
type.setCaption(msg.getMessage("EditOAuthClientSubView.type"));
type.setItems(Stream.of(ClientType.values()).map(f -> f.toString()).collect(Collectors.toList()));
type.setEmptySelectionAllowed(false);
binder.forField(type).bind("type");
header.addComponent(type);
TextFieldWithGenerator id = new TextFieldWithGenerator();
id.setCaption(msg.getMessage("EditOAuthClientSubView.id"));
id.setReadOnly(editMode);
id.setWidth(30, Unit.EM);
binder.forField(id).asRequired(msg.getMessage("fieldRequired")).withValidator((v, c) -> {
if (v != null && allClientsIds.contains(v)) {
return ValidationResult.error(msg.getMessage("EditOAuthClientSubView.invalidClientId"));
}
return ValidationResult.ok();
}).bind("id");
header.addComponent(id);
CustomField<String> secret;
if (!editMode) {
secret = new TextFieldWithGenerator();
secret.setCaption(msg.getMessage("EditOAuthClientSubView.secret"));
secret.setWidth(30, Unit.EM);
binder.forField(secret).withValidator((v, c) -> {
if ((v == null || v.isEmpty()) && ClientType.CONFIDENTIAL.toString().equals(type.getValue())) {
return ValidationResult.error(msg.getMessage("fieldRequired"));
}
return ValidationResult.ok();
}).bind("secret");
header.addComponent(secret);
} else {
TextFieldWithChangeConfirmation<TextFieldWithGenerator> secretWithChangeConfirmation = new TextFieldWithChangeConfirmation<>(msg, new TextFieldWithGenerator());
secretWithChangeConfirmation.setCaption(msg.getMessage("EditOAuthClientSubView.secret"));
secretWithChangeConfirmation.setWidth(30, Unit.EM);
binder.forField(secretWithChangeConfirmation).withValidator((v, c) -> {
if (secretWithChangeConfirmation.isEditMode()) {
return ValidationResult.error(msg.getMessage("fieldRequired"));
}
return ValidationResult.ok();
}).bind("secret");
header.addComponent(secretWithChangeConfirmation);
secret = secretWithChangeConfirmation;
}
type.addValueChangeListener(e -> {
secret.setEnabled(ClientType.CONFIDENTIAL.toString().equals(e.getValue()));
if (!secret.isEnabled())
secret.setValue("");
});
ChipsWithDropdown<String> allowedFlows = new ChipsWithDropdown<>();
allowedFlows.setCaption(msg.getMessage("EditOAuthClientSubView.allowedFlows"));
allowedFlows.setItems(Stream.of(GrantFlow.values()).map(f -> f.toString()).collect(Collectors.toList()));
binder.forField(allowedFlows).withValidator((v, c) -> {
if (v == null || v.isEmpty()) {
return ValidationResult.error(msg.getMessage("fieldRequired"));
}
return ValidationResult.ok();
}).bind("flows");
header.addComponent(allowedFlows);
ChipsWithTextfield redirectURIs = new ChipsWithTextfield(msg);
redirectURIs.setWidth(FieldSizeConstans.LINK_FIELD_WIDTH, FieldSizeConstans.LINK_FIELD_WIDTH_UNIT);
redirectURIs.setCaption(msg.getMessage("EditOAuthClientSubView.authorizedRedirectURIs"));
binder.forField(redirectURIs).withValidator((v, c) -> {
if (v == null || v.size() == 0) {
return ValidationResult.error(msg.getMessage("fieldRequired"));
}
return ValidationResult.ok();
}).bind("redirectURIs");
header.addComponent(redirectURIs);
Set<String> definedScopes = scopesSupplier.get();
ChipsWithDropdown<String> allowedScopes = new ChipsWithDropdown<>();
allowedScopes.setCaption(msg.getMessage("EditOAuthClientSubView.allowedScopes"));
allowedScopes.setItems(definedScopes);
allowedScopes.setSkipRemoveInvalidSelections(true);
binder.forField(allowedScopes).withValidator((v, c) -> {
if (v != null && !v.isEmpty() && !definedScopes.containsAll(v)) {
return ValidationResult.error(msg.getMessage("EditOAuthClientSubView.invalidAllowedScopes"));
}
return ValidationResult.ok();
}).bind("scopes");
CheckBox allowAllScopes = new CheckBox(msg.getMessage("EditOAuthClientSubView.allowAllScopes"));
binder.forField(allowAllScopes).bind("allowAnyScopes");
allowAllScopes.addValueChangeListener(v -> allowedScopes.setEnabled(!v.getValue()));
header.addComponent(allowAllScopes);
header.addComponent(allowedScopes);
return header;
}
use of pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth in project unity by unity-idm.
the class TranslationRulesPresenter method initUI.
protected void initUI() {
rules = new FormLayoutWithFixedCaptionWidth();
rules.setMargin(false);
rules.setSpacing(false);
setSizeFull();
setCompositionRoot(rules);
}
use of pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth in project unity by unity-idm.
the class MainAuthenticatorEditor method initUI.
private void initUI() {
Map<AuthenticatorTypeDescription, String> authnTypesSorted = getAuthenticatorTypes();
authenticatorTypeCombo = new ComboBox<>();
authenticatorTypeCombo.setCaption(msg.getMessage("MainAuthenticatorEditor.typeComboCaption"));
authenticatorTypeCombo.addSelectionListener(e -> reloadEditor());
if (typeChangeListener.isPresent()) {
authenticatorTypeCombo.addSelectionListener(typeChangeListener.get());
}
authenticatorTypeCombo.setEmptySelectionAllowed(false);
authenticatorTypeCombo.setItemCaptionGenerator(t -> authnTypesSorted.get(t));
authenticatorTypeCombo.setWidth(25, Unit.EM);
authenticatorTypeCombo.setItems(authnTypesSorted.keySet());
authenticatorTypeLabel = new TextField();
authenticatorTypeLabel.setWidth(25, Unit.EM);
authenticatorTypeLabel.setCaption(msg.getMessage("MainAuthenticatorEditor.typeLabelCaption"));
authenticatorTypeLabel.setReadOnly(true);
mainLayout = new VerticalLayout();
mainLayout.setMargin(false);
FormLayoutWithFixedCaptionWidth typeWrapper = new FormLayoutWithFixedCaptionWidth();
typeWrapper.setMargin(new MarginInfo(false, true));
typeWrapper.addComponent(authenticatorTypeCombo);
typeWrapper.addComponent(authenticatorTypeLabel);
mainLayout.addComponent(typeWrapper);
setCompositionRoot(mainLayout);
if (toEdit != null) {
AuthenticatorTypeDescription desc = authnTypesSorted.keySet().stream().filter(t -> t.getVerificationMethod().equals(toEdit.authenticator.type)).findFirst().orElse(null);
authenticatorTypeCombo.setValue(desc);
authenticatorTypeCombo.setVisible(false);
authenticatorTypeLabel.setValue(desc != null ? AuthenticatorTypeLabelHelper.getAuthenticatorTypeLabel(msg, desc) : "");
authenticatorTypeLabel.setVisible(true);
} else {
authenticatorTypeCombo.setVisible(true);
authenticatorTypeLabel.setVisible(false);
authenticatorTypeCombo.setValue(authnTypesSorted.keySet().iterator().next());
}
}
use of pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth in project unity by unity-idm.
the class OTPWithLDAPAuthenticatorEditor method buildOtpHeaderSection.
private CollapsibleLayout buildOtpHeaderSection() {
FormLayoutWithFixedCaptionWidth otp = new FormLayoutWithFixedCaptionWidth();
ComboBox<Integer> codeLength = new ComboBox<>(msg.getMessage("OTPCredentialDefinitionEditor.codeLength"));
tooltip(codeLength, msg.getMessage("OTPWithLDAPAuthenticatorEditor.codeLength.tip"));
codeLength.setItems(6, 8);
codeLength.setEmptySelectionAllowed(false);
configBinder.forField(codeLength).asRequired().bind("codeLength");
otp.addComponent(codeLength);
IntStepper allowedTimeDrift = new IntStepper(msg.getMessage("OTPWithLDAPAuthenticatorEditor.allowedTimeDrift"));
tooltip(allowedTimeDrift, msg.getMessage("OTPWithLDAPAuthenticatorEditor.allowedTimeDrift.tip"));
allowedTimeDrift.setWidth(3, Unit.EM);
allowedTimeDrift.setMinValue(0);
allowedTimeDrift.setMaxValue(2880);
configBinder.forField(allowedTimeDrift).asRequired().bind("allowedTimeDriftSteps");
otp.addComponent(allowedTimeDrift);
IntStepper timeStep = new IntStepper(msg.getMessage("OTPWithLDAPAuthenticatorEditor.timeStep"));
tooltip(timeStep, msg.getMessage("OTPWithLDAPAuthenticatorEditor.timeStep.tip"));
timeStep.setWidth(3, Unit.EM);
timeStep.setMinValue(5);
timeStep.setMaxValue(180);
configBinder.forField(timeStep).asRequired().bind("timeStepSeconds");
otp.addComponent(timeStep);
EnumComboBox<HashFunction> hashAlgorithm = new EnumComboBox<>(msg.getMessage("OTPWithLDAPAuthenticatorEditor.hashAlgorithm"), msg, "OTPWithLDAPAuthenticatorEditor.hashAlgorithm.", HashFunction.class, HashFunction.SHA1);
tooltip(hashAlgorithm, msg.getMessage("OTPWithLDAPAuthenticatorEditor.hashAlgorithm.tip"));
configBinder.forField(hashAlgorithm).asRequired().bind("hashFunction");
otp.addComponent(hashAlgorithm);
return new CollapsibleLayout(msg.getMessage("OTPWithLDAPAuthenticatorEditor.otp"), otp);
}
use of pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth in project unity by unity-idm.
the class OTPWithLDAPAuthenticatorEditor method buildUserDNResolvingSection.
private CollapsibleLayout buildUserDNResolvingSection() {
FormLayoutWithFixedCaptionWidth userDNResolvingLayout = new FormLayoutWithFixedCaptionWidth();
userDNResolvingLayout.setMargin(false);
userDNResolvingMode = new RadioButtonGroup<>();
userDNResolvingMode.setItemCaptionGenerator(v -> msg.getMessage("LdapAuthenticatorEditor.userDNResolvingMode." + v.toString()));
userDNResolvingMode.setItems(UserDNResolving.values());
configBinder.forField(userDNResolvingMode).bind("userDNResolving");
userDNResolvingLayout.addComponent(userDNResolvingMode);
TextField userDNtemplate = new TextField(msg.getMessage("LdapAuthenticatorEditor.userDNtemplate"));
userDNtemplate.setPlaceholder("uid={USERNAME},dc=myorg,dc=global");
userDNtemplate.setDescription(msg.getMessage("LdapAuthenticatorEditor.userDNtemplate.desc"));
userDNtemplate.setWidth(FieldSizeConstans.WIDE_FIELD_WIDTH, FieldSizeConstans.WIDE_FIELD_WIDTH_UNIT);
configBinder.forField(userDNtemplate).withValidator((v, c) -> {
if (v != null && v.contains("{USERNAME}") || !userDNResolvingMode.getValue().equals(UserDNResolving.template)) {
return ValidationResult.ok();
} else {
return ValidationResult.error(msg.getMessage("LdapAuthenticatorEditor.invalidUserDNtemplate"));
}
}).bind("userDNTemplate");
userDNResolvingLayout.addComponent(userDNtemplate);
TextField ldapSearchBaseName = new TextField(msg.getMessage("LdapAuthenticatorEditor.searchSpecification.baseName"));
ldapSearchBaseName.setWidth(FieldSizeConstans.WIDE_FIELD_WIDTH, FieldSizeConstans.WIDE_FIELD_WIDTH_UNIT);
configBinder.forField(ldapSearchBaseName).asRequired(getLdapSearchRequiredValidator()).bind("ldapSearchBaseName");
userDNResolvingLayout.addComponent(ldapSearchBaseName);
TextField ldapSearchFilter = new TextField(msg.getMessage("LdapAuthenticatorEditor.searchSpecification.filter"));
ldapSearchFilter.setWidth(FieldSizeConstans.WIDE_FIELD_WIDTH, FieldSizeConstans.WIDE_FIELD_WIDTH_UNIT);
configBinder.forField(ldapSearchFilter).withValidator((v, c) -> {
if (userDNResolvingMode.getValue().equals(UserDNResolving.ldapSearch)) {
return getFilterValidator().apply(v, c);
} else {
return ValidationResult.ok();
}
}).bind("ldapSearchFilter");
userDNResolvingLayout.addComponent(ldapSearchFilter);
ComboBox<SearchScope> ldapSearchScope = new ComboBox<>(msg.getMessage("LdapAuthenticatorEditor.searchSpecification.scope"));
ldapSearchScope.setEmptySelectionAllowed(false);
ldapSearchScope.setItems(SearchScope.values());
configBinder.forField(ldapSearchScope).bind("ldapSearchScope");
userDNResolvingLayout.addComponent(ldapSearchScope);
userDNResolvingMode.addValueChangeListener(e -> {
UserDNResolving v = userDNResolvingMode.getValue();
userDNtemplate.setVisible(v.equals(UserDNResolving.template));
ldapSearchBaseName.setVisible(v.equals(UserDNResolving.ldapSearch));
ldapSearchFilter.setVisible(v.equals(UserDNResolving.ldapSearch));
ldapSearchScope.setVisible(v.equals(UserDNResolving.ldapSearch));
if (v.equals(UserDNResolving.template)) {
ldapSearchBaseName.clear();
ldapSearchFilter.clear();
} else {
userDNtemplate.clear();
}
});
return new CollapsibleLayout(msg.getMessage("OTPWithLDAPAuthenticatorEditor.userDNResolving"), userDNResolvingLayout);
}
Aggregations