List of usage examples for org.apache.wicket.markup.html.form.validation IFormValidator IFormValidator
IFormValidator
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(); } }