Example usage for org.apache.wicket.markup.html.form.validation IFormValidator IFormValidator

List of usage examples for org.apache.wicket.markup.html.form.validation IFormValidator IFormValidator

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.form.validation IFormValidator IFormValidator.

Prototype

IFormValidator

Source Link

Usage

From source file:org.devgateway.eudevfin.reports.ui.pages.CustomReportsPage.java

License:Open Source License

public CustomReportsPage() {
    form = new Form("form");

    customReportsModel = new CustomReportsModel();
    CompoundPropertyModel<CustomReportsModel> model = new CompoundPropertyModel<>(customReportsModel);
    form.setModel(model);/*  w w w . j  a va2 s . c om*/

    Label info = new Label("info", new StringResourceModel("reports.info", this, null, null));
    add(info);

    geography = new DropDownField<>("geography", new RWComponentPropertyModel<Category>("geography"),
            categoryFactory.getUsedGeographyProvider());

    recipient = new DropDownField<>("recipient", new RWComponentPropertyModel<Area>("recipient"),
            usedAreaProvider);

    nationalInstitution = new DropDownField<>("nationalInstitution",
            new RWComponentPropertyModel<Organization>("nationalInstitution"), usedOrganizationProvider);

    multilateralAgency = new DropDownField<>("multilateralAgency",
            new RWComponentPropertyModel<ChannelCategory>("multilateralAgency"),
            (ChoiceProvider) categoryFactory.getUsedChannelProvider());

    typeOfFlowBiMulti = new DropDownField<>("typeOfFlowbiMulti",
            new RWComponentPropertyModel<Category>("typeOfFlowbiMulti"),
            categoryFactory.getUsedTypeOfFlowBiMultiProvider());

    sector = new DropDownField<>("sector", new RWComponentPropertyModel<Category>("sector"),
            categoryFactory.getUsedSectorProvider());

    // there are only 2 predefined options for this field
    // and we take them with StringResourceModel
    List<String> typeOfExpenditureOptions = new ArrayList<>();
    typeOfExpenditureOptions.add(new StringResourceModel("commitment", this, null, null).getObject());
    typeOfExpenditureOptions.add(new StringResourceModel("disbursement", this, null, null).getObject());
    typeOfExpenditure = new DropDownField<>("typeOfExpenditure",
            new RWComponentPropertyModel<String>("typeOfExpenditure"),
            new PredefinedStringProvider(typeOfExpenditureOptions));
    customReportsModel
            .setTypeOfExpenditure(new StringResourceModel("disbursement", this, null, null).getObject());

    year = new DropDownField<>("year", new RWComponentPropertyModel<Integer>("year"),
            new YearProvider(txService.findDistinctReportingYears()));

    startingYear = new DropDownField<>("startingYear", new RWComponentPropertyModel<Integer>("startingYear"),
            new YearProvider(txService.findDistinctStartingYears()));

    completitionYear = new DropDownField<>("completitionYear",
            new RWComponentPropertyModel<Integer>("completitionYear"),
            new YearProvider(txService.findDistinctCompletitionYears()));

    List<String> valueOfActivityOptions = new ArrayList<>();
    valueOfActivityOptions.add(new StringResourceModel("allAmount", this, null, null).getObject());
    valueOfActivityOptions.add(new StringResourceModel("lowerThanAmount", this, null, null).getObject());
    valueOfActivityOptions.add(new StringResourceModel("moreThanAmount", this, null, null).getObject());
    valueOfActivity = new DropDownField<>("valueOfActivity",
            new RWComponentPropertyModel<String>("valueOfActivity"),
            new PredefinedStringProvider(valueOfActivityOptions));
    customReportsModel.setValueOfActivity(new StringResourceModel("allAmount", this, null, null).getObject());

    CoFinancingTransactionsOnly = new CheckBoxField("cofinancingtransactionsonly",
            new RWComponentPropertyModel<Boolean>("coFinancingTransactionsOnly"));
    CPAOnly = new CheckBoxField("cpaonly", new RWComponentPropertyModel<Boolean>("CPAOnly"));
    humanitarianAid = new CheckBoxField("humanitarianAid",
            new RWComponentPropertyModel<Boolean>("humanitarianAid"));
    showRelatedBudgetCodes = new CheckBoxField("showRelatedBudgetCodes",
            new RWComponentPropertyModel<Boolean>("showRelatedBudgetCodes"));

    List<String> currencyTypes = Arrays.asList(
            new String[] { new StringResourceModel("pricesNationalCurrency", this, null, null).getObject(),
                    new StringResourceModel("pricesUSDCurrency", this, null, null).getObject() });
    pricesCurrency = new RadioChoiceField("pricesCurrency",
            new RWComponentPropertyModel<String>("pricesCurrency"), currencyTypes);
    pricesCurrency.getField().setChoices(currencyTypes);
    // select first National Currency
    customReportsModel
            .setPricesCurrency(new StringResourceModel("pricesNationalCurrency", this, null, null).getObject());

    typeOfFlowValidator = new IFormValidator() {
        @Override
        public FormComponent<Category>[] getDependentFormComponents() {
            List<FormComponent<Category>> list = new ArrayList<FormComponent<Category>>();
            list.add(CustomReportsPage.this.typeOfFlowBiMulti.getField());

            return list.toArray(new FormComponent[0]);
        }

        @Override
        public void validate(Form<?> form) {
            FormComponent<Category>[] components = this.getDependentFormComponents();
            Select2Choice<Category> typeOfFlowComp = (Select2Choice<Category>) components[0];

            if (typeOfFlowComp.getModelObject() == null) {
                ValidationError error = new ValidationError();
                error.addKey("typeOfFlowbiMulti.error");
                typeOfFlowComp.error(error);
            }
        }
    };

    geography.getField().add(new AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Category targetValue = geography.getField().getModel().getObject();

            // set recipient model as null in order to reset the dropdown values
            customReportsModel.setRecipient(null);

            if (targetValue != null) {
                usedAreaProvider.setGeography(targetValue.getName());
            } else {
                usedAreaProvider.setGeography(null);
            }

            target.add(recipient);
        }
    });

    typeOfFlowBiMulti.getField().add(new AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Category typeOfFlow = typeOfFlowBiMulti.getField().getModel().getObject();

            if (typeOfFlow != null) {
                // the flow is bilateral
                if (typeOfFlow.getCode().equals(CategoryConstants.BiMultilateral.BI_MULTILATERAL_1)) {
                    customReportsModel.setMultilateralAgency(null);
                    multilateralAgency.setEnabled(Boolean.FALSE);
                } else {
                    // the flow is multilateral
                    if (typeOfFlow.getCode().equals(CategoryConstants.BiMultilateral.BI_MULTILATERAL_2)) {
                        multilateralAgency.setEnabled(Boolean.TRUE);
                    }
                }
            } else {
                multilateralAgency.setEnabled(Boolean.TRUE);
            }

            target.add(multilateralAgency);
        }
    });

    multilateralAgency.getField().add(new AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Category channel = multilateralAgency.getField().getModel().getObject();

            if (channel != null) {
                customReportsModel.setTypeOfFlowbiMulti(catDao.findByCode("BI_MULTILATERAL##2").get(0));
            } else {
                // do nothing;
            }

            target.add(typeOfFlowBiMulti);
        }
    });

    // Needed for Ajax to update it
    recipient.setOutputMarkupId(true);
    recipient.setRenderBodyOnly(false);

    multilateralAgency.setOutputMarkupId(true);
    multilateralAgency.setRenderBodyOnly(false);

    typeOfFlowBiMulti.setOutputMarkupId(true);
    typeOfFlowBiMulti.setRenderBodyOnly(false);

    form.add(typeOfFlowValidator);
    form.add(geography);
    form.add(recipient);
    form.add(nationalInstitution);
    form.add(multilateralAgency);
    form.add(typeOfFlowBiMulti);
    form.add(sector);
    form.add(year);
    form.add(typeOfExpenditure);
    form.add(startingYear);
    form.add(completitionYear);
    form.add(valueOfActivity);
    form.add(CoFinancingTransactionsOnly);
    form.add(CPAOnly);
    form.add(humanitarianAid);
    form.add(showRelatedBudgetCodes);
    form.add(pricesCurrency);

    addSubmitButton();

    add(form);

    // also add the feedback panel
    feedbackPanel = new NotificationPanel("feedback");
    feedbackPanel.setOutputMarkupId(true);
    feedbackPanel.hideAfter(Duration.seconds(3));
    add(feedbackPanel);
}

