Search in sources :

Example 1 with FormLayoutWithFixedCaptionWidth

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;
}
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)

Example 2 with FormLayoutWithFixedCaptionWidth

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);
}
Also used : FormLayoutWithFixedCaptionWidth(pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth)

Example 3 with FormLayoutWithFixedCaptionWidth

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());
    }
}
Also used : FormLayoutWithFixedCaptionWidth(pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth) MarginInfo(com.vaadin.shared.ui.MarginInfo) TextField(com.vaadin.ui.TextField) VerticalLayout(com.vaadin.ui.VerticalLayout) AuthenticatorTypeDescription(pl.edu.icm.unity.types.authn.AuthenticatorTypeDescription)

Example 4 with FormLayoutWithFixedCaptionWidth

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);
}
Also used : CollapsibleLayout(pl.edu.icm.unity.webui.common.CollapsibleLayout) FormLayoutWithFixedCaptionWidth(pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth) HashFunction(io.imunity.otp.HashFunction) ComboBox(com.vaadin.ui.ComboBox) EnumComboBox(pl.edu.icm.unity.webui.common.EnumComboBox) EnumComboBox(pl.edu.icm.unity.webui.common.EnumComboBox) IntStepper(org.vaadin.risto.stepper.IntStepper)

Example 5 with FormLayoutWithFixedCaptionWidth

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);
}
Also used : FieldSizeConstans(pl.edu.icm.unity.webui.common.FieldSizeConstans) TextField(com.vaadin.ui.TextField) PrototypeComponent(pl.edu.icm.unity.engine.api.utils.PrototypeComponent) VerticalLayout(com.vaadin.ui.VerticalLayout) ComboBox(com.vaadin.ui.ComboBox) Autowired(org.springframework.beans.factory.annotation.Autowired) ServerSpecification(pl.edu.icm.unity.ldap.client.config.ServerSpecification) ValidationResult(com.vaadin.data.ValidationResult) PKIManagement(pl.edu.icm.unity.engine.api.PKIManagement) Validator(com.vaadin.data.Validator) CheckBox(com.vaadin.ui.CheckBox) UserDNResolving(pl.edu.icm.unity.ldap.client.config.common.LDAPCommonConfiguration.UserDNResolving) AuthenticatorDefinition(pl.edu.icm.unity.types.authn.AuthenticatorDefinition) LDAPException(com.unboundid.ldap.sdk.LDAPException) SearchSpecification(pl.edu.icm.unity.ldap.client.config.SearchSpecification) MessageSource(pl.edu.icm.unity.MessageSource) IntegerRangeValidator(com.vaadin.data.validator.IntegerRangeValidator) CollapsibleLayout(pl.edu.icm.unity.webui.common.CollapsibleLayout) TooltipExtension.tooltip(io.imunity.tooltip.TooltipExtension.tooltip) GridWithEditor(pl.edu.icm.unity.webui.common.GridWithEditor) Set(java.util.Set) EnumComboBox(pl.edu.icm.unity.webui.common.EnumComboBox) FormLayoutWithFixedCaptionWidth(pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth) SearchScope(pl.edu.icm.unity.ldap.client.config.common.LDAPConnectionProperties.SearchScope) Binder(com.vaadin.data.Binder) HashFunction(io.imunity.otp.HashFunction) EngineException(pl.edu.icm.unity.exceptions.EngineException) ObjectFactory(org.springframework.beans.factory.ObjectFactory) SubViewSwitcher(pl.edu.icm.unity.webui.common.webElements.SubViewSwitcher) AuthenticatorEditor(pl.edu.icm.unity.webui.authn.authenticators.AuthenticatorEditor) AuthenticatorEditorFactory(pl.edu.icm.unity.webui.authn.authenticators.AuthenticatorEditorFactory) I18nTextField(pl.edu.icm.unity.webui.common.i18n.I18nTextField) ConnectionMode(pl.edu.icm.unity.ldap.client.config.common.LDAPConnectionProperties.ConnectionMode) BaseAuthenticatorEditor(pl.edu.icm.unity.webui.authn.authenticators.BaseAuthenticatorEditor) RadioButtonGroup(com.vaadin.ui.RadioButtonGroup) FormValidationException(pl.edu.icm.unity.webui.common.FormValidationException) Optional(java.util.Optional) StringToIntegerConverter(com.vaadin.data.converter.StringToIntegerConverter) Filter(com.unboundid.ldap.sdk.Filter) Unit(com.vaadin.server.Sizeable.Unit) IntStepper(org.vaadin.risto.stepper.IntStepper) Component(com.vaadin.ui.Component) CollapsibleLayout(pl.edu.icm.unity.webui.common.CollapsibleLayout) FormLayoutWithFixedCaptionWidth(pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth) ComboBox(com.vaadin.ui.ComboBox) EnumComboBox(pl.edu.icm.unity.webui.common.EnumComboBox) SearchScope(pl.edu.icm.unity.ldap.client.config.common.LDAPConnectionProperties.SearchScope) TextField(com.vaadin.ui.TextField) I18nTextField(pl.edu.icm.unity.webui.common.i18n.I18nTextField) UserDNResolving(pl.edu.icm.unity.ldap.client.config.common.LDAPCommonConfiguration.UserDNResolving)

Aggregations

FormLayoutWithFixedCaptionWidth (pl.edu.icm.unity.webui.common.FormLayoutWithFixedCaptionWidth)85 CollapsibleLayout (pl.edu.icm.unity.webui.common.CollapsibleLayout)61 VerticalLayout (com.vaadin.ui.VerticalLayout)47 TextField (com.vaadin.ui.TextField)41 I18nTextField (pl.edu.icm.unity.webui.common.i18n.I18nTextField)33 ComboBox (com.vaadin.ui.ComboBox)32 CheckBox (com.vaadin.ui.CheckBox)31 Binder (com.vaadin.data.Binder)25 MessageSource (pl.edu.icm.unity.MessageSource)25 ValidationResult (com.vaadin.data.ValidationResult)23 Set (java.util.Set)22 List (java.util.List)21 Component (com.vaadin.ui.Component)19 FieldSizeConstans (pl.edu.icm.unity.webui.common.FieldSizeConstans)19 SubViewSwitcher (pl.edu.icm.unity.webui.common.webElements.SubViewSwitcher)19 FormValidationException (pl.edu.icm.unity.webui.common.FormValidationException)18 IntegerRangeValidator (com.vaadin.data.validator.IntegerRangeValidator)15 Label (com.vaadin.ui.Label)15 Collectors (java.util.stream.Collectors)15 GridWithEditor (pl.edu.icm.unity.webui.common.GridWithEditor)15