Search in sources :

Example 1 with CustomField

use of com.vaadin.ui.CustomField 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;
}
Also used : CustomField(com.vaadin.ui.CustomField) FieldSizeConstans(pl.edu.icm.unity.webui.common.FieldSizeConstans) Arrays(java.util.Arrays) CustomComponent(com.vaadin.ui.CustomComponent) TextField(com.vaadin.ui.TextField) VerticalLayout(com.vaadin.ui.VerticalLayout) Alignment(com.vaadin.ui.Alignment) ComboBox(com.vaadin.ui.ComboBox) ValidationResult(com.vaadin.data.ValidationResult) ImageField(pl.edu.icm.unity.webui.common.file.ImageField) Supplier(java.util.function.Supplier) UnityServerConfiguration(pl.edu.icm.unity.engine.api.config.UnityServerConfiguration) UnitySubView(pl.edu.icm.unity.webui.common.webElements.UnitySubView) CheckBox(com.vaadin.ui.CheckBox) MessageSource(pl.edu.icm.unity.MessageSource) NotificationPopup(pl.edu.icm.unity.webui.common.NotificationPopup) ChipsWithTextfield(pl.edu.icm.unity.webui.common.chips.ChipsWithTextfield) CollapsibleLayout(pl.edu.icm.unity.webui.common.CollapsibleLayout) Set(java.util.Set) UUID(java.util.UUID) ConfirmDialog(pl.edu.icm.unity.webui.common.ConfirmDialog) FormLayoutWithFixedCaptionWidth(pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth) StandardButtonsHelper(pl.edu.icm.unity.webui.common.StandardButtonsHelper) Collectors(java.util.stream.Collectors) Binder(com.vaadin.data.Binder) Images(pl.edu.icm.unity.webui.common.Images) TextFieldWithChangeConfirmation(pl.edu.icm.unity.webui.common.TextFieldWithChangeConfirmation) Consumer(java.util.function.Consumer) ClientType(com.nimbusds.oauth2.sdk.client.ClientType) List(java.util.List) Button(com.vaadin.ui.Button) Stream(java.util.stream.Stream) HorizontalLayout(com.vaadin.ui.HorizontalLayout) URIAccessService(pl.edu.icm.unity.engine.api.files.URIAccessService) CopyToClipboardButton(io.imunity.webelements.clipboard.CopyToClipboardButton) Styles(pl.edu.icm.unity.webui.common.Styles) FormValidationException(pl.edu.icm.unity.webui.common.FormValidationException) GrantFlow(pl.edu.icm.unity.oauth.as.OAuthSystemAttributesProvider.GrantFlow) ChipsWithDropdown(pl.edu.icm.unity.webui.common.chips.ChipsWithDropdown) Component(com.vaadin.ui.Component) ComboBox(com.vaadin.ui.ComboBox) ChipsWithDropdown(pl.edu.icm.unity.webui.common.chips.ChipsWithDropdown) FormLayoutWithFixedCaptionWidth(pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth) CheckBox(com.vaadin.ui.CheckBox) ChipsWithTextfield(pl.edu.icm.unity.webui.common.chips.ChipsWithTextfield) TextFieldWithChangeConfirmation(pl.edu.icm.unity.webui.common.TextFieldWithChangeConfirmation) TextField(com.vaadin.ui.TextField)

Aggregations

ClientType (com.nimbusds.oauth2.sdk.client.ClientType)1 Binder (com.vaadin.data.Binder)1 ValidationResult (com.vaadin.data.ValidationResult)1 Alignment (com.vaadin.ui.Alignment)1 Button (com.vaadin.ui.Button)1 CheckBox (com.vaadin.ui.CheckBox)1 ComboBox (com.vaadin.ui.ComboBox)1 Component (com.vaadin.ui.Component)1 CustomComponent (com.vaadin.ui.CustomComponent)1 CustomField (com.vaadin.ui.CustomField)1 HorizontalLayout (com.vaadin.ui.HorizontalLayout)1 TextField (com.vaadin.ui.TextField)1 VerticalLayout (com.vaadin.ui.VerticalLayout)1 CopyToClipboardButton (io.imunity.webelements.clipboard.CopyToClipboardButton)1 Arrays (java.util.Arrays)1 List (java.util.List)1 Set (java.util.Set)1 UUID (java.util.UUID)1 Consumer (java.util.function.Consumer)1 Supplier (java.util.function.Supplier)1