From source file:org.efaps.ui.wicket.models.field.validators.FormNumberValidator.java

License:Apache License

/**
 * Instantiates a new number validator./*from   w  w w  .  j  a  v a 2  s. c om*/
 *
 * @param _uiField the ui field
 */
public FormNumberValidator(final AbstractUIField _uiField) {
    super(new IFormValidator() {

        /** The Constant serialVersionUID. */
        private static final long serialVersionUID = 1L;

        @Override
        public FormComponent<?>[] getDependentFormComponents() {
            return null;
        }

        @Override
        public void validate(final Form<?> _form) {
            final List<StringValue> list = RequestCycle.get().getRequest().getRequestParameters()
                    .getParameterValues(_uiField.getFieldConfiguration().getName());
            boolean hasValue = false;
            if (CollectionUtils.isNotEmpty(list)) {
                for (final StringValue value : list) {
                    if (!value.isEmpty()) {
                        final String message = new NumberUI()
                                .validateValue(UIValue.get(null, null, value.toString()));
                        if (message != null) {
                            _form.error(_uiField.getFieldConfiguration().getLabel() + ": " + message);
                        }
                        hasValue = true;
                    }
                }
            }
            if (!hasValue && _uiField.getFieldConfiguration().getField().isRequired()) {
                _form.error(DBProperties.getFormatedDBProperty(
                        FormNumberValidator.class.getName() + ".FieldRequired",
                        (Object) _uiField.getFieldConfiguration().getLabel()));
            }
        }
    });
}

From source file:org.geoserver.web.data.store.arcsde.ArcSDECoverageStoreEditPanel.java

License:Open Source License

public ArcSDECoverageStoreEditPanel(final String componentId, final Form storeEditForm) {
    super(componentId, storeEditForm);

    final IModel model = storeEditForm.getModel();
    setDefaultModel(model);//w  ww . j av a  2  s  . com
    final CoverageStoreInfo storeInfo = (CoverageStoreInfo) storeEditForm.getModelObject();
    {
        Map<String, String> existingParameters = parseConnectionParameters(storeInfo);
        Map<String, Serializable> connectionParameters = storeInfo.getConnectionParameters();
        connectionParameters.putAll(existingParameters);
    }

    final IModel paramsModel = new PropertyModel(model, "connectionParameters");

    addConnectionPrototypePanel(storeInfo);

    // server, port, instance, user, pwd
    server = addTextPanel(paramsModel, SERVER_PARAM);
    port = addTextPanel(paramsModel, PORT_PARAM);
    instance = addTextPanel(paramsModel, INSTANCE_PARAM);
    user = addTextPanel(paramsModel, USER_PARAM);
    password = addPasswordPanel(paramsModel);

    server.setOutputMarkupId(true);
    port.setOutputMarkupId(true);
    instance.setOutputMarkupId(true);
    user.setOutputMarkupId(true);
    password.setOutputMarkupId(true);

    table = addRasterTable(storeInfo, paramsModel);

    /*
     * Listen to form submission and update the model's URL
     */
    storeEditForm.add(new IFormValidator() {
        private static final long serialVersionUID = 1L;

        public FormComponent[] getDependentFormComponents() {
            return new FormComponent[] { server, port, instance, user, password, table };
        }

        public void validate(final Form form) {
            CoverageStoreInfo storeInfo = (CoverageStoreInfo) form.getModelObject();
            final String serverVal = server.getValue();
            final String portVal = port.getValue();
            final String instanceVal = instance.getValue();
            final String userVal = user.getValue();
            final String passwordVal = password.getValue();
            final String tableVal = table.getValue();

            StringBuilder urlb = new StringBuilder("sde://");

            urlb.append(userVal).append(":").append(passwordVal).append("@");
            urlb.append(serverVal).append(":").append(portVal).append("/");
            if (instanceVal != null && instanceVal.trim().length() > 0) {
                urlb.append(instanceVal);
            }
            urlb.append("#").append(tableVal);
            String coverageUrl = urlb.toString();
            LOGGER.info("Coverage URL: '" + coverageUrl + "'");
            storeInfo.setURL(coverageUrl);
        }

    });
}

From source file:org.geoserver.web.data.store.pgraster.PGRasterCoverageStoreEditPanel.java

License:Open Source License

public PGRasterCoverageStoreEditPanel(final String componentId, final Form storeEditForm) {
    super(componentId, storeEditForm);

    final IModel model = storeEditForm.getModel();
    setDefaultModel(model);/*from   ww  w  . java  2s  .  co m*/
    final IModel paramsModel = new PropertyModel(model, "connectionParameters");

    // double container dance to get stuff to show up and hide on demand (grrr)
    final WebMarkupContainer configsContainer = new WebMarkupContainer("configsContainer");
    configsContainer.setOutputMarkupId(true);
    add(configsContainer);

    final PGRasterPanel advancedConfigPanel = new PGRasterPanel("pgpanel", paramsModel, storeEditForm);
    advancedConfigPanel.setOutputMarkupId(true);
    advancedConfigPanel.setVisible(false);
    configsContainer.add(advancedConfigPanel);

    // TODO: Check whether this constructor is properly setup
    final TextParamPanel url = new TextParamPanel("urlPanel", new PropertyModel(paramsModel, "URL"),
            new ResourceModel("url", "URL"), true);
    final FormComponent urlFormComponent = url.getFormComponent();
    urlFormComponent.add(new FileExistsValidator());
    add(url);

    // enabled flag, and show the rest only if enabled is true
    IModel<Boolean> enabledModel = new Model<Boolean>(false);
    enabled = new CheckBox("enabled", enabledModel);
    add(enabled);
    enabled.add(new AjaxFormComponentUpdatingBehavior("onclick") {

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Boolean visible = enabled.getModelObject();

            advancedConfigPanel.setVisible(visible);
            target.addComponent(configsContainer);
        }
    });

    /*
     * Listen to form submission and update the model's URL
     */
    storeEditForm.add(new IFormValidator() {
        private static final long serialVersionUID = 1L;

        public FormComponent[] getDependentFormComponents() {
            if (enabled.getModelObject()) {
                return advancedConfigPanel.getDependentFormComponents();
            } else {
                return new FormComponent[] { urlFormComponent };
            }
        }

        public void validate(final Form form) {
            CoverageStoreInfo storeInfo = (CoverageStoreInfo) form.getModelObject();
            String coverageUrl = urlFormComponent.getValue();
            if (enabled.getModelObject()) {
                coverageUrl = advancedConfigPanel.buildURL() + coverageUrl;
            }

            storeInfo.setURL(coverageUrl);
        }

    });
}

From source file:org.hippoecm.frontend.editor.workflow.dialog.SelectLayoutStep.java

License:Apache License

public SelectLayoutStep(final IModel<String> layoutModel, final ILayoutProvider layouts) {
    super(new ResourceModel("select-layout-title"), new ResourceModel("select-layout-summary"));

    this.layoutProvider = layouts;

    setOutputMarkupId(true);//from w  w w .j  a v a  2s . c  o m

    add(new IFormValidator() {
        @Override
        public FormComponent<?>[] getDependentFormComponents() {
            return new FormComponent<?>[0];
        }

        @Override
        public void validate(final Form<?> form) {
            if (layoutModel.getObject() == null) {
                error(getString("layoutstep.selection.empty"));
            } else {
                clearErrors();
            }
        }
    });

    add(new ListView<String>("layouts", (layoutProvider == null ? null : layoutProvider.getLayouts())) {

        @Override
        protected void populateItem(ListItem<String> item) {
            final String layout = item.getModelObject();
            AjaxLink<Void> link = new AjaxLink<Void>("link") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    clearErrors();
                    layoutModel.setObject(layout);
                    target.add(SelectLayoutStep.this);
                }
            };
            ILayoutDescriptor descriptor = layoutProvider.getDescriptor(layout);
            link.add(new CachingImage("preview", descriptor.getIcon()));
            link.add(new Label("layout", descriptor.getName()));
            item.add(link);

            item.add(CssClass.append((new LoadableDetachableModel<String>() {
                @Override
                protected String load() {
                    return layout.equals(layoutModel.getObject()) ? "selected" : StringUtils.EMPTY;
                }
            })));
        }
    });
}

From source file:org.obiba.onyx.quartz.editor.category.MultipleChoiceCategoryHeaderPanel.java

License:Open Source License

@SuppressWarnings("serial")
public MultipleChoiceCategoryHeaderPanel(String id, final IModel<Questionnaire> questionnaireModel,
        final IModel<EditedQuestion> model) {
    super(id, model);
    setOutputMarkupId(true);//from w ww.  ja v  a2 s  .  c  om
    this.questionnaireModel = questionnaireModel;

    final Form<Question> form = new Form<Question>("form", new Model<Question>(model.getObject().getElement()));

    editedQuestion = model.getObject();
    question = model.getObject().getElement();

    choices = new LoadableDetachableModel<List<QuestionCategory>>() {

        private static final long serialVersionUID = 1L;

        @Override
        protected List<QuestionCategory> load() {
            List<QuestionCategory> missingQuestionCategories = question.getMissingQuestionCategories();
            List<QuestionCategory> correctQuestionCategories = new ArrayList<QuestionCategory>();
            for (QuestionCategory questionCategory : missingQuestionCategories) {
                boolean noAnswer = questionCategory.getCategory().isNoAnswer();
                boolean sharedIfLink = QuestionnaireSharedCategory.isSharedIfLink(questionCategory,
                        questionnaireModel.getObject());
                if (!sharedIfLink || noAnswer) {
                    correctQuestionCategories.add(questionCategory);
                    if (sharedIfLink && noAnswer) {
                        correctQuestionCategories.clear();
                        correctQuestionCategories.add(questionCategory);
                        return correctQuestionCategories;
                    }
                }
            }
            return correctQuestionCategories;
        }
    };

    requiredAnswer = new CheckBox("requiredAnswer", new Model<Boolean>());

    requiredAnswer.setLabel(new ResourceModel("RequiredAnswer"));
    form.add(requiredAnswer).add(new SimpleFormComponentLabel("requiredAnswerLabel", requiredAnswer));

    noAnswerCategoryModel = new Model<QuestionCategory>() {

        public QuestionCategory getObject() {
            return question.getNoAnswerQuestionCategory();
        }

        @Override
        public void setObject(QuestionCategory questionCategory) {
            super.setObject(questionCategory);
            question.setNoAnswerCategory(questionCategory == null ? null : questionCategory.getCategory());
        }
    };
    IChoiceRenderer<QuestionCategory> choicesRenderer = new ChoiceRenderer<QuestionCategory>("category.name");
    noAnswerCategoryDropDown = new DropDownChoice<QuestionCategory>("noAnswerCategoryDropDown",
            noAnswerCategoryModel, choices, choicesRenderer);
    noAnswerCategoryDropDown.setNullValid(true);
    noAnswerCategoryDropDown.setLabel(new ResourceModel("NoAnswer"));
    noAnswerCategoryDropDown.add(new OnChangeAjaxBehavior() {

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            // Do nothing, it is only to ajax update model when we change value in dropdown
        }

    });

    form.add(noAnswerCategoryDropDown)
            .add(new SimpleFormComponentLabel("noAnswerLabel", noAnswerCategoryDropDown));

    form.add(new HelpTooltipPanel("noAnswerHelp", new ResourceModel("NoAnswer.Tooltip")));

    minCountTextField = new TextField<Integer>("minCountTextField",
            new PropertyModel<Integer>(question, "minCount"));
    previousOrFirstMinValue = minCountTextField.getModelObject();
    minCountTextField.setLabel(new ResourceModel("Min"));
    minCountTextField.add(new OnChangeAjaxBehavior() {

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            // Do nothing, it is only to ajax update model when we change value
        }
    });
    SimpleFormComponentLabel minCountLabelComponent = new SimpleFormComponentLabel("minCountLabel",
            minCountTextField);

    maxCountTextField = new TextField<Integer>("maxCountTextField",
            new PropertyModel<Integer>(question, "maxCount"));
    maxCountTextField.setLabel(new ResourceModel("Max"));
    SimpleFormComponentLabel maxCountLabelComponent = new SimpleFormComponentLabel("maxCountLabel",
            maxCountTextField);

    form.add(minCountTextField, maxCountTextField, minCountLabelComponent, maxCountLabelComponent);
    form.add(new HelpTooltipPanel("minHelp", new ResourceModel("Min.Tooltip")));
    form.add(new HelpTooltipPanel("maxHelp", new ResourceModel("Max.Tooltip")));

    requiredAnswer.add(new OnChangeAjaxBehavior() {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            clickRequired(target);
        }
    });

    form.add(new IFormValidator() {

        @Override
        public void validate(@SuppressWarnings("hiding") Form<?> form) {
            Integer min = minCountTextField.getConvertedInput();
            Integer max = maxCountTextField.getConvertedInput();
            if (min != null && max != null && min > max) {
                form.error(new StringResourceModel("MinInfMax", MultipleChoiceCategoryHeaderPanel.this, null)
                        .getObject());
            }
            if (BooleanUtils.isTrue(requiredAnswer.getModelObject()) && min != null && min <= 0) {
                form.error(new StringResourceModel("MinMustBeMoreZero", MultipleChoiceCategoryHeaderPanel.this,
                        null).getObject());
            }
        }

        @Override
        public FormComponent<?>[] getDependentFormComponents() {
            return null;
        }
    });
    add(form);
}

From source file:org.projectforge.plugins.crm.ContactPageSupport.java

License:Open Source License

/**
 * Constructor for edit pages.//from w  w  w . ja  v  a2s .c o m
 * 
 * @param form
 * @param gridBuilder
 * @param contactDao
 * @param personalContactDao
 * @param contact
 */
@SuppressWarnings("serial")
public ContactPageSupport(final Form<ContactDO> form, final AbstractGridBuilder<?> gridBuilder,
        final ContactDao contactDao, final PersonalContactDao personalContactDao, final ContactDO contact) {
    this.form = form;
    this.gridBuilder = gridBuilder;
    this.contactDao = contactDao;
    this.contact = contact;
    if (gridBuilder instanceof MobileGridBuilder) {
        mobile = true;
    }
    personalContact = null;
    if (isNew() == false) {
        personalContact = personalContactDao.getByContactId(contact.getId());
    }
    if (personalContact == null) {
        personalContact = new PersonalContactDO();
    }
    form.add(new IFormValidator() {
        @Override
        public FormComponent<?>[] getDependentFormComponents() {
            return dependentFormComponents;
        }

        @Override
        public void validate(final Form<?> form) {
            final TextField<String> name = dependentFormComponents[0];
            final TextField<String> firstName = dependentFormComponents[1];
            final TextField<String> organization = dependentFormComponents[2];
            if (StringUtils.isBlank(name.getValue()) == true
                    && StringUtils.isBlank(firstName.getValue()) == true
                    && StringUtils.isBlank(organization.getValue()) == true) {
                form.error(getString("address.form.error.toFewFields"));
            }
        }
    });
}

From source file:org.projectforge.plugins.ffp.wicket.FFPEventEditForm.java

License:Open Source License

@Override
protected void init() {
    super.init();
    currentUser = ThreadLocalUserContext.getUser();
    if (data.getOrganizer() == null) {
        if (currentUser == null) {
            error(I18nHelper.getLocalizedMessage("plugins.ffp.validate.noUser"));
            return;
        } else {//from   w w w.  j a v a 2 s  . co  m
            data.setOrganizer(currentUser);
        }
    }

    if (isNew()) {
        if (currentUser != null) {
            this.accountingList.add(getNewFfpAccountingDO(currentUser));
        }
    }

    IFormValidator formValidator = new IFormValidator() {

        // Components for form validation.
        private final FormComponent<?>[] dependentFormComponents = new FormComponent[1];

        @Override
        public FormComponent<?>[] getDependentFormComponents() {
            return dependentFormComponents;
        }

        @Override
        public void validate(Form<?> form) {
            Select2MultiChoice<PFUserDO> attendeesSelect2 = (Select2MultiChoice<PFUserDO>) dependentFormComponents[0];
            Collection<PFUserDO> attendeeList = attendeesSelect2.getConvertedInput();
            if (attendeeList != null && attendeeList.size() < 2) {
                error(I18nHelper.getLocalizedMessage("plugins.ffp.validate.minAttendees"));
            }
        }
    };

    add(formValidator);

    gridBuilder.newSplitPanel(GridSize.COL50, true).newSubSplitPanel(GridSize.COL100);
    {
        // Organizer
        final FieldsetPanel fs = gridBuilder.newFieldset(FFPEventDO.class, "organizer");
        fs.add(new DivTextPanel(fs.newChildId(), data.getOrganizer().getFullname()));
    }
    {
        // Event date
        final FieldsetPanel fs = gridBuilder.newFieldset(FFPEventDO.class, "eventDate");
        DatePanel eventDate = new DatePanel(fs.newChildId(), new PropertyModel<>(data, "eventDate"),
                DatePanelSettings.get().withTargetType(java.sql.Date.class), true);
        eventDate.setRequired(true);
        eventDate.setMarkupId("eventDate").setOutputMarkupId(true);
        eventDate.setEnabled(getData().getFinished() == false);
        fs.add(eventDate);
    }
    {
        // Division
        final FieldsetPanel fs = gridBuilder.newFieldset(FFPEventDO.class, "title");
        MaxLengthTextField titel = new MaxLengthTextField(InputPanel.WICKET_ID,
                new PropertyModel<>(data, "title"));
        titel.setRequired(true);
        titel.setMarkupId("eventTitel").setOutputMarkupId(true);
        titel.setEnabled(getData().getFinished() == false);
        fs.add(titel);
    }
    {
        // ATTENDEES
        final FieldsetPanel fieldSet = gridBuilder.newFieldset(getString("plugins.ffp.attendees"));
        assignAttendeesListHelper = new MultiChoiceListHelper<PFUserDO>()
                .setComparator(new Comparator<PFUserDO>() {

                    @Override
                    public int compare(PFUserDO o1, PFUserDO o2) {
                        return o1.getPk().compareTo(o2.getPk());
                    }

                }).setFullList(userDao.getList(new PFUserFilter().setDeactivatedUser(false)));

        if (this.data.getAttendeeList() != null && this.data.getAttendeeList().size() > 0) {
            for (final PFUserDO attendee : this.data.getAttendeeList()) {
                assignAttendeesListHelper.addOriginalAssignedItem(attendee).assignItem(attendee);
            }
        }
        if (this.accountingList != null && this.accountingList.size() > 0) {
            for (final FFPAccountingDO accounting : this.accountingList) {
                assignAttendeesListHelper.assignItem(accounting.getAttendee());
            }
        }

        final Select2MultiChoice<PFUserDO> attendees = new Select2MultiChoice<PFUserDO>(
                fieldSet.getSelect2MultiChoiceId(),
                new PropertyModel<Collection<PFUserDO>>(this.assignAttendeesListHelper, "assignedItems"),
                new UsersProvider(userDao));
        attendees.setRequired(true).setMarkupId("attendees").setOutputMarkupId(true);
        attendees.add(new AjaxEventBehavior(OnChangeAjaxBehavior.EVENT_NAME) {
            protected final FormComponent<?> getFormComponent() {
                return (FormComponent<?>) getComponent();
            }

            @Override
            protected void onEvent(AjaxRequestTarget target) {
                final FormComponent<?> formComponent = getFormComponent();
                try {
                    formComponent.inputChanged();
                    formComponent.validate();
                    if (formComponent.hasErrorMessage()) {
                        formComponent.invalid();
                        accountingList.clear();
                        assignAttendeesListHelper.getAssignedItems().clear();
                    } else {
                        formComponent.valid();
                        formComponent.updateModel();
                    }
                    dataTable = createDataTable(createColumns(), "attendee.fullname", SortOrder.ASCENDING,
                            getData());
                    tablePanel.addOrReplace(dataTable);
                    target.add(dataTable);
                } catch (RuntimeException e) {
                    throw e;
                }
            }
        });
        attendees.setEnabled(getData().getFinished() == false);
        formValidator.getDependentFormComponents()[0] = attendees;
        fieldSet.add(attendees);
    }

    //Transactions
    createDataTable(gridBuilder);

    {
        Button finishButton = new Button("button", new Model<String>("plugins.ffp.finishEvent")) {
            @Override
            public final void onSubmit() {
                try {
                    getData().setFinished(true);
                    parentPage.createOrUpdate();
                } catch (final UserException ex) {
                    error(parentPage.translateParams(ex));
                }
            }
        };
        finishButton.setMarkupId("finishEvent").setOutputMarkupId(true);
        finishButtonPanel = new SingleButtonPanel(actionButtons.newChildId(), finishButton,
                getString("plugins.ffp.finishEvent"), SingleButtonPanel.SUCCESS);
        finishButtonPanel.setVisible(false);
        actionButtons.add(finishButtonPanel);
    }
}

From source file:org.projectforge.plugins.skillmatrix.SkillEditForm.java

License:Open Source License

@Override
@SuppressWarnings("serial")
public void init() {
    super.init();

    add(new IFormValidator() {

        @Override//from   w  w  w.java 2  s.co m
        public FormComponent<?>[] getDependentFormComponents() {
            return dependentFormComponents;
        }

        @Override
        public void validate(final Form<?> form) {
            final RequiredMaxLengthTextField skillTextField = (RequiredMaxLengthTextField) dependentFormComponents[0];
            final SkillTree skillTree = skillDao.getSkillTree();
            if (skillTree.getSkill(skillTextField.getConvertedInput()) != null) {
                error(getString("plugins.skillmatrix.error.skillExistsAlready"));
            }
        }
    });

    gridBuilder.newGridPanel();

    {
        // Title of skill
        final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skill.title"));
        final RequiredMaxLengthTextField skillTextField = new RequiredMaxLengthTextField(fs.getTextFieldId(),
                new PropertyModel<String>(data, "title"));
        fs.add(skillTextField);
        dependentFormComponents[0] = skillTextField;
    }
    {
        // Parent, look at UserSelectPanel for fine tuning
        final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skill.parent"));
        final PFAutoCompleteTextField<SkillDO> autoCompleteTextField = new PFAutoCompleteTextField<SkillDO>(
                fs.getTextFieldId(), new PropertyModel<SkillDO>(data, "parent")) {
            @Override
            protected List<SkillDO> getChoices(final String input) {
                final BaseSearchFilter filter = new BaseSearchFilter();
                filter.setSearchFields("title");
                filter.setSearchString(input);
                final List<SkillDO> list = skillDao.getList(filter);
                return list;
            }

            @Override
            protected String formatLabel(final SkillDO skill) {
                if (skill == null) {
                    return "";
                }
                return skill.getTitle();
            }

            @Override
            protected String formatValue(final SkillDO skill) {
                if (skill == null) {
                    return "";
                }
                return skill.getTitle();
            }

            @SuppressWarnings({ "unchecked", "rawtypes" })
            @Override
            public <C> IConverter<C> getConverter(final Class<C> type) {
                return new IConverter() {
                    @Override
                    public Object convertToObject(final String value, final Locale locale) {
                        if (StringUtils.isEmpty(value) == true) {
                            getModel().setObject(null);
                            return null;
                        }
                        final SkillDO skill = skillDao.getSkillTree().getSkill(value);
                        if (skill == null) {
                            error(getString("plugins.skillmatrix.error.skillNotFound"));
                        }
                        getModel().setObject(skill);
                        return skill;
                    }

                    @Override
                    public String convertToString(final Object value, final Locale locale) {
                        if (value == null) {
                            return "";
                        }
                        final SkillDO skill = (SkillDO) value;
                        return skill.getTitle();
                    }
                };
            }

        };
        autoCompleteTextField.withLabelValue(true).withMatchContains(true).withMinChars(2).withAutoSubmit(false)
                .withWidth(400);
        fs.add(autoCompleteTextField);
    }

    {
        // Descritption
        final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skill.description"));
        fs.add(new MaxLengthTextArea(fs.getTextAreaId(), new PropertyModel<String>(data, "description")))
                .setAutogrow();
    }
    {
        // Comment
        final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skill.comment"));
        fs.add(new MaxLengthTextArea(fs.getTextAreaId(), new PropertyModel<String>(data, "comment")))
                .setAutogrow();
    }
    {
        // Rateable
        final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skill.options"));
        final DivPanel checkBoxPanel = fs.addNewCheckBoxDiv();
        checkBoxPanel.add(new CheckBoxPanel(checkBoxPanel.newChildId(),
                new PropertyModel<Boolean>(data, "rateable"), getString("plugins.skillmatrix.skill.rateable")));
    }
}

From source file:org.projectforge.plugins.skillmatrix.SkillRatingEditForm.java

License:Open Source License

@SuppressWarnings("serial")
@Override/*from  w ww.j a v a  2s  .c  o m*/
protected void init() {
    super.init();

    add(new IFormValidator() {

        @Override
        public FormComponent<?>[] getDependentFormComponents() {
            return dependentFormComponents;
        }

        @SuppressWarnings("unchecked")
        @Override
        public void validate(final Form<?> form) {
            final PFAutoCompleteTextField<SkillDO> skillTextField = (PFAutoCompleteTextField<SkillDO>) dependentFormComponents[0];
            final DropDownChoice<SkillRating> skillRatingDropDown = (DropDownChoice<SkillRating>) dependentFormComponents[1];
            if (skillTextField.getConvertedInput().isRateable() == true
                    && skillRatingDropDown.getConvertedInput() == null) {
                error(getString("plugins.skillmatrix.error.rateableSkillWithNullRating"));
            } else if (skillTextField.getConvertedInput().isRateable() == false
                    && skillRatingDropDown.getConvertedInput() != null) {
                error(getString("plugins.skillmatrix.error.unrateableSkillWithRating"));
            }

            final SkillRatingFilter filter = new SkillRatingFilter();
            filter.setSearchFields("user.username");
            filter.setSearchString(data.getUser().getUsername());
            final List<SkillRatingDO> list = skillRatingDao.getList(filter);
            for (final SkillRatingDO skillRatingDO : list) {
                final boolean isDeleted = skillRatingDO.getSkill().isDeleted();
                final boolean sameSkill = skillRatingDO.getSkill().getTitle() == skillTextField
                        .getConvertedInput().getTitle();
                final boolean sameSkillRating = skillRatingDO.getCreated().equals(data.getCreated());
                if (isDeleted == false && sameSkill && sameSkillRating == false) {
                    error(getString("plugins.skillmatrix.error.skillRatingExistsAlready"));
                    break;
                }
            }
        }

    });

    gridBuilder.newGridPanel();
    {
        // User
        final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skillrating.user"))
                .supressLabelForWarning();
        final DivTextPanel username = new DivTextPanel(fs.newChildId(), data.getUser().getUsername());
        username.setStrong();
        fs.add(username);
    }
    {
        // Skill, look at UserSelectPanel for fine tuning ( getConverter() )
        final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skillrating.skill"));
        final PFAutoCompleteTextField<SkillDO> autoCompleteTextField = new PFAutoCompleteTextField<SkillDO>(
                fs.getTextFieldId(), new PropertyModel<SkillDO>(data, "skill")) {
            @Override
            protected List<SkillDO> getChoices(final String input) {
                final BaseSearchFilter filter = new BaseSearchFilter();
                filter.setSearchFields("title");
                filter.setSearchString(input);
                final List<SkillDO> list = skillDao.getList(filter);
                return list;
            }

            @Override
            protected String formatLabel(final SkillDO skill) {
                if (skill == null) {
                    return "";
                }
                return skill.getTitle();
            }

            @Override
            protected String formatValue(final SkillDO skill) {
                if (skill == null) {
                    return "";
                }
                return skill.getTitle();
            }

            @SuppressWarnings({ "unchecked", "rawtypes" })
            @Override
            public <C> IConverter<C> getConverter(final Class<C> type) {
                return new IConverter() {
                    @Override
                    public Object convertToObject(final String value, final Locale locale) {
                        if (StringUtils.isEmpty(value) == true) {
                            getModel().setObject(null);
                            return null;
                        }
                        final SkillDO skill = skillDao.getSkillTree().getSkill(value);
                        if (skill == null) {
                            error(getString("plugins.skillmatrix.error.skillNotFound"));
                        }
                        getModel().setObject(skill);
                        final AjaxRequestTarget target = RequestCycle.get().find(AjaxRequestTarget.class);
                        if (target != null) {
                            target.add(SkillRatingEditForm.this.fs.getFieldset());
                        }
                        return skill;
                    }

                    @Override
                    public String convertToString(final Object value, final Locale locale) {
                        if (value == null) {
                            return "";
                        }
                        final SkillDO skill = (SkillDO) value;
                        return skill.getTitle();
                    }
                };
            }

        };
        autoCompleteTextField.withLabelValue(true).withMatchContains(true).withMinChars(2).withAutoSubmit(false)
                .withWidth(400).setRequired(true);
        autoCompleteTextField.add(new AjaxFormComponentUpdatingBehavior("onChange") {

            @Override
            protected void onUpdate(final AjaxRequestTarget target) {
                // AjaxRequestTarget needs this.
            }
        });
        fs.add(autoCompleteTextField);
        dependentFormComponents[0] = autoCompleteTextField;
    }
    {
        // Skill rating
        fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skillrating.rating"));
        fs.getFieldset().setOutputMarkupId(true);
        final LabelValueChoiceRenderer<SkillRating> ratingChoiceRenderer = new LabelValueChoiceRenderer<SkillRating>(
                this, SkillRating.values());
        final DropDownChoicePanel<SkillRating> skillChoice = new DropDownChoicePanel<SkillRating>(
                fs.newChildId(), new PropertyModel<SkillRating>(data, "skillRating"),
                ratingChoiceRenderer.getValues(), ratingChoiceRenderer) {
            @Override
            public boolean isVisible() {
                if (data == null || data.getSkill() == null || !data.getSkill().isRateable()) {
                    return false;
                } else {
                    return true;
                }
            }
        };
        fs.add(skillChoice);
        dependentFormComponents[1] = skillChoice.getDropDownChoice();
    }
    {
        // Since year
        final FieldsetPanel fs = gridBuilder
                .newFieldset(getString("plugins.skillmatrix.skillrating.sinceyear"));
        fs.add(new MinMaxNumberField<Integer>(fs.getTextFieldId(),
                new PropertyModel<Integer>(data, "sinceYear"), 0, 9000));
    }
    {
        // Certificates
        final FieldsetPanel fs = gridBuilder
                .newFieldset(getString("plugins.skillmatrix.skillrating.certificates"));
        fs.add(new MaxLengthTextField(fs.getTextFieldId(), new PropertyModel<String>(data, "certificates")));
    }
    {
        // Training courses
        final FieldsetPanel fs = gridBuilder
                .newFieldset(getString("plugins.skillmatrix.skillrating.trainingcourses"));
        fs.add(new MaxLengthTextField(fs.getTextFieldId(), new PropertyModel<String>(data, "trainingCourses")));
    }
    {
        // Description
        final FieldsetPanel fs = gridBuilder
                .newFieldset(getString("plugins.skillmatrix.skillrating.description"));
        fs.add(new MaxLengthTextArea(fs.getTextAreaId(), new PropertyModel<String>(data, "description")))
                .setAutogrow();
    }
    {
        // Comment
        final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skillrating.comment"));
        fs.add(new MaxLengthTextArea(fs.getTextAreaId(), new PropertyModel<String>(data, "comment")))
                .setAutogrow();
    }
}